Grid search nedir?
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 19/112
- 5 dk
Grid search, tüm hiperparametre kombinasyonlarını deneyerek en iyi olanı bulur.
Hiperparametre araması
Bir modelin başarısı hiperparametrelerine çok bağlıdır: SVM'de C ve gamma, ağaçta max_depth. Elle denemek hem yavaş hem de sızıntıya açıktır. Sistematik arama, her ayar kombinasyonunu CV ile ölçüp en iyisini seçer.
for C in [0.1, 1, 10]:
s = cross_val_score(SVC(C=C), X, y, cv=5).mean()
print(C, round(s, 3))
# GridSearchCV bu döngüyü (ve fazlasını) tek satırda yaparArama yalnızca eğitim kümesinde yapılır; test kümesi en sonda tek bir ölçüm içindir.
Logaritmik ızgara
C, alpha, gamma, öğrenme oranı gibi parametrelerin etkisi büyüklük mertebesiyle değişir. Bu yüzden ızgara doğrusal değil logaritmik kurulur:
import numpy as np
print(np.logspace(-2, 2, 5)) # [ 0.01 0.1 1. 10. 100. ]
# kötü: [1, 2, 3, 4, 5] -> hepsi aynı mertebedeÖnce geniş bir logaritmik ızgarayla doğru bölge bulunur, sonra o bölgede daha sık bir ızgarayla ince ayar yapılır.
Uygulama Elle arama
np.logspace(-2, 2, 5) değerleriyle C'yi dene: her biri için ölçekli SVC'nin 5 katlı CV ortalamasını hesapla. En iyi C'yi ve skorunu round(..., 3) ile aynı satırda yazdır.
Başlangıç kodu
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
X, y = load_breast_cancer(return_X_y=True)
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
X, y = load_breast_cancer(return_X_y=True)
skor = {}
for C in np.logspace(-2, 2, 5):
skor[C] = cross_val_score(make_pipeline(StandardScaler(), SVC(C=C)), X, y, cv=5).mean()
en_iyi = max(skor, key=skor.get)
print(en_iyi, round(skor[en_iyi], 3))Beklenen çıktı
10.0 0.977
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Arama için hangi veri kullanılmalıdır?
- Yalnızca eğitim kümesi (içinde CV) Doğru cevap
- Test kümesi
- Tüm veri
- Doğrulama gerekmez
Açıklama: Test kümesi aramaya karışırsa son ölçüm bağımsız olmaz.
2 10⁻³ ile 10³ arasında 7 logaritmik değer üret.
C_degerleri = np.____(-3, 3, 7)
C_degerleri = np.logspace(-3, 3, 7)
Açıklama: logspace üsleri alır: 10^-3 ... 10^3.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
hiperparametre |
Önceden seçilen ayar |
logspace |
Mertebe ızgarası |
geniş ızgara |
Bölgeyi bulur |
ince ızgara |
İnce ayar |