Bagaimana memilih classifier setelah cross-validation?

13

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?

Armon Safai
sumber
Saya pikir pertanyaan ini sangat tergantung pada metrik yang digunakan untuk menentukan "pendekatan terbaik". Secara kuantitatif banyak orang menggunakan akurasi, tetapi tergantung pada set data, metrik lain dapat digunakan seperti rata-rata Harmonik seperti Skor-F1. Jadi pilihan metrik bisa sama pentingnya.
Nathan McCoy
@NathanMcCoy dengan asumsi kita memilih akurasi, kita akan memilih classifier dengan akurasi tes tertinggi?
Armon Safai
Tentu! Hanya mencoba menyebutkan sesuatu yang lain untuk dipikirkan :)
Nathan McCoy

Jawaban:

15

Anda melakukan validasi silang ketika Anda ingin melakukan salah satu dari dua hal ini:

  • Pemilihan Model
  • Estimasi Kesalahan Model

Pemilihan model dapat dilakukan dalam berbagai skenario:

  • Memilih satu algoritma vs lainnya untuk masalah / dataset tertentu
  • Memilih parameter-hyper dari algoritma tertentu untuk masalah / dataset tertentu

(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

Javierfdr
sumber
Saya mengerti, apakah Anda benar-benar perlu memiliki data pengujian yang terpisah atau dapatkah Anda hanya melatih pengklasifikasi pada 100% dari semua data yang Anda miliki karena kami telah melakukan validasi silang dan mendapatkan perkiraan kesalahan pengujian untuk model?
Armon Safai
+1 untuk "pilih salah satu yang berperforma lebih baik terkait kesalahan dan variansinya di antara lipatan ". Semua orang tampaknya mengabaikan perbedaan di antara lipatan saat memilih model.
stmax
Mengapa saya harus peduli dengan kesalahan tes jika hanya kesalahan CV yang saya pedulikan? Saya bertanya karena Anda menulis "benar-benar perkiraan kesalahan yang diberikan oleh prosedur CV."
HelloWorld
Pertanyaan lain. Bagaimana jika model terbaik dari CV bukan model terbaik saat dibuat untuk seluruh dataset?
HelloWorld
1
Anda membangun model pada 100% data, artinya ini pada 100% data yang digunakan untuk validasi silang. Jika sebelumnya Anda membagi data asli pada 80% -20% untuk pelatihan dan tes lebih lanjut, maka Anda melakukan CV pada 80%, pilih model dan latih keseluruhan 80%. Memiliki set tes dalam kasus ini (20%) hanya memungkinkan Anda untuk melihat bagaimana berperilaku dengan data baru yang tidak terlihat (Anda dapat menganggapnya sebagai data yang tersedia di masa mendatang), tetapi estimasi kesalahan yang Anda gunakan adalah yang dari CV. . Mudah-mudahan itu akan menghasilkan kesalahan serupa dengan data baru jika itu adalah model yang baik (bahwa 20%, atau sebenarnya data baru). @ArmonSafai
Javierfdr
8

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.

tuomastik
sumber
Saya pikir validasi k-fold menciptakan k model yang berbeda karena ada 10 set data pelatihan yang berbeda.
Armon Safai
Lihat jawaban saya yang diperbarui. Saya memperbaikinya untuk menjawab pertanyaan lebih langsung dan menjelaskan lebih baik dengan sebuah contoh.
tuomastik
saya mengerti, jadi ketika Anda akhirnya melatih classifier Anda, apakah Anda menggunakan SEMUA data Anda untuk melatih classifier setelah Anda memilih algoritma dari validasi silang
Armon Safai
Ya, jika Anda tidak ingin melakukan analisis lebih lanjut, seperti optimasi hiperparameter, yang memerlukan validasi silang bersarang di mana loop CV dalam menangani penyetelan hyperparameter dan loop CV luar mengevaluasi kinerja model pada dataset independen dengan optimal hiperparameter.
tuomastik
1

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.)

Hima Varsha
sumber
Sooo ketika kita melakukan validasi silang, kita hanya memilih model yang memiliki akurasi pengujian tertinggi?
Armon Safai
ketika Anda mengatakan tes, maksud Anda tes dataset validasi bukan?
Hima Varsha
ya itulah yang saya maksud
Armon Safai
setelah kami menggunakan validasi silang untuk memilih model yang berkinerja lebih baik (misalnya Anda memiliki 2 model-regresi linier atau jaringan saraf), kami melatih model itu (apakah itu regresi linier atau jaringan saraf) pada semua data
Hima Varsha
1
@HimaVarsha jadi jika kita memutuskan untuk mengambil rata-rata, bagaimana kita memilih "pengelompokan rata-rata"?
Armon Safai