Ketika kita melakukan validasi k-fold cross, haruskah kita menggunakan classifier yang memiliki akurasi pengujian tertinggi? Apa yang umumnya pendekatan terbaik dalam mendapatkan classifier dari validasi silang?
machine-learning
cross-validation
Armon Safai
sumber
sumber
Jawaban:
Anda melakukan validasi silang ketika Anda ingin melakukan salah satu dari dua hal ini:
Pemilihan model dapat dilakukan dalam berbagai skenario:
(harap perhatikan bahwa jika Anda berdua memilih algoritma - lebih baik menyebutnya model - dan juga melakukan pencarian hyper-parameter, Anda perlu melakukan Nested Cross Validation. Apakah Nested-CV benar-benar diperlukan? )
Validasi silang memastikan sampai taraf tertentu bahwa estimasi kesalahan sedekat mungkin dengan kesalahan generalisasi untuk model tersebut (walaupun ini sangat sulit untuk diperkirakan). Saat mengamati kesalahan rata-rata di antara lipatan Anda dapat memiliki proyeksi yang baik dari kesalahan yang diharapkan untuk model yang dibangun pada dataset lengkap. Juga penting untuk mengamati varians prediksi, ini adalah, seberapa banyak kesalahan bervariasi dari lipatan ke lipatan. Jika variasinya terlalu tinggi (nilai yang sangat berbeda) maka modelnya cenderung tidak stabil. Bootstrap adalah metode lain yang memberikan perkiraan yang baik dalam hal ini. Saya sarankan untuk membaca dengan seksama bagian 7 pada Buku "Elemen Pembelajaran Statistik", tersedia secara gratis di: ELS-Standford
Seperti yang telah disebutkan sebelumnya Anda tidak boleh mengambil model yang dibangun di lipatan. Sebagai gantinya, Anda harus membangun kembali model dengan set data lengkap (yang telah dibagi menjadi beberapa lipatan). Jika Anda memiliki set tes yang terpisah, Anda dapat menggunakannya untuk mencoba model akhir ini, mendapatkan kesalahan yang sama (dan pasti lebih tinggi) daripada yang diperoleh oleh CV. Anda harus, bagaimanapun, mengandalkan estimasi kesalahan yang diberikan oleh prosedur CV.
Setelah melakukan CV dengan model yang berbeda (kombinasi algoritma, dll) memilih salah satu yang berperforma lebih baik mengenai kesalahan dan varians di antara lipatan. Anda perlu membangun kembali model dengan seluruh dataset. Dalam hal ini muncul kebingungan umum: kita secara umum merujuk pada pemilihan model, berpikir bahwa model tersebut adalah model yang siap untuk diprediksi yang dibangun pada data, tetapi dalam hal ini mengacu pada kombinasi algoritma + prosedur preprocesing yang Anda terapkan. Jadi, untuk mendapatkan model aktual yang Anda butuhkan untuk membuat prediksi / klasifikasi, Anda perlu membangunnya menggunakan kombinasi pemenang pada seluruh dataset.
Hal terakhir yang perlu diperhatikan adalah bahwa jika Anda menerapkan segala jenis preprocessing, penggunaan informasi kelas (pemilihan fitur, pengurangan dimensi LDA, dll) ini harus dilakukan di setiap flip, dan sebelumnya tidak pada data. Ini adalah aspek kritis. Seharusnya melakukan hal yang sama jika Anda menerapkan metode preprocessing yang melibatkan informasi langsung data (PCA, normalisasi, standardisasi, dll). Anda dapat, bagaimanapun, menerapkan preprocessing yang tidak tergantung dari data (menghapus variabel mengikuti pendapat ahli, tetapi ini agak jelas). Video ini dapat membantu Anda ke arah itu: CV yang benar dan yang salah
Di sini, penjelasan yang bagus tentang subjek: CV dan pemilihan model
sumber
Tidak. Anda tidak memilih pengklasifikasi k yang dibangun selama validasi silang k-fold. Pertama-tama, tujuan validasi silang bukan untuk menghasilkan model prediktif, tetapi untuk mengevaluasi seberapa akurat model prediktif akan dilakukan dalam praktik. Kedua, demi argumen, katakanlah Anda menggunakan k-fold cross-validation dengan k = 10 untuk mencari tahu mana dari tiga algoritma klasifikasi yang paling cocok untuk menyelesaikan masalah klasifikasi yang diberikan. Dalam hal ini, data dibagi secara acak menjadi bagian k dengan ukuran yang sama. Salah satu bagian dicadangkan untuk pengujian dan sisanya k-1 akan digunakan untuk pelatihan. Proses validasi silang diulangi k (lipat) kali sehingga pada setiap iterasi bagian yang berbeda digunakan untuk pengujian. Setelah menjalankan cross-validation, Anda melihat hasil dari setiap lipatan dan bertanya-tanya algoritma klasifikasi mana (yang bukan model yang terlatih!) Yang paling cocok. Anda tidak ingin memilih algoritme yang memiliki akurasi tes tertinggi pada satu dari 10 iterasi, karena mungkin itu hanya terjadi secara acak bahwa data uji pada iterasi tertentu berisi contoh yang sangat mudah, yang kemudian mengarah pada akurasi tes yang tinggi. Yang ingin Anda lakukan, adalah memilih algoritma yang menghasilkan akurasi terbaik yang kemudian mengarah pada akurasi tes yang tinggi. Yang ingin Anda lakukan, adalah memilih algoritma yang menghasilkan akurasi terbaik yang kemudian mengarah pada akurasi tes yang tinggi. Yang ingin Anda lakukan, adalah memilih algoritma yang menghasilkan akurasi terbaikrata-rata untuk semua lipatan k . Sekarang Anda telah memilih algoritme, Anda dapat melatihnya menggunakan seluruh data pelatihan dan mulai membuat prediksi di alam bebas.
Ini di luar cakupan pertanyaan ini, tetapi Anda juga harus mengoptimalkan hyperparameters model (jika ada) untuk mendapatkan hasil maksimal dari algoritma yang dipilih. Orang biasanya melakukan optimasi hiperparameter menggunakan validasi silang.
sumber
Jadi mari kita asumsikan Anda memiliki pelatihan di mana Anda menggunakan 80% sebagai pelatihan dan sisanya 20% sebagai data validasi. Kita dapat melatih 80% dan menguji 20% yang tersisa tetapi ada kemungkinan bahwa 20% yang kita ambil tidak sesuai dengan data pengujian aktual dan mungkin berkinerja buruk. Jadi, untuk mencegah ini kita bisa menggunakan validasi k-fold cross.
Jadi katakanlah Anda memiliki model yang berbeda dan ingin tahu mana yang lebih baik dengan dataset Anda, validasi k-fold cross berfungsi dengan baik. Anda dapat mengetahui kesalahan validasi pada kinerja validasi k dan memilih model yang lebih baik berdasarkan itu. Ini umumnya tujuan untuk validasi silang k-fold.
Datang ke hanya satu model dan jika Anda memeriksa dengan k-fold cross-validation, Anda bisa mendapatkan perkiraan kesalahan data pengujian, tetapi
when you are actually training it finally, you can use the complete training data
(Karena diasumsikan di sini bahwa seluruh data akan bersama-sama berkinerja lebih baik daripada bagian dari itu Mungkin kadang-kadang tidak demikian, tetapi ini adalah asumsi umum.)sumber