Hiperparametre optimizasyonunu nasıl yaparsınız? Grid search, random search ve Bayesian optimization'ı karşılaştırın.
Cevap
Hiperparametreler (learning rate, ağaç derinliği, regularization gücü) eğitimle öğrenilmez, dışarıdan seçilir. Seçim her zaman validation seti veya cross-validation üzerinde yapılır, test seti sadece en sonda bir kez kullanılır.
| Yöntem | Nasıl çalışır | Artı | Eksi |
|---|---|---|---|
| Grid search | Tüm kombinasyonları dener | Basit, tekrarlanabilir | Boyut arttıkça patlar |
| Random search | Dağılımlardan rastgele örnekler | Aynı bütçeyle genelde griden iyi | Önceki sonuçlardan öğrenmez |
| Bayesian (TPE, GP) | Sonuçlardan bir surrogate model kurup umut vadeden bölgeyi seçer | Pahalı modellerde çok verimli | Sıralı, paralelleştirmesi zor |
| Hyperband / ASHA | Kötü denemeleri erken durdurur | Derin öğrenmede büyük tasarruf | Erken metrik yanıltıcı olabilir |
Random search'ün gridden iyi olmasının sebebi (Bergstra & Bengio, 2012): genelde sadece birkaç hiperparametre gerçekten önemlidir. Grid bu önemli boyutta az sayıda farklı değer dener, random search ise her denemede farklı bir değer dener.
import optuna
from sklearn.model_selection import cross_val_score
import lightgbm as lgb
def objective(trial):
params = {
"learning_rate": trial.suggest_float("learning_rate", 1e-3, 0.3, log=True),
"num_leaves": trial.suggest_int("num_leaves", 16, 256, log=True),
"min_child_samples": trial.suggest_int("min_child_samples", 5, 100),
"subsample": trial.suggest_float("subsample", 0.5, 1.0),
}
return cross_val_score(lgb.LGBMClassifier(**params), X, y, cv=5,
scoring="average_precision").mean()
study = optuna.create_study(direction="maximize")
study.optimize(objective, n_trials=100)Pratik ipuçları: learning rate ve regularization gibi parametreleri log ölçeğinde arayın, aramayı önce geniş sonra dar yapın, aynı validation setinde çok fazla deneme yapınca o sete overfit edilebileceğini unutmayın.
İlgili Makine Öğrenmesi soruları
- Feature scaling nedir? Standardization ile normalization arasındaki fark nedir ve hangi modeller ölçeklendirme gerektirir?
- PCA (Principal Component Analysis) nasıl çalışır? Ne zaman kullanılır, ne zaman kullanılmamalıdır?
- NumPy kullanarak k-means algoritmasını sıfırdan yazın. k değerini nasıl seçersiniz ve algoritmanın sınırlamaları nelerdir?
- XGBoost ve LightGBM klasik gradient boosting'den hangi açılardan farklıdır? En önemli hiperparametreleri nelerdir?
- Random Forest ile Gradient Boosting arasındaki fark nedir? Bagging ve boosting'i karşılaştırın.
- Lineer regresyon ile lojistik regresyon arasındaki fark nedir? Lojistik regresyonda neden MSE yerine log-loss kullanılır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.