Hiperparametre ayarlama

scikit-learn ile Supervised Learning

George Boorman

Core Curriculum Manager

Hiperparametre ayarlama

  • Ridge/lasso regresyonu: alpha seçimi

  • KNN: n_neighbors seçimi

  • Hiperparametreler: Modeli eğitmeden önce belirlediğimiz parametreler

    • Örn. alpha ve n_neighbors
scikit-learn ile Supervised Learning

Doğru hiperparametreleri seçme

  1. Birçok farklı hiperparametre değeri deneyin

  2. Hepsini ayrı ayrı eğitin

  3. Performanslarını karşılaştırın

  4. En iyilerini seçin

 

  • Buna hiperparametre ayarlama denir

  • Test kümesine aşırı uyumu önlemek için çapraz doğrulama şarttır

  • Veriyi bölebilir ve çapraz doğrulamayı eğitim kümesi üzerinde yapabiliriz

  • Test kümesini son değerlendirme için saklarız

scikit-learn ile Supervised Learning

Izgara arama çapraz doğrulama

2'den 11'e, 3'er artışlarla olası komşu sayıları ve öklidyen/şehir bloğu metrik seçenekleri ızgarası

scikit-learn ile Supervised Learning

Izgara arama çapraz doğrulama

ızgaradaki her hiperparametre kombinasyonu için k-katlı çapraz doğrulama puanları

scikit-learn ile Supervised Learning

Izgara arama çapraz doğrulama

5 komşu ve öklidyen metrik vurgulu, puan 0.8748

scikit-learn ile Supervised Learning

scikit-learn'de GridSearchCV

from sklearn.model_selection import GridSearchCV

kf = KFold(n_splits=5, shuffle=True, random_state=42)
param_grid = {"alpha": np.arange(0.0001, 1, 10), "solver": ["sag", "lsqr"]}
ridge = Ridge()
ridge_cv = GridSearchCV(ridge, param_grid, cv=kf)
ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'alpha': 0.0001, 'solver': 'sag'}
0.7529912278705785
scikit-learn ile Supervised Learning

Sınırlamalar ve alternatif bir yaklaşım

  • 3 katlı çapraz doğrulama, 1 hiperparametre, 10 toplam değer = 30 uyum
  • 10 katlı çapraz doğrulama, 3 hiperparametre, 30 toplam değer = 900 uyum
scikit-learn ile Supervised Learning

RandomizedSearchCV

from sklearn.model_selection import RandomizedSearchCV

kf = KFold(n_splits=5, shuffle=True, random_state=42) param_grid = {'alpha': np.arange(0.0001, 1, 10), "solver": ['sag', 'lsqr']} ridge = Ridge()
ridge_cv = RandomizedSearchCV(ridge, param_grid, cv=kf, n_iter=2) ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'solver': 'sag', 'alpha': 0.0001}
0.7529912278705785
scikit-learn ile Supervised Learning

Test kümesinde değerlendirme

test_score = ridge_cv.score(X_test, y_test)

print(test_score)
0.7564731534089224
scikit-learn ile Supervised Learning

Hadi pratik yapalım!

scikit-learn ile Supervised Learning

Preparing Video For Download...