Doğru algoritmayı seçme stratejileri
Doğru modeli seçmek, bir şef için doğru bıçağı seçmek gibidir: en keskin bıçak her zaman en iyisi değildir, göreve uygun olanı seçmelisiniz. Bu derste model seçim kriterlerini, bias-variance dengesini ve deneylerini sistematik takip etmeyi öğreneceksiniz.
Her model her probleme uymaz. Karar verirken şunları değerlendirin:…
**Bias (yanlılık)**: Modelin varsayımlarından kaynaklanan sistematik hata. Çok basit model…
Underfitting (Yüksek Bias)
Overfitting (Yüksek Variance)
Cross-validation sonuçlarını karşılaştırırken **şans faktörünü** elemek için istatistiksel…
t = (μ_A - μ_B) / (s_diff / √n)Paired t-test istatistiği: μ_A ve μ_B iki modelin ortalama skorları, s_diff fark skorlarının standart sapması, n fold sayısı. |t| > kritik değer ise fark anlamlıdır.
🧪Deney Defteri Analojisi
MLflow ve Weights & Biases, bir bilim insanının laboratuvar defteri gibidir. Her deneyde hangi parametreleri kullandığınızı, hangi sonuçları aldığınızı ve hangi model dosyalarını ürettiğinizi kaydeder. Altı ay sonra 'en iyi sonucu veren o konfigürasyon neydi?' diye sorduğunuzda, defteriniz size cevabı verir.
MLflow üç temel kavram üzerine kurulu:…
MLflow ile basit deney takibi
| 1 | import mlflow |
| 2 | from sklearn.ensemble import RandomForestClassifier |
| 3 | from sklearn.model_selection import cross_val_score |
| 4 | |
| 5 | # Deney başlat |
| 6 | mlflow.set_experiment("model-karsilastirma") |
| 7 | |
| 8 | with mlflow.start_run(run_name="rf_baseline"): |
| 9 | # Parametreleri kaydet |
| 10 | n_estimators = 100 |
| 11 | max_depth = 10 |
| 12 | mlflow.log_param("n_estimators", n_estimators) |
| 13 | mlflow.log_param("max_depth", max_depth) |
| 14 | |
| 15 | # Model eğit ve değerlendir |
| 16 | rf = RandomForestClassifier(n_estimators=n_estimators, max_depth=max_depth) |
| 17 | scores = cross_val_score(rf, X, y, cv=5, scoring="f1_macro") |
| 18 | |
| 19 | # Metrikleri kaydet |
| 20 | mlflow.log_metric("f1_mean", scores.mean()) |
| 21 | mlflow.log_metric("f1_std", scores.std()) |
| 22 | |
| 23 | # Modeli artifact olarak kaydet |
| 24 | rf.fit(X, y) |
| 25 | mlflow.sklearn.log_model(rf, "model") |
💡MLflow UI'ı `mlflow ui` komutuyla başlatın. Tarayıcıda tüm deneylerinizi tablo ve grafik olarak karşılaştırabilirsiniz.
Production'da model güncellemesi risklidir. **Champion/Challenger** yaklaşımı bu riski aza…
Scipy ile model karşılaştırma testi
| 1 | from scipy import stats |
| 2 | import numpy as np |
| 3 | |
| 4 | # 5-fold CV sonuçları (aynı fold'lar, farklı modeller) |
| 5 | model_a_scores = np.array([0.85, 0.87, 0.84, 0.86, 0.88]) |
| 6 | model_b_scores = np.array([0.88, 0.90, 0.87, 0.89, 0.91]) |
| 7 | |
| 8 | # Paired t-test |
| 9 | t_stat, p_value = stats.ttest_rel(model_a_scores, model_b_scores) |
| 10 | print(f"t-statistic: {t_stat:.3f}, p-value: {p_value:.4f}") |
| 11 | |
| 12 | # Non-parametrik alternatif |
| 13 | w_stat, w_pvalue = stats.wilcoxon(model_a_scores, model_b_scores) |
| 14 | print(f"Wilcoxon p-value: {w_pvalue:.4f}") |
| 15 | |
| 16 | # Karar |
| 17 | alpha = 0.05 |
| 18 | if p_value < alpha: |
| 19 | print("Model B istatistiksel olarak anlamlı şekilde daha iyi!") |
⚠️p < 0.05 olması modelin production'a alınması için yeterli değildir. Pratik anlamlılık (effect size), çıkarım süresi ve bakım maliyeti de değerlendirilmelidir.
ℹ️Weights & Biases (W&B), MLflow'a benzer işlevler sunar ancak bulut tabanlı dashboard'u ve takım işbirliği özellikleriyle öne çıkar. Özellikle derin öğrenme projelerinde tercih edilir.
✦ Quiz
Bir model eğitim verisinde %98, test verisinde %65 doğruluk gösteriyorsa bu durum neyi işaret eder?
✦ Quiz
İki modeli 5-fold CV sonuçlarıyla karşılaştırırken hangi test daha uygundur?
✦ Quiz
MLflow'da model dosyası hangi kavram altında saklanır?
Bağlantılı Konular