Saya bertanya-tanya bagaimana cara memilih model prediktif setelah melakukan validasi silang K-fold.
Ini mungkin ungkapan yang aneh, jadi izinkan saya menjelaskan lebih detail: setiap kali saya menjalankan validasi silang K-fold, saya menggunakan subset K dari data pelatihan, dan berakhir dengan K model yang berbeda.
Saya ingin tahu cara memilih salah satu model K, sehingga saya dapat menyajikannya kepada seseorang dan berkata "ini adalah model terbaik yang dapat kami hasilkan."
Apakah boleh memilih salah satu dari model K? Atau apakah ada semacam praktik terbaik yang terlibat, seperti memilih model yang mencapai kesalahan tes median?
cross-validation
model-selection
Berk U.
sumber
sumber
Jawaban:
Saya pikir Anda kehilangan sesuatu yang masih dalam pemahaman Anda tentang tujuan validasi silang.
Mari kita luruskan beberapa terminologi, umumnya ketika kita mengatakan 'model' kita merujuk pada metode tertentu untuk menggambarkan bagaimana beberapa data input berhubungan dengan apa yang kita coba prediksi. Kami biasanya tidak menyebut contoh tertentu dari metode itu sebagai model yang berbeda. Jadi, Anda mungkin mengatakan 'Saya memiliki model regresi linier' tetapi Anda tidak akan menyebut dua set berbeda dari koefisien yang terlatih, model yang berbeda. Setidaknya tidak dalam konteks pemilihan model.
Jadi, ketika Anda melakukan validasi silang K-fold, Anda menguji seberapa baik model Anda bisa dilatih oleh beberapa data dan kemudian memprediksi data yang belum terlihat. Kami menggunakan validasi silang untuk ini karena jika Anda berlatih menggunakan semua data yang Anda miliki, tidak ada lagi yang tersisa untuk pengujian. Anda dapat melakukan ini satu kali, katakanlah dengan menggunakan 80% data untuk berlatih dan 20% untuk menguji, tetapi bagaimana jika 20% yang Anda pilih untuk diuji ternyata mengandung banyak poin yang sangat mudah (atau sangat sulit) untuk memprediksi? Kami tidak akan menghasilkan estimasi terbaik dari kemampuan model untuk belajar dan memprediksi.
Kami ingin menggunakan semua data. Jadi untuk melanjutkan contoh perpecahan 80/20 di atas, kami akan melakukan validasi silang 5 kali lipat dengan melatih model 5 kali pada 80% data dan pengujian pada 20%. Kami memastikan bahwa setiap titik data berakhir pada set tes 20% tepat satu kali. Karena itu kami telah menggunakan setiap titik data yang kami miliki untuk berkontribusi pada pemahaman tentang seberapa baik model kami melakukan tugas belajar dari beberapa data dan memprediksi beberapa data baru.
Tetapi tujuan validasi silang bukanlah untuk menghasilkan model akhir kami. Kami tidak menggunakan 5 contoh model terlatih ini untuk melakukan prediksi nyata. Untuk itu kami ingin menggunakan semua data kami harus datang dengan model terbaik. Tujuan validasi silang adalah pengecekan model, bukan pembangunan model.
Sekarang, katakanlah kita memiliki dua model, katakanlah model regresi linier dan jaringan saraf. Bagaimana kita bisa mengatakan model mana yang lebih baik? Kita dapat melakukan validasi silang K-fold dan melihat mana yang terbukti lebih baik dalam memprediksi poin set tes. Tetapi begitu kami telah menggunakan validasi silang untuk memilih model yang berkinerja lebih baik, kami melatih model itu (apakah itu regresi linier atau jaringan saraf) pada semua data. Kami tidak menggunakan contoh model aktual yang kami latih selama validasi silang untuk model prediksi akhir kami.
Perhatikan bahwa ada teknik yang disebut agregasi bootstrap (biasanya disingkat menjadi 'bagging') yang tidak dengan cara menggunakan contoh model yang diproduksi dengan cara yang mirip dengan validasi silang untuk membangun model ensembel, tetapi itu adalah teknik canggih di luar cakupan dari pertanyaan Anda di sini.
sumber
For that we want to use all the data we have to come up with the best model possible.
- Saat melakukan pencarian grid dengan validasi silang K-fold, apakah ini berarti Anda akan menggunakan params terbaik yang ditemukan oleh pencarian grid dan cocok dengan model pada seluruh data pelatihan, dan kemudian mengevaluasi kinerja generalisasi menggunakan set tes?Biarkan saya memberikan beberapa poin selain jawaban Bogdanovist
Sekarang, ada beberapa asumsi dalam proses ini.
Jumlah terbatas kasus berarti pengukuran kinerja akan dikenakan kesalahan acak (varians) karena jumlah terbatas kasus uji. Sumber varians ini berbeda dari (dan dengan demikian menambah) model variabl instablilty.
Perbedaan dalam kinerja yang diamati adalah karena dua sumber varians ini.
"Pilihan" yang Anda pikirkan adalah pemilihan kumpulan data: memilih salah satu model pengganti berarti memilih subset sampel pelatihan dan mengklaim bahwa subset sampel pelatihan ini mengarah ke model superior. Meskipun ini mungkin benar, biasanya "keunggulan" itu palsu. Bagaimanapun, karena memilih "yang terbaik" dari model pengganti adalah optimasi berbasis data, Anda harus memvalidasi (mengukur kinerja) model yang dipilih ini dengan data baru yang tidak diketahui. Set tes dalam validasi silang ini tidak independen karena digunakan untuk memilih model pengganti.
Anda mungkin ingin melihat makalah kami, ini tentang klasifikasi di mana hal-hal biasanya lebih buruk daripada untuk regresi. Namun, ini menunjukkan bagaimana sumber-sumber varian dan bias bertambah.
Beleites, C. dan Neugebauer, U. dan Bocklitz, T. dan Krafft, C. dan Popp, J .: Perencanaan ukuran sampel untuk model klasifikasi. Anal Chim Acta, 2013, 760, 25-33.
DOI: 10.1016 / j.aca.2012.11.007
naskah diterima di arXiv: 1211.1323
sumber
picking "the best" of the surrogate models is a data-driven optimization, you'd need to validate (measure performance) this picked model with new unknown data. The test set within this cross validation is not independent as it was used to select the surrogate model.
dan dia berkataBut once we have used cross-validation to select the better performing model, we train that model (whether it be the linear regression or the neural network) on all the data.
Ini cukup umum dan sangat penting bahwa pendekatan standar ditentukanSaya menemukan artikel yang sangat bagus ini. Bagaimana Melatih Model Pembelajaran Mesin Akhir sangat membantu dalam membersihkan semua kebingungan yang saya miliki mengenai penggunaan CV dalam pembelajaran mesin.
Pada dasarnya kami menggunakan CV (mis. Split 80/20, k-fold, dll) untuk memperkirakan seberapa baik seluruh prosedur Anda (termasuk rekayasa data, pilihan model (yaitu algoritma) dan hiper-parameter, dll.) Akan tampil di masa depan yang tidak terlihat data. Dan begitu Anda telah memilih "prosedur" yang menang, model yang dipasang dari CV telah memenuhi tujuan mereka dan sekarang dapat dibuang. Anda kemudian menggunakan "prosedur" kemenangan yang sama dan melatih model akhir Anda menggunakan seluruh kumpulan data.
sumber
Itu pertanyaan yang sangat menarik. Untuk memperjelasnya, kita harus memahami perbedaan model dan evaluasi model. Kami menggunakan set pelatihan penuh untuk membangun model, dan kami berharap model ini akhirnya akan digunakan.
Evaluasi silang K lipat akan membangun model K tetapi semua akan dijatuhkan. Model K hanya digunakan untuk evaluasi. dan Ini hanya menghasilkan metrik untuk memberi tahu Anda seberapa baik model ini cocok dengan data Anda.
Misalnya, Anda memilih LinearRegression algo dan melakukan dua operasi pada set pelatihan yang sama: satu dengan validasi silang 10 kali lipat, dan yang lainnya dengan 20 kali lipat. model regresi (atau pengklasifikasi) harus sama, tetapi koefisien korelasi dan kesalahan kuadrat relatif Root berbeda.
Di bawah ini adalah dua proses untuk 10 kali lipat dan 20 kali lipat validasi silang dengan weka
Run pertama dengan 10 kali lipat
Run kedua dengan 20 kali lipat
sumber
Saya tidak yakin diskusi di atas sepenuhnya benar. Dalam validasi silang, kami dapat membagi data menjadi Pelatihan dan Pengujian untuk setiap proses. Dengan menggunakan data pelatihan saja, kita perlu menyesuaikan model dan memilih parameter tuning di setiap kelas model yang dipertimbangkan. Sebagai contoh, di Neural Nets parameter tuning adalah jumlah neuron dan pilihan untuk fungsi aktivasi. Untuk melakukan ini, satu memvalidasi silang dalam data pelatihan saja .
Setelah model terbaik di setiap kelas ditemukan, model paling cocok dievaluasi menggunakan data uji. Lingkaran validasi silang "luar" dapat digunakan untuk memberikan perkiraan kinerja data pengujian yang lebih baik serta perkiraan variabilitas. Diskusi kemudian dapat membandingkan kinerja tes untuk kelas yang berbeda, katakanlah Neural Nets vs. SVM. Satu kelas model dipilih, dengan ukuran model tetap, dan sekarang seluruh data digunakan untuk mempelajari model terbaik.
Sekarang, jika sebagai bagian dari algoritma pembelajaran mesin Anda ingin selalu memilih kelas model terbaik (katakan setiap minggu), maka bahkan pilihan ini perlu dievaluasi dalam data pelatihan! Pengukuran data uji tidak dapat digunakan untuk menilai pilihan kelas model jika itu adalah opsi dinamis.
sumber
Mengapa kami menggunakan validasi k-fold cross?
Validasi silang adalah metode untuk memperkirakan keterampilan metode pada data yang tidak terlihat. Seperti menggunakan split tes kereta.
Validasi silang secara sistematis membuat dan mengevaluasi beberapa model pada beberapa himpunan bagian dari dataset. Ini, pada gilirannya, memberikan populasi ukuran kinerja .
Ini juga membantu untuk memberikan perbandingan yang lebih bernuansa dari satu prosedur ke prosedur lainnya ketika Anda mencoba untuk memilih algoritma dan prosedur persiapan data mana yang akan digunakan.
Juga, informasi ini sangat berharga karena Anda dapat menggunakan mean dan spread untuk memberikan interval kepercayaan pada kinerja yang diharapkan pada prosedur pembelajaran mesin dalam praktiknya.
referensi
sumber