Bagaimana Anda menggambarkan validasi silang kepada seseorang tanpa latar belakang analisis data?
Bagaimana Anda menggambarkan validasi silang kepada seseorang tanpa latar belakang analisis data?
Jawaban:
Pertimbangkan situasi berikut:
Saya ingin naik kereta bawah tanah untuk pergi ke kantor saya. Rencana saya adalah mengambil mobil saya, parkir di kereta bawah tanah dan kemudian naik kereta untuk pergi ke kantor saya. Tujuan saya adalah naik kereta pukul 8.15 setiap hari sehingga saya dapat mencapai kantor saya tepat waktu. Saya perlu memutuskan yang berikut ini: (a) waktu di mana saya harus pergi dari rumah saya dan (b) rute yang akan saya ambil untuk pergi ke stasiun.
Dalam contoh di atas, saya memiliki dua parameter (yaitu, waktu keberangkatan dari rumah dan rute untuk mengambil ke stasiun) dan saya harus memilih parameter ini sehingga saya mencapai stasiun pada jam 8.15 pagi.
Untuk mengatasi masalah di atas, saya dapat mencoba set 'parameter' yang berbeda (yaitu, kombinasi waktu keberangkatan dan rute yang berbeda) pada hari Senin, Rabu, dan Jumat, untuk melihat kombinasi mana yang merupakan yang terbaik. Idenya adalah sekali saya telah mengidentifikasi kombinasi terbaik saya dapat menggunakannya setiap hari sehingga saya mencapai tujuan saya.
Masalah Overfitting
Masalah dengan pendekatan di atas adalah bahwa saya dapat mengenakan pakaian yang pada dasarnya berarti bahwa kombinasi terbaik yang saya identifikasi mungkin dalam beberapa hal mungkin unik untuk Senin, Rabu, dan Jumat dan kombinasi itu mungkin tidak bekerja untuk Sel dan Kamis. Overfitting dapat terjadi jika dalam pencarian saya untuk kombinasi waktu dan rute terbaik saya mengeksploitasi beberapa aspek dari situasi lalu lintas pada Senin / Rabu / Jumat yang tidak terjadi pada hari Selasa dan Kamis.
Satu Solusi untuk Overfitting: Validasi Silang
Validasi silang adalah salah satu solusi untuk overfitting. Idenya adalah bahwa begitu kami telah mengidentifikasi kombinasi terbaik dari parameter (dalam waktu dan rute kasus kami), kami menguji kinerja set parameter dalam konteks yang berbeda. Oleh karena itu, kami mungkin ingin menguji Tue dan Thu juga untuk memastikan bahwa pilihan kami bekerja untuk hari-hari itu juga.
Memperluas analogi ke statistik
Dalam statistik, kami memiliki masalah serupa. Kami sering menggunakan kumpulan data terbatas untuk memperkirakan parameter yang tidak diketahui yang tidak kami ketahui. Jika kami memakai terlalu banyak, maka estimasi parameter kami akan bekerja dengan sangat baik untuk data yang ada tetapi tidak juga untuk saat kami menggunakannya dalam konteks lain. Dengan demikian, validasi silang membantu dalam menghindari masalah overfitting di atas dengan membuktikan kepada kami beberapa jaminan bahwa estimasi parameter tidak unik untuk data yang kami gunakan untuk memperkirakannya.
Tentu saja, validasi silang tidak sempurna. Kembali ke contoh kereta bawah tanah kami, dapat terjadi bahwa bahkan setelah validasi silang, pilihan parameter terbaik kami mungkin tidak berfungsi satu bulan ke depan karena berbagai masalah (misalnya, konstruksi, perubahan volume lalu lintas dari waktu ke waktu, dll).
Saya pikir ini paling baik dijelaskan dengan gambar berikut (dalam hal ini menunjukkan validasi silang k-fold):
Validasi silang adalah teknik yang digunakan untuk melindungi dari overfitting dalam model prediksi, khususnya dalam kasus di mana jumlah data mungkin terbatas. Dalam validasi silang, Anda membuat jumlah lipatan (atau partisi) yang tetap dari data, menjalankan analisis pada setiap lipatan, lalu rata-rata estimasi kesalahan keseluruhan.
"Hindari mempelajari data pelatihan Anda dengan hati-hati dengan memastikan bahwa model yang terlatih berkinerja baik pada data independen."
Katakanlah Anda menyelidiki beberapa proses; Anda telah mengumpulkan beberapa data yang menggambarkannya dan Anda telah membangun model (baik statistik atau ML, tidak masalah). Tapi sekarang, bagaimana cara menilai apakah itu boleh? Mungkin sangat cocok dengan data yang dibangunnya, jadi tidak ada yang akan percaya bahwa model Anda sangat bagus menurut Anda.
Gagasan pertama adalah memisahkan subset data Anda dan menggunakannya untuk menguji model build dengan metode Anda pada data lainnya. Sekarang hasilnya benar-benar bebas-overfitting, namun (terutama untuk set kecil) Anda bisa (tidak) beruntung dan menarik (kurang) kasus yang lebih sederhana untuk diuji, membuatnya (lebih sulit) lebih mudah diprediksi ... Juga keakuratan Anda / estimasi error / goodness tidak berguna untuk perbandingan / optimisasi model, karena Anda mungkin tidak tahu apa-apa tentang distribusinya.
Jika ragu, gunakan brute force, jadi cukup meniru proses di atas, kumpulkan beberapa perkiraan akurasi / kesalahan / kebaikan dan rata-rata - dan Anda mendapatkan validasi silang. Di antara perkiraan yang lebih baik, Anda juga akan mendapatkan histogram, sehingga Anda dapat memperkirakan distribusi atau melakukan beberapa tes non-parametrik.
Dan ini dia; detail pemisahan uji-kereta adalah alasan untuk berbagai jenis CV, masih kecuali kasus yang jarang dan perbedaan kekuatan kecil yang agak setara. Memang itu adalah keuntungan besar, karena menjadikannya metode yang adil-antipeluru; sangat sulit untuk menipu itu.
Karena Anda tidak memiliki akses ke data tes pada saat pelatihan, dan Anda ingin model Anda bekerja dengan baik pada data tes yang tidak terlihat, Anda "berpura-pura" bahwa Anda memiliki akses ke beberapa data uji dengan berulang kali mensampel sebagian kecil dari data pelatihan Anda, tahan set ini saat melatih model, dan kemudian memperlakukan set bertahan sebagai proxy untuk data uji (dan pilih parameter model yang memberikan kinerja terbaik pada data yang tertahan). Anda berharap bahwa dengan secara acak mengambil sampel berbagai himpunan bagian dari data pelatihan, Anda dapat membuatnya tampak seperti data uji (dalam arti perilaku rata-rata), dan oleh karena itu parameter model yang dipelajari akan baik untuk data uji juga (yaitu, model Anda digeneralisasikan dengan baik untuk data yang tidak terlihat).