Hiperparametre Değerleri

Python'da Hiperparametre Ayarlama

Alex Scriven

Data Scientist

Hiperparametre Değerleri

 

Bazı hiperparametreler ayarlamaya başlamak için diğerlerinden daha önemlidir.

Peki hiperparametreler için hangi değerler denenmeli?

  • Her algoritma ve hiperparametreye özgüdür
  • Bazı en iyi uygulama yönergeleri ve ipuçları vardır

Bazı önemli ipuçlarına bakalım!

Python'da Hiperparametre Ayarlama

Çakışan Hiperparametre Seçimleri

Çakışan hiperparametre seçimlerine dikkat edin.

  • LogisticRegression() içinde çatışan solver ve penalty seçenekleri.
The 'newton-cg', 'sag' and 'lbfgs' solvers support only l2 penalties.

Bazıları açık değildir ve sadece 'yok sayar' (normalize hiperparametresiyle ElasticNet):

This parameter is ignored when fit_intercept is set to False

Lütfen Scikit-Learn belgelerine başvurun!

Python'da Hiperparametre Ayarlama

Mantıksız Hiperparametre Değerleri

 

Farklı algoritmalar için 'mantıksız' değerler belirlememeye dikkat edin:

  • Düşük ağaç sayılı rastgele orman
    • Sadece 2 ağaçla buna 'orman' denir mi?
  • KNN'de 1 komşu
    • Tek kişinin 'oyunu'na güvenmek sağlam değildir.
  • Bir hiperparametreyi çok küçük bir miktar artırmak

Hiperparametreler için makul değerleri belgelemek değerlidir.

Python'da Hiperparametre Ayarlama

Hiperparametre Seçimini Otomatikleştirme

 

Önceki alıştırmada modelleri şöyle kurduk:

knn_5 =  KNeighborsClassifier(n_neighbors=5)
knn_10 = KNeighborsClassifier(n_neighbors=10)
knn_20  = KNeighborsClassifier(n_neighbors=20)

Bu oldukça verimsiz. Daha iyisini yapabilir miyiz?

Python'da Hiperparametre Ayarlama

Hiperparametre Ayarlamasını Otomatikleştirme

Seçenekler arasında dönmek için bir for döngüsü deneyin:

neighbors_list = [3,5,10,20,50,75]

accuracy_list = []
for test_number in neighbors_list: model = KNeighborsClassifier(n_neighbors=test_number) predictions = model.fit(X_train, y_train).predict(X_test)
accuracy = accuracy_score(y_test, predictions) accuracy_list.append(accuracy)
Python'da Hiperparametre Ayarlama

Hiperparametre Ayarlamasını Otomatikleştirme

Sonuçları görüntülemek için bir DataFrame'de saklayabiliriz:

results_df = pd.DataFrame({'neighbors':neighbors_list, 'accuracy':accuracy_list})
print(results_df)

Komşulara göre doğruluk tablosu

Python'da Hiperparametre Ayarlama

Öğrenme Eğrileri

Bir öğrenme eğrisi grafiği oluşturalım

Bu kez çok daha fazla değer deneyeceğiz

neighbors_list = list(range(5,500, 5))

accuracy_list = [] for test_number in neighbors_list: model = KNeighborsClassifier(n_neighbors=test_number) predictions = model.fit(X_train, y_train).predict(X_test) accuracy = accuracy_score(y_test, predictions) accuracy_list.append(accuracy) results_df = pd.DataFrame({'neighbors':neighbors_list, 'accuracy':accuracy_list})
Python'da Hiperparametre Ayarlama

Öğrenme Eğrileri

Daha büyük DataFrame'i görselleştirebiliriz:

plt.plot(results_df['neighbors'], 
    results_df['accuracy'])

# Etiketleri ve başlığı ekleyin plt.gca().set(xlabel='n_neighbors', ylabel='Accuracy', title='Accuracy for different n_neighbors') plt.show()
Python'da Hiperparametre Ayarlama

Öğrenme Eğrileri

Grafiğimiz:

knn için doğruluk vs komşu sayısı öğrenme eğrisi

Python'da Hiperparametre Ayarlama

Değer üretmek için pratik bir yöntem

Python'un range fonksiyonu ondalık adımlar için çalışmaz.

Kullanışlı bir yöntem NumPy'nin np.linspace(start, end, num) fonksiyonudur

  • Belirlediğiniz aralıkta (start, end) eşit aralıklı num adet değer üretir.
print(np.linspace(1,2,5))
[1.   1.25 1.5  1.75 2.  ]
Python'da Hiperparametre Ayarlama

Hadi pratik yapalım!

Python'da Hiperparametre Ayarlama

Preparing Video For Download...