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