Validasi Model Klasifikasi Machine Learning pada RapidMiner

Split Validation (Training Error & Test Error) dan Cross Validation

Kuncahyo Setyo Nugroho
7 min readMay 4, 2020
Photo by Christopher Gower on Unsplash Edit by Me

Pada artikel sebelumnya kita telah berhasil membuat model dari sebuah proses sederhana untuk melakukan klasifikasi terhadap dataset iris. Model tersebut memberikan hasil prediksi yang hampir benar semua. Pertanyaannya adalah: seberapa anda yakin model tersebut siap digunakan untuk produksi dan apakah model tersebut memberikan hasil prediksi yang akurat terhadap data di masa depan?

Baca : Tutorial 1 — Menerapkan Model Machine Learning pada RapidMiner.

Kita harus yakin bahwa model yang dibuat merupakan model terbaik yang akan memberikan hasil maksimal dan akurat. Oleh karena itu, kita perlu melakukan validasi terhadap model sebelum digunakan untuk produksi. Validasi model adalah mengukur kinerja model dengan menghitung segala bentuk tingkat kesalahan prediksi pada model. Lalu mengapa perlu mengetahui kinerja model tersebut? dengan mengetahui kinerja model dapat membantu kita untuk mengoptimalkan parameter pada model itu sendiri sehingga model jauh lebih akurat. Kita juga dapat memilih model dengan algoritma terbaik karena setiap algoritma memiliki karateristik yang berbeda. Dan yang terpenting adalah kita dapat mengetahui seberapa baik kinerja model tersebut sebelum digunakan dalam produksi.

Ada dua teknik validasi yang lumrah digunakan untuk memvalidasi model:

  1. Split validation: melakukan validasi sederhana dengan membagi dataset secara acak menjadi dua data terpisah — data latih & data uji.
  2. Cross validation: melakukan validasi berulang di mana dataset dibagi menjadi banyak subset (himpunan) data latih & validasi. Setiap iterasi memvalidasi (menguji) satu subset data dengan subset yang tersisa sebagai data latih. Pada cross validation, # subset data adalah jumlah iterasi.

1. Split Validation (Training Error & Test Error)

Salah satu cara mengetahui kinerja model adalah dengan mengukur akurasinya (meskipun akurasi bukan satu-satunya parameter yang digunakan untuk mengukur kinerja suatu model). Ada dua konsep pada split validation: training error dan test error.

  1. Training error didapatkan dengan menghitung kesalahan klasifikasi model pada data yang sama dengan model yang dilatih.
  2. Test error didapatkan dengan menggunakan dua data yang sepenuhnya terpisah. Satu untuk melatih model (data latih) dan lainnya untuk menghitung kesalahan klasifikasi (data uji). Kedua dataset harus memiliki nilai label yang sama.

Traning Error

Nilai traning error didapatkan dengan menggunakan data yang sama untuk melatih dan menguji model. Perhatikan proses pada Gambar 1.

Gambar 1. Proses mencari nilai training error.

Pada praktik ini, kita menggunakan data sonar yang telah tersedia di repository RapidMiner. Operator performance digunakan untuk mengevaluasi kinerja model yang memberikan daftar nilai kriteria kinerja secara otomatis sesuai dengan tugas yang diberikan. Misalkan untuk klasifikasi, kriteria yang diberikan adalah accuracy, precision dan recall.

Baca : Confusion Matrix untuk Evaluasi Model pada Supervised Learning.

Jika proses dijalankan maka menghasilkan performance metrics seperti Gambar 2.

Gambar 2. Performance metrics traning error.

Dari confusion matrix pada Gambar 2, nilai akurasi yang didapatkan sebesar 86.54%. Apakah model tersebut merupakan model yang terbaik karena memiliki akurasi tinggi ?

Diatas telah dijelaskan bahwa training error merupakan kesalahan klasifikasi yang didapatkan menggunakan data yang sama untuk melatih dan menguji model. Karena data yang digunakan sama, maka kemungkinan hasil prediksi “benar” yang diberikan model sangatlah besar. Oleh karena itu saya menyarankan anda untuk menggabaikan nilai training error meskipun memiliki akurasi yang tinggi karena selalu memberikan estimasi yang terlalu “optimis”. Sayangnya, banyak referensi yang memberikan nilai training error sebagai hasil akhirnya. Sebenarnya ini adalah praktik yang buruk dan harus dihindari.

Hal terbaik yang bisa dilakukan adalah memberikan estimasi seberapa baik kinerja model di masa depan. Jika dilakukan dengan cara yang benar, estimasi ini akan mendekati apa yang dapat dicapai tetapi tidak ada jaminan bahwa kinerja yang diperkirakan akan persis seperti yang diharapkan.

Test error: data latih & data uji

Test error adalah perkiraan yang jauh lebih baik tentang seberapa baik kinerja model untuk kasus-kasus baru dan tak terlihat di masa depan. Diatas telah disinggung untuk mendapatkan test error diperlukan dua data yang sepenuhnya terpisah yaitu data latih dan data uji. Kebanyakan dataset yang kita miliki belum memiliki data uji. Untuk mengatasi hal tersebut, pada RapidMiner telah disediakan operator split data yang dapat digunakan untuk membagi dataset menjadi partisi data latih dan data uji sesuai porsi yang ditentukan. Perhatikan proses pada Gambar 3.

Gambar 3. Proses membagi dataset menjadi data uji & data latih.

Untuk membaginya anda harus menambahkan rasio pada paramater partition. Jumlah rasio dari semua partisi harus bernilai total 1.0 (satu). Karena kita ingin melatih model sebaik mungkin maka rasio partisi untuk data latih harus lebih besar dari rasio partisi data uji. Pada praktik ini saya membagi 80% dari dataset sebagai data latih dan sisanya 20% dari dataset sebagai data uji. Perhatikan gambar 4 dibawah ini.

Gambar 4. Rasio 0.8 untuk partisi data latih dan 0.2 untuk partisi data uji.

Sedangkan operator store pada Gambar 3 digunakan untuk menyimpan objek hasil partisi dari operator split data ke repository RapidMiner. Objek yang disimpan dapat digunakan untuk proses lain dengan menggunakan operator retrieve.

Gunakan data latih dan data uji yang telah disiapkan sebelumnya untuk mendapatkan nilai test error. Perhatikan proses pada Gambar 5.

Gambar 5. Proses mencari nilai test error.
Gambar 6. Performance metrics test error

Dari confusion matrix pada Gambar 6, nilai akurasi yang dihasilkan test error sebesar 56.29%. Jauh berbeda dengan nilai akurasi yang didapatkan training error pada gambar 2 sebesar 86.54%. Karena menggunakan data yang terpisah untuk melatih dan menguji model, bisa jadi data yang diuji tidak dilatih pada model sehingga menghasilkan banyak prediksi “salah”. Oleh karena itu, sangat penting untuk memahami perbedaan antara training error dan test error.

Baca : Confusion Matrix untuk Evaluasi Model pada Supervised Learning.

Biasanya, model akan semakin baik jika menggunakan lebih banyak data latih. Hal ini akan mempengaruhi kita untuk menggunakan data sebanyak mungkin untuk melatih model. Pada saat yang sama, anda ingin menggunakan data sebanyak mungkin untuk menguji model sehingga mendapatkan kesalahan prediksi pada pengujian model yang jauh lebih baik. Lalu, apakah ada cara yang lebih baik untuk memvalidasi sebuah model ?

2. Cross Validation

Dari dua percobaan diatas kita setuju bahwa menggunakan data uji dari dataset untuk menghitung test error merupakan cara yang lebih baik untuk mendapatkan estimasi yang lebih handal pada akurasi model di masa mendatang. Menggunakan data uji juga pendekatan yang efisien untuk memvalidasi model. Tetapi pada praktiknya masih ada potensi masalah yang timbul: bagaimana mengetahui data uji tersebut tidak terlalu mudah untuk model? Bisa jadi sampel acak yang dipilih tidak begitu acak, terutama jika hanya memiliki dataset yang sedikit. Dalam kasus tersebut, test error yang dihasilkan mungkin kurang mewakili akurasi model.

Dari permasalahan tersebut, ide yang muncul adalah mengulangi sampling data uji beberapa kali dan menggunakan sampel yang berbeda untuk setiap kali pengujian. Misalnya dengan membuat 10 sampel data uji berbeda yang digunakan untuk mencari 10 kali nilai test error. Dengan cara ini dapat diketahui rata-rata nilai dari 10 test error. Prosedur ini merupakan cara standar untuk memvalidasi model tetapi memerlukan waktu yang lebih lama. Meskipun pada prinsipnya dengan mencari rata-rata nilai test error lebih dari satu kali pengujian lebih unggul daripada test error tunggal, tetapi cara ini masih juga memiliki satu kelemahan yaitu: beberapa baris data yang digunakan dalam beberapa sampel data uji mungkin belum digunakan untuk pengujian sama sekali. Sebagai akibatnya, kesalahan yang dibuat pada baris yang diulang memiliki dampak yang lebih tinggi pada kesalahan pengujian yang lain. Jadi apa yang sebaiknya dilakukan ?

Jawabannya: k-fold cross validation.

K-fold merupakan salah satu metode cross validation. Konsep k-fold cross validation tidak hanya membuat beberapa sampel data uji berulang kali, tetapi membagi dataset menjadi bagian terpisah dengan ukuran yang sama. Model dilatih oleh subset data latih dan divalidasi oleh subset validasi (data uji) sebanyak k. Dengan k-fold cross validation dapat mengurangi waktu komputasi dengan tetap menjaga keakuratan estimasi model. Gambar 7 menunjukkan bagaimana prinsip cross validation.

Gambar 7. Konsep cross validation.

Pada RapidMiner, operator cross validation adalah operator yang bersarang yang memiliki dua subproses: subproses training yang digunakan untuk melatih model dan subproses testing untuk pengujian sekaligus mengukur kinerja model. Perhatikan proses pada Gambar 8 dan Gambar 9.

Gambar 8. Proses cross validation.
Gambar 9. Subproses pada operator cross validation.

Operator cross validation memiliki parameter yang dapat digunakan. Number of folds digunakan untuk memberikan nilai k (jumlah iterasi). Sampling type digunakan untuk memilih teknik sampling yang membagi dataset.

Gambar 10. Parameter pada operator cross validation.
Gambar 11. Performance metrics dari 10 fold cross validation.

Dari confusion matrix pada Gambar 11, nilai akurasi yang dihasilkan dari 10 fold cross validation sebesar 80.71% dengan standar deviasi (+/-) sebesar 13.32%. Ketika mengukur kinerja model menggunakan cross validation maka akurasi yang dihasilkan memiliki standar deviasi atau simpangan baku yaitu ukuran penyebaran data yang menunjukan jarak rata-rata dari nilai tengah ke suatu titik nilai. Semakin besar simpangan baku yang dihasilkan, maka penyebaran dari nilai tengahnya juga besar, begitu pula sebaliknya. Tujuan simpangan baku adalah melihat jarak antara rata-rata akurasi dengan akurasi setiap percobaan (iterasi).

Penutup

Kita dapat menghitung seberapa baik kinerja model dengan membandingkan nilai prediksi dengan nilai sebenarnya untuk y. Validasi model adalah langkah “wajib” sebelum anda menerapakan model untuk produksi. Terlepas dari pembahasan pada artikel ini, untuk menghasilkan model yang optimal diperlukan juga pre-processing, feature selection, optimasi parameter pada model, dan fungsi lainnya.

Teruslah mencoba dan belajar, silahkan otak-atik parameter yang ada untuk menghasilkan kinerja yang berbeda. Pada artikel berikutnya saya akan membahas tentang teknik asosiasi pada data mining. See you ! 🙂

Referensi

  1. RapidMiner Documentation (https://docs.rapidminer.com)
  2. RapidMiner 9: Operator Reference Manual (https://docs.rapidminer.com/latest/studio/operators/rapidminer-studio-operator-reference.pdf)

--

--

Kuncahyo Setyo Nugroho

Learn about Computer Science. Interested in the scientific field of Artificial Intelligence, related to Natural Language Processing. ☕