Overfitting dan underfitting merupakan penyebab utama model machine learning memiliki kinerja yang buruk.
Bagi Anda yang sudah cukup familiar dengan training dan testing model machine learning, tentu saja akan familiar juga dengan istilah overfitting dan underfitting.
Di artikel ini, Anda akan mengenal lebih dalam mengenai overfitting dan underfitting di kasus pengembangan model machine learning.
Overfitting dalam Machine Learning
Overfitting merupakan masalah dalam machine learning di mana model terlalu spesifik dalam mempelajari data latih. Sehingga, ketika model diberi data lain di luar dari data latihnya tidak bisa mengenali dengan baik.
Untuk menjelaskan hal ini, saya lebih suka dengan analogi siswa yang sedang belajar untuk ujian.
Bayangkan besok Anda akan ujian katakanlah matakuliah statistika dasar secara close book. Lalu Anda berusaha belajar dengan cara berlatih mengerjakan tipe-tipe soal yang pernah keluar tahun lalu.
Saking yakinnya bahwa soal ujian besok akan sama persis dengan soal tahun lalu, Anda kemudian mempelajarinya dengan sangat detil. Sehingga, mengabaikan tipe soal lain yang cukup serupa.
Di hari H ujian, ternyata tidak ada satupun soal yang keluar seperti soal tahun lalu. Lalu Anda pun tidak bisa mengerjakannya sama sekali.
Seperti itulah overfitting terjadi dalam model machine learning. Alih-alih mempelajari pola data latih secara general, model justru terlalu detail mempelajari data latih tersebut.
Sehingga ketika diuji terhadap data baru, model tidak bisa memprediksi dengan benar. Dengan begitu, terjadinya overfitting tidak akan baik untuk semua model machine learning yang dikembangkan.
Penyebab Model Overfitting
Terdapat beberapa hal yang menyebabkan terjadinya overfitting pada suatu model.
1. Terlalu Banyak Data Noisy atau Tidak Akurat
Salah satu penyebab overfitting model berangkat dari datanya sendiri. Data merupakan sumber utama penyebab overfit. Hal ini menjadi wajar, karena data adalah makanan bagi model machine learning.
Oleh karena itu, praktisi menyebutnya sebagai garbage in - garbage out, ketika data yang masuk merupakan sampah, maka hasilnya pun berupa sampah.
Dengan demikian, memperhatikan sumber data latih yang baik menjadi penting ketika membangun sebuah model.
2. Jumlah Data Latih yang Terlalu Sedikit
Di kasus riil, seringkali kita dihadapkan pada kasus ini, tidak bisa saya pungkiri bahwa ketersediaan data yang akurat sangat minim untuk diperoleh.
Sehingga, banyak yang kemudian memaksakan untuk melakukan training model dengan data yang sedikit. Padahal, memaksa melatih model dengan data yang terlalu kecil merupakan sumber terjadinya overfitting.
Bayangkan, model perlu mempelajari pola data secara general, tetapi model tersebut dilatih dengan sedikit data saja. Tentu saja, model yang dihasilkan kemungkinan besar akan mengalami overfitting.
3. Model yang Kompleks
Perlu dipahami, tidak semua model cocok terhadap data yang kita miliki. Bahkan semakin komplek cara kerja model, akan semakin tinggi kemungkinan model mengalami overfit.
Salah satu model yang memiliki tingkat komleksitas cukup tinggi yaitu decision tree. Algoritma decision tree menggunakan konsep pohon keputusan, sehingga dalam beberapa kasus data bisa menyebabkan pohon keputusan yang kompleks.
Akibatnya, model akan mempelajari data latih dengan sangat detil yang pada akhirnya menyebabkan terjadinya overfitting.
4. Tidak Menerapkan Penyetopan Dini Ketika Training Model
Banyak di antara kita yang menginginkan model dengan kinerja terbaik. Salah satu ukurannya yaitu memperoleh nilai akurasi training yang tinggi.
Pada umumnya, praktek untuk memperoleh akurasi tinggi dengan cara membiarkan model berlatih sampai akurasi yang kita harapkan berhasil dicapai.
Praktek seperti ini tentu saja bisa menyebabkan overfitting pada model tersebut. Membiarkan model berlatih lebih lama demi mencapai akurasi tertentu sama saja dengan membiarkan model mempelajari pola data secara detil.
Sudah kita ketahui bahwa terjadinya model overfitting akibat model belajar terlalu detil, sehingga wajar jika hal ini dilakukan akan menyebabkan model yang Anda bangun memiliki kinerja buruk ketika digunakan terhadap data testing.
5. Menerapkan Learning Rate yang Sangat Kecil
Penjelasan terkait dengan learning rate kiranya akan cukup panjang, maka akan saya bahas di artikel lain. Namun sedikit akan saya berikan ilustrasinya kenapa learning rate bisa menyebabkan terjadinya overfitting pada model.
Sederhananya, learning rate merupakan nilai tertentu yang ditetapkan sebagai cara kita memberitahu model bagaimana memperlakukan data latih untuk dipelajari. Range nilai learning rate sendiri dari 0 sampai 1.
Semakin kecil nilai learning rate berarti kita mengajarkan model untuk lebih teliti dalam mempelajari data latih. Sedangkan semakin besar, berarti mengajarkan model untuk mempelajari data lebih general.
Terkadang kita cenderung ingin cepat-cepat menghasilkan model dengan akurasi yang tinggi, salah satunya memperkecil nilai learning rate. Namun Anda perlu tahu bahwa praktek tersebut justru bisa menjadi boomerang karena memperbesar kemungkinan terjadi overfitting.
Cara Mengatasi Model Overfitting
Bagaimana cara mengatasi model overfitting?
Mencegah terjadinya overfitting sepenuhnya sangatlah sulit. Tapi dengan kita mengetahui penyebab tejadinya overfit seperti yang disebutkan di atas, maka kita bisa meminimalisirnya.
Adapun cara mencegah overfitting berlebih bisa dilakukan dengan cara-cara berikut.
1. Melakukan Ekspolarasi Data
Praktisi machine learning sangat mewajibkan untuk melakukan eksplorasi data sebelum melatih model dengan data yang tersedia. Tujuannya agar kita bisa mendeteksi dini apakah data yang kita miliki layak untuk dilatihkan ke model atau tidak.
Ini penting, agar model mendapatkan makanan data yang baik sehingga hasilnya diperoleh model dengan kinerja yang baik.
2. Kumpulkan Lebih Banyak Data
Untuk mencegah overfitting, sebisa mungkin Anda meluangkan lebih banyak waktu untuk mengumpulkan data yang baik lebih banyak lagi.
Perlu Anda ketahui bahwa melatih model merupakan hal yang mudah, tapi memperoleh data yang cukup sebagai makanan bagi model sangatlah sulit.
Jika sudah tidak dimungkinkan lagi untuk memperoleh lebih banyak data, lakukan metode-metode yang terbukti secara ilmiah untuk memperoleh data baru dari data yang dimiliki. Salah satunya dengan melakukan metode sampling.
3. Pilih Model yang Sederhana
Hampir setiap praktisi machine learning menyarankan kita untuk bekerja dengan model yang sederhana terlebih dahulu. Tentu saja hal ini bertujuan untuk mencegah terjadinya overfitting model.
Jika model yang sederhana tidak bisa mengatasi masalah data yang kita miliki, baru kita coba dengan model lain yang lebih kompleks. Tetapi perlu menyadari akan potensi overfitting, sehingga Anda menyiapkan metode pencegahan.
4. Terapkan Penyetopan Dini
Dalam istilah machine learning kita menyebutnya sebagai Early Stoping Point. Penyetopan dini merupakan upaya untuk mencegah terjadinya overfitting pada saat melakukan training model.
Metode ini biasanya digunakan untuk menghentikan proses training model ketika model mengalami penurunan performa setelah beberapa kali epoch training.
5. Lakukan Eksplorasi Nilai Learning Rate Terbaik
Semakin kecil nilai learning rate tidak berarti bahwa model akan memiliki kinerja baik walaupun secara training memperoleh akurasi tinggi. Sebaliknya, semakin besar learning rate juga tidak berarti menyebabkan model akan lebih memiliki kinerja baik.
Sehingga, kita perlu melakukan eksplorasi sendiri berapa nilai learning rate yang paling optimal untuk model yang kita kembangkan. Tujuannya satu, untuk mencegah terjadi overfitting.
Ciri-ciri Model Overfitting
Setelah kita mengetahui apa itu overfitting dan kenapa overfitting terjadi, kita akan bisa dengan mudah mengetahui ciri-ciri model mengalami overfit atau tidak.
Secara sederhana, ciri model overfitting yaitu memperoleh nilai akurasi training yang tinggi dengan error training kecil tetapi tidak bisa memprediksi data baru dengan benar.
Jika Anda bisa menampilkan plot data proses training model, maka Anda bisa memperhatikan plot datanya untuk mendeteksi model mengalami overfit.
Secara umum, model dengan plot data yang halus merupakan ciri terjadinya overfitting. Ciri lain yang mengindikasikan model overfit yaitu error training atau loss training meningkat seiring bertambahnya epoch.
Underfitting dalam Machine Learning
Uderfitting merupakan masalah dalam machine learning yang mana model bahkan tidak bisa memahami pola data training itu sendiri.
Tapi bukan kebalikan dari overfitting ya!
Saya kira Anda sudah bisa memahami dengan cukup membaca penjelasan satu paragraf tadi. Underfitting memang sangat sederhana dan paling mudah untuk dideteksi.
Saya ilustrasikan seperti ini, Anda belajar materi perkuliahan untuk ujian, tapi tak satupun yang bisa Anda pahami. Akibatnya waktu ujian tiba tak satu pun dari soal yang keluar bisa Anda pahami, boro-boro dikerjakan.
Begitu juga kondisi underfitting dalam machine learning, saat model dilatih dengan data training, akurasi training model bahkan sangat jelek. Maka ketika dites ke data baru, bisa dipastikan hasil prediksinya tidak akan akurat.
Penyebab Model Underfitting
Setidaknya ada tiga hal yang menyebabkan model underfitting.
1. Model Tidak Cocok dengan Dataset
Seperti telah kita singgung di penjalan sebelumnya, tidak semua model cocok dengan keadaan data yang kita miliki. Sehingga salah satu penyebab terjadinya underfitting adalah akibat memaksakan model terhadap data yang tidak cocok untuk algoritmanya.
2. Terlalu Banyak Menerapkan Regularizer
Terkadang kita ingin memperoleh model yang powerful dengan menerapkan berbagai regularizer yang bisa digunakan untuk model algoritma yang dipilih.
Alih-alih memperoleh apa yang diinginkan, terlalu banyak menerapkan regularizer justru menjadi penyebab model mengalami underfitting.
3. Proses Training Terlalu Sebentar
Jika di atas kita sebut bahwa terlalu lama proses training menyebabkan overfitting, sebaliknya terlalu sebentar melatih model juga bisa menyebabkan underfitting.
Bayangkan, model belum bisa mengenali pola data latih, proses training sudah dihentikan. Tentu saja akan menyebabkan model mengalami underfitting, karena memang model belum mempelajari pola data dengan baik.
Cara Meminimalisir Model Underfitting
Mencegah terjadi underfitting pada model machine learning yang kita kembangkan tentu saja lebih sederhana daripada mencegah overfitting. Berikut ini cara mencegah underfitting yang bisa kita lakukan.
1. Temukan Model yang Cocok dengan Dataset
Untuk mencegah model underfitting, Anda mungkin perlu melakukan uji coba dataset yang sudah siap dilatihkan ke beberapa model. Tidak ada cara lain untuk keluar dari masalah ini selain lakukan percobaan.
Jika memang telah dicoba berbagai model dengan optimasi lain yang dilakukan masih terjadi underfitting, maka kemungkinan besar dataset yang Anda gunakan yang memang kurang baik.
2. Terapkan Regularizer secara Efektif
Meskipun setiap model algoritma memiliki cukup banyak regularizer untuk optimasi model. Menggunakan semua regularizer ke dalam satu model bukanlah jalan keluar yang paling baik.
Sehingga, Anda perlu menetapkan regularizer paling optimal yang perlu digunakan agar model bisa memiliki performa yang baik. Atau bahkan jika tidak perlu menerapkannya jangan paksakan.
3. Jangan Lakukan Training dalam Waktu Terlalu Singkat
Komputer tetaplah komputer bukan mesin yang auto pintar dalam waktu sekejap. Anda perlu memberikan waktu yang cukup untuk mesin melakukan pembelajaran terhadap pola dataset.
Jangan karena terlalu lama bisa menyebabkan overfitting lalu kemudian mempersingkat waktu training model. Tentu saja itu bukanlah hal yang bijak.
Saya pribadi, untuk melakukan training percobaan biasanya minimal 20 epoch. Jika masih mengalami underfitting, maka menambah epoch nya atau melakukan tuning hyperparameter lain.
Best Fit Model dalam Machine Learning
Tujuan utama melakukan training model dalam machine learning yaitu memperoleh best fit model. Para praktisi tentu saja menyadari bahwa mencapai kondisi best fit model merupakan hal yang sulit dalam prakteknya.
Saya sendiri berpandangan bahwa best fit model merupakan kondisi model yang dihasilkan dengan memperkecil kemungkinan terjadi overfitting dan underfitting melalui praktek terbaik.
Tentu saja kondisi best fit model tidak akan pernah terjadi jika Anda tidak pernah mau bereksperimen. Jika Anda membaca dan memahami artikel ini dengan baik, tentu akan menyadari alasannya.