Validasi silang dan penyetelan parameter


17

Adakah yang bisa memberi tahu saya apa yang sebenarnya dihasilkan oleh analisis validasi silang? Apakah hanya akurasi rata-rata atau apakah itu memberikan model dengan parameter disetel?

Karena, saya mendengar bahwa validasi silang digunakan untuk penyetelan parameter.

Jawaban:


26

Validasi silang memberikan ukuran akurasi out-of-sample dengan rata-rata beberapa partisi acak data ke dalam pelatihan dan sampel uji. Ini sering digunakan untuk penyetelan parameter dengan melakukan validasi silang untuk beberapa (atau banyak) nilai yang mungkin dari suatu parameter dan memilih nilai parameter yang memberikan kesalahan rata-rata cross validasi terendah.

Jadi proses itu sendiri tidak memberi Anda perkiraan model atau parameter, tetapi Anda dapat menggunakannya untuk membantu memilih di antara alternatif.


12

Untuk menambah jawaban Jonathan.

Namun, jika Anda menggunakan validasi silang untuk penyetelan parameter, sampel keluar sebenarnya menjadi bagian dari model Anda. Jadi Anda perlu sampel independen lain untuk mengukur kinerja model akhir dengan benar.

Dipekerjakan untuk mengukur kinerja model, validasi silang dapat mengukur lebih dari sekedar akurasi rata-rata:
Hal kedua yang dapat Anda ukur dengan validasi silang adalah stabilitas model sehubungan dengan perubahan data pelatihan: validasi silang membangun banyak model "pengganti" yang dilatih dengan set pelatihan yang sedikit berbeda. Jika model stabil, semua model pengganti ini setara, jika pelatihan tidak stabil, model pengganti banyak bervariasi. Anda dapat menghitung ini "sangat bervariasi" misalnya sebagai varian prediksi model pengganti yang berbeda untuk sampel yang sama (dalam iterated / validasi silang berulang) atau misalnya sebagai varian parameter parameter model pengganti.


3

Untuk menambah jawaban sebelumnya, kami akan mulai dari awal:

Ada beberapa cara Anda bisa menyesuaikan model Anda dengan data pelatihan, ada yang jelas, ada juga yang kurang. Pertama, dan yang paling penting adalah overfitting dari parameter pelatihan (bobot) ke data (parameter pemasangan kurva dalam regresi logistik, bobot jaringan dalam jaringan saraf dll.). Kemudian Anda akan memodelkan derau dalam data - jika Anda berpakaian Anda tidak hanya menangkap fungsi pembangkit yang mendasarinya, tetapi juga keacakan karena ukuran sampel dan fakta bahwa sampel bukanlah representasi populasi yang sempurna. Overfitting ini dapat dikurangi sampai batas tertentu dengan menghukum atribut tertentu (dalam kompleksitas umum) dari model. Ini dapat dilakukan dengan menghentikan pelatihan setelah kinerja pada sampel kereta tidak lagi meningkat secara signifikan, dengan menghapus beberapa neuron dari jaringan saraf (disebut putus sekolah),https://ieeexplore.ieee.org/document/614177/ ) dll). Namun, strategi regularisasi ini sendiri parametrized (kapan Anda berhenti ?, berapa banyak neuron yang akan diangkat? Dll.). Selain itu sebagian besar model pembelajaran mesin memiliki sejumlah parameter yang perlu diatur sebelum pelatihan dimulai. Dan parameter-hiper ini disetel dalam fase penyetelan parameter.

Itu membawa kita ke tipe overfitting yang kedua, dan lebih halus: overfitting hyper-parameter. Validasi silang dapat digunakan untuk menemukan parameter hiper "terbaik", dengan melatih model Anda berulang kali dari awal pada k-1 lipatan sampel dan menguji pada lipatan terakhir.

Jadi bagaimana tepatnya dilakukan? Bergantung pada strategi pencarian (diberikan oleh tenshi), Anda mengatur parameter hiper-model dan melatih kali model Anda, setiap kali menggunakan lipatan tes yang berbeda. Anda "ingat" kinerja rata-rata model pada semua lipatan uji dan ulangi seluruh prosedur untuk satu set hiper-parameter lain. Kemudian Anda memilih serangkaian parameter hiper yang sesuai dengan kinerja terbaik selama cross-validation. Seperti yang Anda lihat, biaya perhitungan dari prosedur ini sangat tergantung pada jumlah set parameter-hyper yang perlu dipertimbangkan. Itu sebabnya beberapa strategi untuk memilih set ini telah dikembangkan (di sini saya akan menggeneralisasi apa yang dikatakan tenshi):

  1. Grid pencarian: untuk setiap hiper-parameter Anda menghitung sebuah terbatas jumlah kemungkinan nilai. Kemudian prosedur ini dilakukan untuk semua kombinasi parameter hiper yang disebutkan. Jelas, jika Anda memiliki parameter hiper kontinu, Anda tidak dapat mencoba semuanya.
  2. Pencarian kisi acak: mirip dengan pencarian kisi normal, tetapi kali ini Anda tidak mencoba semua kombinasi secara mendalam, melainkan sampel beberapa kali tetap untuk semua nilai yang mungkin. Perhatikan bahwa di sini dimungkinkan untuk tidak hanya menyebutkan nilai yang mungkin untuk parameter-hiper, tetapi Anda juga dapat menyediakan distribusi untuk sampel dari.
  3. BayesianSearch - kombinasi nilai parameter-hiper dipilih untuk memaksimalkan peningkatan skor yang diharapkan. Untuk lebih lanjut: http://papers.nips.cc/paper/4522-praktis-bayesian-optimisasi-of-machine-learning-algorithms.pdf . Dan perpustakaan yang hanya berurusan dengan itu: https://github.com/hyperopt/hyperopt . Karena tidak mudah untuk digabungkan dengan sklearn seperti yang direkomendasikan tenshi, gunakan hanya jika Anda tidak bekerja dengan sklearn.
  4. Cara lain untuk pencarian terbimbing dalam ruang hyper-parameter. Dari pengalaman saya, mereka jarang digunakan, jadi saya tidak akan membahasnya di sini.

Namun ini bukan akhir dari cerita, karena parameter-hyper dapat (dan akan) juga menyesuaikan data. Untuk sebagian besar kasus, Anda hanya bisa hidup dengan itu, tetapi jika Anda ingin memaksimalkan kekuatan generalisasi model Anda, Anda mungkin ingin mencoba dan mengatur parameter hiper juga. Pertama, Anda dapat menilai kinerja data out-of-sample sedikit lebih baik dengan menggunakan pencarian grid bersarang (detail: http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html , diskusi: diskusi: validasi lintas bersarang untuk pemilihan model), atau cukup gunakan set validasi yang tidak digunakan untuk penyetelan hyper-parameter. Sedangkan untuk regularisasi dalam ruang hyper-parameter, ini adalah pertanyaan terbuka. Beberapa ide termasuk memilih bukan set nilai hiper-parameter terbaik, tetapi sesuatu yang lebih dekat ke tengah; alasannya adalah sebagai berikut: nilai parameter-hiper terbaik kemungkinan besar menyesuaikan data hanya karena kinerjanya lebih baik daripada data kereta yang lain, parameter buruk hanya buruk, tetapi yang di tengah mungkin dapat mencapai generalisasi yang lebih baik daripada yang terbaik . Andrew Ng menulis makalah tentang itu. Pilihan lain adalah membatasi ruang pencarian Anda (Anda mengatur dengan memperkenalkan bias kuat di sini - nilai di luar ruang pencarian tidak akan pernah dipilih dengan jelas).

Komentar samping: menggunakan akurasi sebagai metrik kinerja dalam banyak kasus adalah ide yang sangat buruk , lihat skor f1 dan f_beta - metrik ini dalam kebanyakan kasus akan mencerminkan dengan lebih baik apa yang sebenarnya Anda coba optimalkan dalam masalah klasifikasi biner.

Untuk meringkas: validasi silang dengan sendirinya digunakan untuk menilai kinerja model pada data out-of-sample, tetapi juga dapat digunakan untuk menyetel parameter hiper bersama dengan salah satu strategi pencarian dalam ruang parameter hiper. Menemukan parameter-hiper yang baik memungkinkan untuk menghindari atau setidaknya mengurangi overfitting, tetapi perlu diingat bahwa parameter-hiper juga dapat menyesuaikan data.


2

Jika Anda berasal dari latar belakang scikit-learn, jawaban ini mungkin bisa membantu.

k-fold cross-validation digunakan untuk membagi data menjadi kpartisi, estimator kemudian dilatih tentang k-1partisi dan kemudian diuji padakth partisi. Seperti ini, memilih partisi mana yang harus menjadi kthpartisi, ada kkemungkinan. Karenanya, Anda mendapatkan khasil dari semua kkemungkinan estimator Anda.

ini adalah metode yang mahal secara komputasi, tetapi jika Anda akan mencoba penduga yang berbeda, Anda dapat mencoba ketiganya untuk melakukan penyetelan hyperparameter bersama dengan CV:

saya. GridSearchCV - daftar lengkap dari semua P dan C yang mungkin untuk hyperparameters untuk semua estimator. Pada akhirnya memberikan hiperparameter terbaik menggunakan rata-rata penduga rata-rata CV itu.

ii. RandomizedSearchCV - Tidak melakukan semua P dan C dari hiperparameter, tetapi pada pendekatan acak, memberikan penaksir yang paling akurat dan akurat yang mungkin lebih menghemat komputasi.

aku aku aku. BayesSearchCV - Bukan bagian dariscikit-learn tetapi melakukan optimasi Bayesian untuk melakukan pencarian acak dan hasil yang sesuai.

tl: dr : CV hanya digunakan untuk menghindari bias tinggi dan varians tinggi untuk Anda penaksir karena data yang Anda lewati. Semoga bermanfaat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.