Cara menggunakan optimizing parameters in python

Cerita Ucup untuk membantu Cinta yang seorang dokter masih berlanjut! Bagi yang belum sempat baca cerita mereka bisa klik disini karena cerita ini sangat terkait dengan cerita sebelumnya. Walau sudah mendapatkan performa model sebesar 89.2%, Ucup masih belum yakin dan puas dengan model yang ia buat karena ini menyangkut diagnosis terhadap kesehatan seseorang. Maka dari itu Ucup melakukan Tuning Hyperparameters pada Logistic Regression model yang ia buat agar model menjadi lebih akurat untuk membantu diagnosis pasien dari Cinta.

“Hyperparameter tuning is choosing a set of optimal hyperparameters for a learning algorithm” -Wikipedia

Lalu apa perbedaan dari Hyperparameters dan Parameters ? Parameters itu nilainya bisa didapatkan secara langsung saat proses training model sedangkan Hyperparameters itu tidak bisa didapatkan secara langsung pada proses training. Hyperparameters nilainya fix sebelum proses training model. Contoh dari Hyperparameters adalah Penalty pada Logistic Regression.

Salah satu cara untuk menentukan kombinasi Hyperparameters adalah menggunakan Grid Search. Metrices pengukuran performa dari Grid Search adalah Mean Cross Validation (CV). Cara kerja dari Grid Search itu mengkombinasikan nilai yang kita masukan pada Hyperparameters. Contohnya adalah ketika kita ingin mencari kombinasi dari Hyperparameters A = [1,2] dan B=[3,4] maka Grid Search akan mencari seluruh kombinasi dari A dan B yaitu [1,3],[1,4],[2,3],[2,4] dan memilih kombinasi terbaik berdasarkan nilai dari CV Score yang paling tinggi.

Ucup akan menggunakan 2 Hyperparameters Logistic Regression yang akan di tuning yaitu Penalty dan C. Penjelasan lengkap dari Hyperparamaters Penalty dan C serta Hyperparameters lain dapat dilihat disini.

Untuk mengikuti cerita ini, setidaknya kalian harus tau terkait:
1. Dasar pemrograman dengan Python.
2. Library Pandas dan Numpy untuk data analysis tools.
3. Library Matplotlib dan Seaborn untuk visualisasi data.
4. Library Scikit-Learn untuk Machine Learning.
5. Jupyter Notebook.

Tahapan dalam pengerjaan Tuning Hyperparameters Logistic Regression:
1. Check Performa sebelum Tuning.
2. Check Performa setelah Tuning.

Notes:
- Yang ingin download code dan dataset yang saya gunakan bisa ke Github saya.
- Seluruh pengerjaan dilakukan menggunakan Jupyter Notebook.
- Saya hanya menggunakan 2 Hyperparameters jadi kalian masih bisa explore lebih jauh lagi menggunakan Hyperparameters yang lain.

1 Check performa model sebelum di Tuning agar tahu tentang perbedaan sebelum dan sesudah di Tuning.

Classification Report Sebelum Tuning

AUC Score Sebelum Tuning

Prediksi Sebelum Tuning
  • Dapat dilihat bahwa sebelum tuning nilai dari precision, recall, dan f1 kisaran di angka 90%.
  • Untuk nilai AUC Score sebesar 89.2%.
  • Prediksi dari model adalah 1 yaitu No Heart Disease.

2 Melakukan Tuning Hyperparameters Logistic Regression Menggunakan Grid Search.

#List Hyperparameters yang akan diuji
penalty = ['l1', 'l2']
C = np.logspace(-4,4,20)
#Menjadikan ke dalam bentuk dictionary
hyperparameters = dict(penalty=penalty, C=C)
#Membuat Object Logistic Regression
logreg = LogisticRegression()
#Memasukan ke Grid Search
#CV itu Cross Validation
#Menggunakan 10-Fold CV
clf = GridSearchCV(logreg, hyperparameters, cv=10)
#Fitting Model
best_model = clf.fit(x,y)
#Nilai hyperparameters terbaik
print('Best Penalty:', best_model.best_estimator_.get_params()['penalty'])
print('Best C:', best_model.best_estimator_.get_params()['C'])
#Prediksi menggunakan model baru
y_pred = best_model.predict(x_test)
#Check performa dari model
print(classification_report(y_test, y_pred))
roc_auc_score(y_test, y_pred)

Nilai Hyperparameters Terbaik

Classification Report Setelah Tuning

AUC Score Setelah Tuning

Hasil Prediksi Setelah Tuning
  • Dari Grid Search didapatkan bahwa nilai Hyperparameters terbaik untuk Penalty adalah ‘l2’ dan untk C adalah sebesar 0.0885.
  • Dari Classification Report dapat dilihat terjadi peningkatan untuk precision, recall, f-1 dan accuracy.
  • Dari nilai AUC Score juga terjadi peningkatan menjadi 90.6%.
  • Untuk prediksi setelah Tuning tetap sama yaitu 1 atau No Heart Disease.

Untuk kasus ini, Tuning Hyperparameters hanya meningkatkan sedikit performa model kita. Namun walau demikian, Tuning Hyperparameters tetap menjadi salah satu hal yang harus dipertimbangkan dalam membangun sebuah model agar model kita performanya menjadi lebih akurat.

Terimakasih telah membaca! Jika kalian merasa ini membantu bisa tekan tombol clap atau share. Dan jika ada kritik dan saran maka bisa langsung saja comment.

How do you optimize parameters in Python?

How to Do Hyperparameter Tuning on Any Python Script in 3 Easy....
Step 1: Decouple search parameters from code. Take the parameters that you want to tune and put them in a dictionary at the top of your script. ... .
Step 2: Wrap training and evaluation into a function. ... .
Step 3: Run Hypeparameter Tuning script..

What are the parameters of optimization?

In parameter optimization, instead of searching for an optimum continuous function, the optimum values of design variables for a specific problem are obtained. Mathematical programming, optimality criteria (OC), and metaheuristic methods are some subsets of parameter optimization techniques.

What are the 3 methods of finding good hyperparameters?

We should perform model hyperparameter tuning to ensure good results from our machine learning model and data. We can choose from three hyperparameter tuning methods — grid search, random search, and Bayesian optimization. If evaluating our model with training data will be quick, we can choose the grid search method.

How do you get the best hyperparameter values in Python?

Scikit-learn: hyperparameter tuning with grid search and random search.
Define a set of hyperparameters you want to tune..
Give these hyperparameters to the grid search or random search..
These algorithms then automatically examine the hyperparameter search space and attempt to find the optimal values that maximize accuracy..