Bagaimana cara memilih model dari output [validasi silang luar] ini?
Jawaban singkat: Anda tidak.
Perlakukan validasi palang dalam sebagai bagian dari prosedur pemasangan model. Itu berarti bahwa pemasangan termasuk pemasangan parameter-hiper (di sinilah validasi silang dalam bersembunyi) sama seperti rutinitas model esitmasi lainnya.
Validasi silang luar memperkirakan kinerja pendekatan pemasangan model ini. Untuk itu Anda menggunakan asumsi yang biasa
- yang model pengganti luar yang setara dengan model "nyata" yang dibangun oleh dengan semua data.k
model.fitting.procedure
- Atau, dalam kasus 1. rusak (bias pesimis dari resampling validasi), setidaknya model pengganti sama dengan satu sama lain.
Ini memungkinkan Anda untuk mengumpulkan (rata-rata) hasil tes. Ini juga berarti bahwa Anda tidak perlu memilih di antara mereka karena Anda menganggap bahwa mereka pada dasarnya sama. Pemecahan asumsi yang kedua dan lebih lemah ini adalah ketidakstabilan model.k
Jangan tidak memilih yang terbaik yang tampaknya dari model pengganti - yang biasanya akan hanya "panen" pengujian ketidakpastian dan mengarah ke bias optimis.k
Jadi bagaimana saya bisa menggunakan CV bersarang untuk pemilihan model?
The inner CV tidak seleksi.
Tampak bagi saya bahwa memilih model terbaik dari model-model pemenang K tidak akan menjadi perbandingan yang adil karena masing-masing model dilatih dan diuji pada berbagai bagian dataset.
Anda benar karena itu bukan ide yang baik untuk memilih salah satu model pengganti . Tapi Anda salah tentang alasannya. Alasan sebenarnya: lihat di atas. Fakta bahwa mereka tidak dilatih dan diuji pada data yang sama tidak "sakit" di sini.k
- Tidak memiliki data pengujian yang sama: seperti yang Anda ingin klaim setelah itu bahwa hasil pengujian digeneralisasikan ke data yang tidak pernah dilihat, ini tidak dapat membuat perbedaan.
- Tidak memiliki data pelatihan yang sama:
- jika model stabil, ini tidak membuat perbedaan: Stabil di sini berarti bahwa model tidak berubah (banyak) jika data pelatihan "terganggu" dengan mengganti beberapa kasus dengan kasus lain.
- jika model tidak stabil, tiga pertimbangan penting:
- Anda benar-benar dapat mengukur apakah dan sejauh mana hal ini terjadi, dengan menggunakan iterated / repeated fold cross validation. Itu memungkinkan Anda untuk membandingkan hasil validasi silang untuk kasus yang sama yang diprediksi oleh model berbeda yang dibangun di atas data pelatihan yang sedikit berbeda.k
- Jika model tidak stabil, varians yang diamati pada hasil pengujian validasi silang meningkat: Anda tidak hanya memiliki varians karena fakta bahwa hanya sejumlah kasus yang diuji secara total, tetapi memiliki varian tambahan karena ketidakstabilan model (varians dalam kemampuan prediksi).k
- Jika ketidakstabilan adalah masalah nyata, Anda tidak dapat memperkirakan dengan baik kinerja untuk model "nyata".
Yang membawa saya ke pertanyaan terakhir Anda:
Apa jenis analisis / pemeriksaan yang dapat saya lakukan dengan skor yang saya dapatkan dari lipatan K luar?
- periksa stabilitas prediksi (gunakan iterated / repeat-validasi silang)
periksa stabilitas / variasi parameter hiper yang dioptimalkan.
Untuk satu hal, parameter hiper sebar yang liar mungkin mengindikasikan bahwa pengoptimalan internal tidak berfungsi. Untuk hal lain, ini memungkinkan Anda untuk memutuskan hyperparameters tanpa langkah optimasi yang mahal dalam situasi serupa di masa depan. Dengan mahal saya tidak merujuk pada sumber daya komputasi tetapi pada kenyataan bahwa informasi "biaya" ini yang mungkin lebih baik digunakan untuk memperkirakan parameter model "normal".
periksa perbedaan antara perkiraan dalam dan luar dari model yang dipilih. Jika ada perbedaan besar (bagian dalam menjadi sangat optimis), ada risiko bahwa optimisasi bagian dalam tidak berfungsi dengan baik karena overfitting.
update @ user99889's pertanyaan: Apa yang harus dilakukan jika CV luar menemukan ketidakstabilan?
Pertama-tama, mendeteksi dalam loop CV luar bahwa model tidak menghasilkan prediksi yang stabil dalam hal itu tidak benar-benar berbeda dari mendeteksi bahwa kesalahan prediktif terlalu tinggi untuk aplikasi. Ini adalah salah satu kemungkinan hasil validasi model (atau verifikasi) yang menyiratkan bahwa model yang kita miliki tidak sesuai dengan tujuannya.
Dalam komentar yang menjawab @davips, saya berpikir untuk mengatasi ketidakstabilan di CV dalam - yaitu sebagai bagian dari proses optimisasi model.
Tetapi Anda tentu saja benar: jika kita mengubah model kami berdasarkan temuan-temuan dari CV luar, diperlukan lagi pengujian independen terhadap model yang diubah.
Namun, ketidakstabilan dalam CV luar juga akan menjadi tanda bahwa optimasi tidak diatur dengan baik - jadi menemukan ketidakstabilan dalam CV luar menyiratkan bahwa CV dalam tidak menghukum ketidakstabilan dengan cara yang diperlukan - ini akan menjadi poin utama saya kritik dalam situasi seperti itu. Dengan kata lain, mengapa optimasi memungkinkan / mengarah ke model pakaian berlebihan?
Namun, ada satu kekhasan di sini bahwa IMHO dapat memaafkan perubahan lebih lanjut dari model "final" setelah pertimbangan yang cermat dari keadaan yang tepat : Ketika kami mendeteksi overfitting, setiap perubahan yang diajukan (lebih sedikit df / lebih ketat atau agregasi) ke model akan berada di arah yang kurang overfitting (atau setidaknya hyperparameters yang kurang rentan terhadap overfitting). Tujuan dari pengujian independen adalah untuk mendeteksi overfitting - underfitting dapat dideteksi oleh data yang sudah digunakan dalam proses pelatihan.
Jadi jika kita berbicara, katakanlah, tentang lebih lanjut mengurangi jumlah variabel laten dalam model PLS yang akan jinak (jika perubahan yang diusulkan akan menjadi jenis model yang sama sekali berbeda, katakanlah PLS, bukan SVM, semua taruhan akan dimatikan. ), dan saya akan lebih santai tentang hal itu jika saya tahu bahwa kita masih dalam tahap pemodelan menengah - setelah semua, jika model yang dioptimalkan masih tidak stabil, tidak ada pertanyaan bahwa lebih banyak kasus diperlukan. Selain itu, dalam banyak situasi, Anda pada akhirnya harus melakukan studi yang dirancang untuk menguji berbagai aspek kinerja dengan benar (misalnya generalisasi untuk data yang diperoleh di masa mendatang). Namun, saya bersikeras bahwa proses pemodelan penuh perlu dilaporkan, dan bahwa implikasi dari perubahan akhir ini perlu dibahas dengan cermat.
Selain itu, agregasi termasuk dan out-of-bag analog estimasi kinerja CV akan mungkin dari hasil yang sudah tersedia - yang merupakan jenis lain "post-processing" dari model yang saya bersedia mempertimbangkan jinak di sini. Namun sekali lagi, akan lebih baik jika penelitian ini dirancang dari awal untuk memeriksa bahwa agregasi tidak memberikan keuntungan dibandingkan predisi individu (yang merupakan cara lain untuk mengatakan bahwa masing-masing model stabil).
Pembaruan (2019): semakin saya memikirkan situasi ini, semakin saya mendukung pendekatan "validasi salib bersarang tampaknya tanpa bersarang" .
Selain jawaban sempurna cebeleites (+1), gagasan dasarnya adalah bahwa validasi silang digunakan untuk menilai kinerja suatu metode untuk pemasangan suatu model, bukan dari model itu sendiri. Jika Anda perlu melakukan pemilihan model, maka Anda perlu melakukan itu secara independen di setiap lipatan prosedur validasi silang, karena itu merupakan bagian integral dari prosedur pemasangan model. Jika Anda menggunakan prosedur pemilihan model berbasis validasi silang, ini berarti Anda berakhir dengan validasi silang bersarang. Sangat membantu untuk mempertimbangkan tujuan dari setiap validasi silang - satu untuk pemilihan model, yang lain untuk estimasi kinerja.
Saya akan membuat model akhir saya dengan mencocokkan model (termasuk pemilihan model) ke seluruh dataset, setelah menggunakan validasi silang bersarang untuk mendapatkan gambaran tentang kinerja yang bisa saya harapkan dari model itu.
sumber
get an idea of the performance
?Saya tidak berpikir ada orang yang benar-benar menjawab pertanyaan pertama. Dengan "Nested cross-validation", saya pikir maksudnya menggabungkannya dengan GridSearch. Biasanya GridSearch memiliki CV bawaan dan mengambil parameter pada berapa banyak lipatan yang ingin kami uji. Menggabungkan kedua hal itu menurut saya merupakan praktik yang baik tetapi model dari GridSearch dan CrossValidation bukanlah model akhir Anda. Anda harus memilih parameter terbaik dan melatih model baru dengan semua data Anda pada akhirnya, atau bahkan melakukan CrossValidation di sini juga pada data yang tidak terlihat dan kemudian jika modelnya benar-benar baik Anda melatihnya pada semua data Anda. Itu adalah model terakhir Anda.
sumber
GridSearchCV(refit=True)
benar-benar mereparasi model pada data LENGKAP menggunakan parameter terbaik, sehingga langkah tambahan tidak diperlukan. Lihat dokumen