Skip to main content

Day 6 - Improving Model Accuracy

Improving Model Accuracy

Dalam meningkatkan akurasi model, faktor utama yang perlu disesuaikan adalah hyperparameter. Sebelum mempelajari lebih lanjut cara meningkatkan akurasi model, kita harus mengetahui dan memahami apa yang kita perlu sesuaikan yakni hyperparameter. Secara garis besar hyperparameter adalah (katakanlah) aspek yang mempengaruhi arsitektur model yang kita buat. Selama model dilatih, hyperparameter tidak dapat disesuaikan karena hyperparameter sendiri mempengaruhi arsitektur dari model itu sendiri, sehingga jika arsitektur diubah maka optimasi parameter tidak ada maknanya karena arsitekturnya sudah berbeda. Tidak seperti hyperparameter, parameter dapat disesuaikan selama model dilatih.

Lantas apa perbedaan mereka berdua? Untuk mempermudah bayangan, aspek-aspek yang termasuk dalam parameter adalah bias dan beban / bobot (weight) yang jika dilihat pada ilustrasi model neural network dia akan berada di garis yang menghubungkan antar titik. Dari hal tersebut dapat dibayangkan bukan? Bahwa parameter tidak mengubah arsitektur model. Sedangkan hyperparameter mencakup Learning rate, Batch size, jumlah epoch, jumlah hidden layers, jumlah neurons (bulatan) di setiap layer, dan Activations functions. Dari banyak aspek yang tercakup pada hyperparameter kita ambil contoh jumlah hidden layers, jika jumlah hidden layers yang berada di antara input layer dan output layers diubah maka arsitekturnya berubah bukan? Sehingga di titik ini dapat disimpulkan bahwa hyperparameter adalah aspek yang menentukan arsitektur model dan bagaimana cara model dilatih.

Karena parameter akan mengikuti hyperparameter dan data yang diberikan. Maka hal yang perlu kita tuning adalah hyperparameter seperti judul dari materi ini “Hyperparameter Tuning”. Hyperparameter tuning pada dasarnya menggunakan empat metode;

Pertama menggunakan Manual Tuning, seperti namanya metode manual tuning melakukan segala sesuatu dengan manual, artinya kita mengubah hyperparameter sendiri, melatih ulang model, dan melihat hasil akhirnya. Metode ini cenderung kurang efisien karena segala hal dilakukan secara manual tanpa otomatisasi, namun disisi lain manual tuning sangat bermanfaat bagi yang sedang belajar karena efek dari perubahan hyperparameter dapat diamati.

Kedua ada Grid Search, namanya mewakili pendekatan yang dilakukan metode ini yakni menggunakan grid. Pada dasarnya hyperparameter digambarkan pada grid, pencarian hyperparameter dilihat dari hasil persilangan hyperparameter pada grid dan hasil pada grid dievaluasi. Metode ini memiliki keuntungan karena dapat dengan mudah mengevaluasi hasil, namun di sisi lain pemrosesan yang dilakukan cenderung lama karena banyaknya kombinasi yang dilakukan. (jujur saja aku agak kurang yakin sama yang ini).

Lalu ada Random Search atau Randomized Search. Metode ini melakukan pendekatan ini hampir sama dengan Grid Search, namun dibatasi cakupannya dan dari batasan tersebut diambil sampel secara acak. Tidak seperti Grid Search yang memakan waktu lama, random search cenderung bekerja lebih cepat karena sudah dibatasi cakupannya dan hanya sampel saja yang

digunakan. Namun, di sisi lain hyperparameter paling optimal mungkin saja berada di luar cakupan sehingga hyperparameter yang didapatkan adalah yang terbaik pada cakupan saja.

Terakhir pada metode dasar yang biasa digunakan ada Bayesian Optimization. Metode ini memiliki konsep dasar mengambil titik secara acak dan jika dari hasil yang diambil secara acak tersebut terlihat meyakinkan maka pencarian akan difokuskan pada sekitar titik yang meyakinkan tersebut. Metode ini cenderung lebih efisien, namun juga berkemungkinan besar terjebak pada titik yang dianggap meyakinkan, padahal di luar titik tersebut juga dimungkinkan adanya hyperparameter yang lebih baik.

Setelah kita memahami pentingnya melakukan Hyperparameter Tuning untuk meningkatkan akurasi, kita juga harus memahami terkadang hasil dari tuning yang kita lakukan juga masih menghasilkan bias pada hasil yang dikeluarkan. Untuk mengatasi hal ini terdapat suatu metode bernama Ensemble Learning.

Ensemble Learning bekerja seperti halnya manusia meminta pendapat saat bingung dalam pengambilan keputusan. Yap, kita perlu banyak kepala! Dalam kasus AI ini kita membuat model yang membuat prediksi berdasarkan keluaran prediksi sejumlah model. Metode Ensemble yang populer digunakan yakni Bagging dan Boosting.

Bagging dan Boosting sebenarnya merupakan metode yang mirip, keduanya membuat banyak model dengan satu dataset yang sama. Perbedaannya adalah Bagging membagi dataset tersebut menjadi subset untuk masing-masing model. Di lain sisi Boosting menggunakan dataset untuk melatih satu model dan hasil dari latihan tersebut akan dievaluasi untuk menyesuaikan dataset yang akan digunakan model selanjutnya.




Setelah kita dapat membuat “kepala” yang berbeda menggunakan dua metode Ensemble, mari kita bahas dua model yang menggunakan banyak kepala ini untuk mengambil keputusan. Yang pertama ada Random Forest, dalam model ini kita mengubah istilah “kepala” menjadi pohon. Seperti halnya hutan yang berisi pohon-pohon yang bervariasi, Random Forest pun berisi pohon-pohon (model Decision Tree) dengan subdataset masing-masing. Pohon-pohon tersebut akan dilatih dengan subdataset yang telah dibagi dengan metode ensemble bagging, masing-masing pohon melakukan prediksi, dan hasil prediksi masing-masing pohon akan dipertimbangkan untuk mengambil keputusan akhir.

Selanjutnya ada AdaBoost (Adaptive Boost). Tidak seperti Random Forest yang menggunakan ensemble method bagging, AdaBoost menggunakan Boosting. Sehingga model dilatih menggunakan dataset yang sama dengan bobot yang disesuaikan. Tiap model yang dibuat akan diukur bobot erornya masing-masing. Dari bobot eror tersebut akan menentukan tingkat kuasa model dalam mempengaruhi hasil akhir AdaBoost, semakin tinggi bobot eror semakin rendah kuasanya dan hal ini berlaku sebaliknya juga.


Referensi Baca

  • https://bang-luqman.medium.com/perbedaan-parameter-dan-hyperparameter-dalam-deep-learning-1fdee049cdbf
  • https://tentangdata.wordpress.com/2017/09/21/definisi-optimisasi-machine-learning/
  • https://towardsdatascience.com/hyperparameter-tuning-explained-d0ebb2ba1d35
  • https://machinelearningmastery.com/manually-optimize-hyperparameters/
  • https://neptune.ai/blog/hyperparameter-tuning-in-python-complete-guide
  • https://towardsdatascience.com/basic-ensemble-learning-random-forest-adaboost-gradient-boosting-step-by-step-explained-95d49d1e2725

Last modified: Friday, 10 February 2023, 2:28 PM