Nilai Hyperparameter

Penyetelan Hyperparameter di Python

Alex Scriven

Data Scientist

Nilai Hyperparameter

 

Beberapa hyperparameter lebih penting untuk dituning lebih dulu.

Lalu nilai apa yang dicoba untuk hyperparameter?

  • Spesifik per algoritme & hyperparameter
  • Ada panduan praktik terbaik & kiat umum

Mari lihat beberapa kiat utama!

Penyetelan Hyperparameter di Python

Pilihan Hyperparameter yang Bertentangan

Waspadai pilihan hyperparameter yang saling bertentangan.

  • LogisticRegression() memiliki opsi solver & penalty yang dapat bertentangan.
The 'newton-cg', 'sag' and 'lbfgs' solvers support only l2 penalties.

Beberapa tidak eksplisit tetapi akan diabaikan (dari ElasticNet dengan hyperparameter normalize):

This parameter is ignored when fit_intercept is set to False

Pastikan merujuk dokumentasi Scikit-Learn!

Penyetelan Hyperparameter di Python

Nilai Hyperparameter yang Tidak Masuk Akal

 

Waspadai penetapan nilai yang “konyol” untuk berbagai algoritme:

  • Random forest dengan jumlah pohon rendah
    • Apakah masih disebut “hutan” jika hanya 2 pohon?
  • 1 Tetangga pada algoritme KNN
    • Merata-ratakan “suara” satu orang tidak terdengar andal!
  • Menaikkan hyperparameter dengan sangat kecil

Meluangkan waktu untuk mendokumentasikan nilai yang masuk akal itu bermanfaat.

Penyetelan Hyperparameter di Python

Mengotomatisasi Pemilihan Hyperparameter

 

Pada latihan sebelumnya, kita membangun model seperti:

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

Ini cukup tidak efisien. Bisakah kita lebih baik?

Penyetelan Hyperparameter di Python

Mengotomatisasi Tuning Hyperparameter

Coba for loop untuk mengiterasi opsi:

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)
Penyetelan Hyperparameter di Python

Mengotomatisasi Tuning Hyperparameter

Kita dapat menyimpan hasilnya dalam DataFrame untuk dilihat:

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

Akurasi untuk tabel jumlah tetangga

Penyetelan Hyperparameter di Python

Kurva Pembelajaran

Mari buat grafik kurva pembelajaran

Kali ini kita uji jauh lebih banyak nilai

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})
Penyetelan Hyperparameter di Python

Kurva Pembelajaran

Kita dapat memplot DataFrame yang lebih besar:

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

# Tambahkan label dan judul plt.gca().set(xlabel='n_neighbors', ylabel='Accuracy', title='Accuracy for different n_neighbors') plt.show()
Penyetelan Hyperparameter di Python

Kurva Pembelajaran

Grafik kita:

akurasi vs jumlah tetangga kurva pembelajaran untuk knn

Penyetelan Hyperparameter di Python

Trik membuat deret nilai

Fungsi range di Python tidak mendukung langkah desimal.

Trik praktis: gunakan NumPy np.linspace(start, end, num)

  • Membuat sejumlah nilai (num) yang merata dalam interval (start, end) yang Anda tentukan.
print(np.linspace(1,2,5))
[1.   1.25 1.5  1.75 2.  ]
Penyetelan Hyperparameter di Python

Ayo berlatih!

Penyetelan Hyperparameter di Python

Preparing Video For Download...