Apa itu Cross-Validasi? Membandingkan Model Pembelajaran Mesin
Diterbitkan: 2021-07-21Validasi silang adalah alat yang sangat berharga bagi para ilmuwan data.
Ini berguna untuk membangun lebih akurat pembelajaran mesin model dan mengevaluasi seberapa baik mereka bekerja pada dataset uji independen.
Validasi silang mudah dipahami dan diterapkan, menjadikannya metode masuk untuk membandingkan kemampuan prediktif (atau keterampilan) dari model yang berbeda dan memilih yang terbaik. Ini bermanfaat ketika jumlah data yang tersedia terbatas dan merupakan cara yang bagus untuk memeriksa bagaimana model prediktif bekerja dalam praktiknya.
Apa itu validasi silang?
Validasi silang (CV) adalah teknik yang digunakan untuk menilai model pembelajaran mesin dan menguji kinerjanya (atau akurasinya). Ini melibatkan pemesanan sampel tertentu dari kumpulan data yang modelnya tidak dilatih. Kemudian, model diuji pada sampel ini untuk mengevaluasinya.
Validasi silang digunakan untuk melindungi model dari overfitting , terutama jika jumlah data yang tersedia terbatas. Ini juga dikenal sebagai estimasi rotasi atau pengujian di luar sampel dan terutama digunakan dalam pengaturan di mana target model adalah prediksi.
Tahukah kamu? Sebuah model dianggap "overfitted" jika memodelkan data pelatihan dengan sangat baik sehingga berdampak negatif terhadap kinerjanya pada data baru.
Prosedur pengambilan sampel ulang ini juga digunakan untuk membandingkan model pembelajaran mesin yang berbeda dan menentukan seberapa baik mereka bekerja untuk memecahkan masalah tertentu. Dengan kata lain, validasi silang adalah metode yang digunakan untuk menilai keterampilan model pembelajaran mesin.
Sederhananya, dalam proses validasi silang, sampel data asli dibagi secara acak menjadi beberapa himpunan bagian. Model pembelajaran mesin berlatih di semua himpunan bagian, kecuali satu. Setelah pelatihan, model diuji dengan membuat prediksi pada subset yang tersisa.
Dalam banyak kasus, beberapa putaran validasi silang dilakukan dengan menggunakan himpunan bagian yang berbeda, dan hasilnya dirata-ratakan untuk menentukan model mana yang merupakan prediktor yang baik.
Mengapa validasi silang penting?
Validasi silang sangat penting di mana jumlah data yang tersedia terbatas.
Misalkan Anda perlu memprediksi kemungkinan ban sepeda bocor. Untuk ini, Anda telah mengumpulkan data tentang ban yang ada: usia ban, jarak tempuh yang ditempuh, berat pengendara, dan apakah ban pernah bocor sebelumnya.
Untuk membuat model prediktif, Anda akan menggunakan data (historis) ini. Ada dua hal yang perlu Anda lakukan dengan data ini – melatih algoritme dan menguji model.
Tahukah kamu? Dalam pembelajaran mesin, algoritma dan model tidak sama. Model adalah apa yang dipelajari oleh algoritma pembelajaran mesin.
Karena Anda hanya memiliki jumlah data yang terbatas, akan naif jika menggunakan semua data untuk melatih algoritme. Jika Anda melakukannya, Anda tidak akan memiliki data yang tersisa untuk menguji atau mengevaluasi model.
Menggunakan kembali set pelatihan sebagai set pengujian bukanlah ide bagus karena kita perlu mengevaluasi akurasi model pada data yang tidak dilatih. Itu karena tujuan utama di balik pelatihan adalah untuk mempersiapkan model untuk bekerja pada data dunia nyata. Dan tidak mungkin kumpulan data pelatihan Anda berisi semua kemungkinan titik data yang akan ditemui model.
Ide yang lebih baik adalah menggunakan 75 persen (tiga blok) pertama dari data sebagai kumpulan data pelatihan dan 25 persen terakhir (satu blok) sebagai kumpulan data pengujian . Ini akan memungkinkan Anda untuk membandingkan seberapa baik algoritma yang berbeda mengkategorikan data uji.
Tapi tentu saja, bagaimana Anda tahu bahwa menggunakan 75 persen pertama dari data sebagai set pelatihan dan 25 persen sisanya sebagai set pengujian adalah cara terbaik?
Sebagai gantinya, Anda dapat menggunakan 25 persen pertama dari data untuk pengujian; atau, Anda dapat menggunakan blok data ketiga sebagai kumpulan data pengujian dan sisanya sebagai kumpulan data pelatihan.
Tips: Gunakan perangkat lunak pembelajaran mesin untuk mengotomatiskan tugas dan membuat prediksi yang akurat.
Akibatnya, jenis validasi silang yang disebut validasi silang k-fold menggunakan semua (empat) bagian dari kumpulan data sebagai data uji, satu per satu, dan kemudian merangkum hasilnya.
Misalnya, validasi silang akan menggunakan tiga blok data pertama untuk melatih algoritme dan menggunakan blok terakhir untuk menguji model. Ini kemudian mencatat seberapa baik model dilakukan dengan data uji.
Setelah merekam kinerja atau akurasi, itu akan menggunakan blok data ke-1, ke-2, dan ke-4 untuk dilatih dan blok ke-3 untuk diuji. Proses berlanjut hingga semua blok digunakan satu kali sebagai data uji. Rata-rata dari semua hasil dihitung untuk mengevaluasi kinerja model.
Pada contoh di atas, data dibagi menjadi empat blok. Oleh karena itu, validasi silang ini disebut validasi silang 4 kali lipat . Jika dibagi menjadi sepuluh blok, itu akan menjadi validasi silang 10 kali lipat .
Singkatnya, validasi silang berguna untuk pemilihan model dan membuatnya mudah untuk memeriksa seberapa baik model digeneralisasi ke data baru.
Dengan kata lain, sangat membantu untuk menentukan kesalahan prediksi model. Ini juga digunakan untuk membandingkan kinerja atau akurasi berbagai metode pembelajaran mesin seperti mesin vektor dukungan (SVM), K-nearest neighbor (KNN), regresi linier, atau regresi logistik.
Berikut adalah beberapa alasan mengapa ilmuwan data menyukai validasi silang:
- Memungkinkan mereka menggunakan semua data tanpa mengorbankan subset apa pun (tidak valid untuk metode holdout)
- Mengungkapkan konsistensi data dan algoritma
- Membantu menghindari overfitting dan underfitting
Validasi silang juga digunakan untuk menyetel hyperparameter dari model pembelajaran mesin melalui teknik yang disebut validasi silang pencarian grid acak .
Jenis validasi silang
Metode validasi silang dapat secara luas diklasifikasikan menjadi dua kategori: metode lengkap dan tidak lengkap .
Seperti namanya, metode validasi silang yang lengkap berusaha untuk menguji semua cara yang mungkin untuk membagi sampel data asli ke dalam satu set pelatihan dan pengujian. Di sisi lain, metode non-lengkap tidak menghitung semua cara mempartisi data asli ke dalam set pelatihan dan evaluasi.
Di bawah ini adalah lima jenis validasi silang yang umum.
1. Metode Holdout
Metode holdout adalah salah satu pendekatan validasi silang dasar di mana dataset asli dibagi menjadi dua bagian – data pelatihan dan data pengujian. Ini adalah metode yang tidak lengkap, dan seperti yang diharapkan, model dilatih pada dataset pelatihan dan dievaluasi pada dataset pengujian.
Dalam kebanyakan kasus, ukuran dataset pelatihan dua kali lebih besar dari dataset pengujian, yang berarti dataset asli dibagi dalam rasio 80:20 atau 70:30. Selain itu, data dikocok secara acak sebelum dibagi menjadi set pelatihan dan validasi.
Namun, ada beberapa kelemahan metode validasi silang ini. Karena model dilatih pada kombinasi titik data yang berbeda, model dapat menunjukkan hasil yang bervariasi setiap kali dilatih. Selain itu, kita tidak pernah bisa sepenuhnya yakin bahwa dataset pelatihan yang dipilih mewakili seluruh dataset.

Jika sampel data asli tidak terlalu besar, ada juga kemungkinan bahwa data uji mungkin berisi beberapa informasi penting, yang gagal dikenali oleh model karena tidak disertakan dalam data pelatihan.
Namun, teknik validasi silang ketidaksepakatan sangat ideal jika Anda sedang terburu-buru untuk melatih dan menguji model dan memiliki kumpulan data yang besar.
2. Validasi silang K-fold
Metode validasi silang k-fold adalah versi perbaikan dari metode ketidaksepakatan. Ini membawa lebih banyak konsistensi pada skor model karena tidak bergantung pada bagaimana kita memilih set data pelatihan dan pengujian.
Ini adalah metode validasi silang yang tidak lengkap, dan seperti namanya, dataset dibagi menjadi k jumlah split, dan metode holdout dilakukan k kali.
Misalnya, jika nilai k sama dengan dua, akan ada dua himpunan bagian dengan ukuran yang sama. Pada iterasi pertama, model dilatih pada satu subsampel dan divalidasi pada subsampel lainnya. Pada iterasi kedua, model dilatih pada subset yang digunakan untuk memvalidasi pada iterasi sebelumnya dan diuji pada subset lainnya. Pendekatan ini disebut validasi silang 2 kali lipat .
Demikian pula, jika nilai k sama dengan lima, pendekatannya disebut metode validasi silang 5 kali lipat dan akan melibatkan lima himpunan bagian dan lima iterasi. Juga, nilai k adalah arbitrer. Umumnya, nilai k diatur ke 10. Jika Anda bingung memilih nilai, disarankan hal yang sama.
Prosedur validasi silang k-fold dimulai dengan memisahkan dataset asli secara acak menjadi k jumlah fold atau subset. Dalam setiap iterasi, model dilatih pada subset k-1 dari seluruh dataset. Setelah itu, model diuji pada subset ke-k untuk memeriksa kinerjanya.
Proses ini diulang sampai semua k-fold berfungsi sebagai set evaluasi. Hasil dari setiap iterasi dirata-ratakan, dan ini disebut akurasi validasi silang . Akurasi validasi silang digunakan sebagai metrik kinerja untuk membandingkan efisiensi model yang berbeda.
Teknik validasi silang k-fold umumnya menghasilkan model yang kurang bias karena setiap titik data dari dataset asli akan muncul di set pelatihan dan pengujian. Metode ini optimal jika Anda memiliki jumlah data yang terbatas.
Namun, seperti yang diharapkan, proses ini mungkin memakan waktu karena algoritme harus dijalankan ulang sebanyak k kali dari awal. Ini juga berarti bahwa dibutuhkan k-1 kali lebih banyak perhitungan daripada metode holdout.
3. Validasi silang k-fold bertingkat
Karena kita mengacak data secara acak dan membaginya menjadi beberapa lipatan dalam validasi silang k-fold, ada kemungkinan kita berakhir dengan himpunan bagian yang tidak seimbang. Hal ini dapat menyebabkan pelatihan menjadi bias, yang menghasilkan model yang tidak akurat.
Sebagai contoh, pertimbangkan kasus masalah klasifikasi biner di mana masing-masing dari dua jenis label kelas terdiri dari 50 persen dari data asli. Ini berarti bahwa dua kelas hadir dalam sampel asli dalam proporsi yang sama. Demi kesederhanaan, beri nama dua kelas A dan B.
Saat mengacak data dan membaginya menjadi beberapa lipatan, ada kemungkinan besar bahwa kita berakhir dengan lipatan di mana sebagian besar titik data berasal dari kelas A dan hanya sedikit dari kelas B. Subset seperti itu dilihat sebagai subset yang tidak seimbang dan dapat menyebabkan pembuatan classifier yang tidak akurat.
Untuk menghindari situasi seperti itu, lipatan distratifikasi menggunakan proses yang disebut stratifikasi . Dalam stratifikasi, data disusun ulang untuk memastikan bahwa setiap subset merupakan representasi yang baik dari keseluruhan dataset.
Dalam contoh klasifikasi biner di atas, ini berarti lebih baik membagi sampel asli sehingga setengah dari titik data dalam lipatan berasal dari kelas A dan sisanya dari kelas B.
4. Validasi silang tinggalkan-p-out
Leave-p-out cross-validation (LpOCV) adalah metode lengkap di mana jumlah p titik data diambil dari jumlah total sampel data yang diwakili oleh n.
Model dilatih pada np titik data dan kemudian diuji pada p titik data. Proses yang sama diulang untuk semua kemungkinan kombinasi p dari sampel asli. Akhirnya, hasil dari setiap iterasi dirata-ratakan untuk mencapai akurasi validasi silang.
5. Validasi silang tinggalkan-satu-keluar
Pendekatan validasi silang tinggalkan satu kali (LOOCV) adalah versi LpOCV yang disederhanakan. Dalam teknik validasi silang ini, nilai p diset menjadi satu. Oleh karena itu, metode ini jauh lebih tidak lengkap. Namun, pelaksanaan metode ini mahal dan memakan waktu karena model harus dipasang beberapa kali.
Ada teknik validasi silang lainnya, termasuk validasi subsampling acak berulang, validasi silang bersarang, dan validasi silang deret waktu.
Aplikasi validasi silang
Aplikasi utama dari validasi silang adalah untuk mengevaluasi kinerja model pembelajaran mesin. Ini membantu membandingkan metode pembelajaran mesin dan menentukan mana yang ideal untuk memecahkan masalah tertentu.
Misalnya, Anda mempertimbangkan k-nearest neighbor (KNN) atau analisis komponen utama (PCA) untuk melakukan pengenalan karakter optik. Dalam hal ini, Anda dapat menggunakan validasi silang untuk membandingkan keduanya berdasarkan jumlah karakter yang salah diklasifikasikan oleh setiap metode.
Validasi silang juga dapat digunakan dalam pemilihan fitur untuk memilih fitur yang paling berkontribusi pada keluaran prediksi.
Batasan validasi silang
Tantangan utama dari validasi silang adalah kebutuhan akan sumber daya komputasi yang berlebihan, terutama dalam metode seperti k-fold CV. Karena algoritme harus dijalankan ulang dari awal sebanyak k kali, diperlukan k kali lebih banyak komputasi untuk mengevaluasi.
Keterbatasan lain adalah yang mengelilingi data yang tidak terlihat. Dalam validasi silang, kumpulan data uji adalah kumpulan data yang tidak terlihat yang digunakan untuk mengevaluasi kinerja model. Secara teori, ini adalah cara yang bagus untuk memeriksa cara kerja model saat digunakan untuk aplikasi dunia nyata.
Namun, tidak akan pernah ada kumpulan data tak terlihat yang komprehensif dalam praktik, dan orang tidak akan pernah bisa memprediksi jenis data yang mungkin dihadapi model di masa depan.
Misalkan model dibangun untuk memprediksi risiko individu tertular penyakit menular tertentu. Jika model dilatih pada data dari studi penelitian yang hanya melibatkan kelompok populasi tertentu (misalnya, wanita di pertengahan 20-an), ketika diterapkan pada populasi umum, kinerja prediktif mungkin berbeda secara dramatis dibandingkan dengan akurasi validasi silang. .
Selanjutnya, validasi silang akan menghasilkan hasil yang berarti hanya jika bias manusia dikendalikan dalam kumpulan sampel asli.
Validasi silang untuk menyelamatkan
Pembuatan model yang divalidasi silang adalah metode yang sangat baik untuk membuat aplikasi pembelajaran mesin dengan akurasi atau kinerja yang lebih baik. Teknik validasi silang seperti validasi silang k-fold memungkinkan untuk memperkirakan kinerja model tanpa mengorbankan pemisahan pengujian.
Mereka juga menghilangkan masalah yang disebabkan oleh pemisahan data yang tidak seimbang; singkatnya, mereka dapat memungkinkan ilmuwan data untuk tidak terlalu mengandalkan keberuntungan dan lebih banyak pada iterasi.
Ada bagian dari pembelajaran mesin yang mencoba meniru fungsi otak manusia. Ini disebut pembelajaran mendalam, dan kecerdasan umum buatan, jika memungkinkan, akan membutuhkan kemampuan pengambilan keputusannya.