Dengan seluruh data yang saya maksud kereta + tes + validasi
Setelah saya memperbaiki hyperparameter saya menggunakan data validasi, dan memilih model menggunakan data uji, bukankah lebih baik memiliki model yang dilatih pada seluruh data sehingga parameter lebih terlatih daripada memiliki model yang dilatih hanya pada melatih data
machine-learning
Apoorva Abhishekh
sumber
sumber
Jawaban:
Pertanyaannya adalah asumsi yang salah. Banyak orang melakukan apa yang Anda katakan "tidak bisa" lakukan.
Faktanya, implementasi pencarian grid dalam paket sklearn yang digunakan secara luas tidak hanya itu. Kecuali
refit=False
, itu akan melatih model akhir menggunakan seluruh data.Saya pikir untuk beberapa hiperparameter ini mungkin tidak terlalu diinginkan, karena mereka relatif terhadap volume data. Misalnya, pertimbangkan
min_samples_leaf
taktik pra-pemangkasan untuk pohon keputusan . Jika Anda memiliki lebih banyak data, pra-pemangkasan mungkin tidak berfungsi seperti yang Anda inginkan.Tetapi sekali lagi, kebanyakan orang benar-benar berlatih menggunakan seluruh data setelah cross-validation, sehingga mereka berakhir dengan model terbaik.
Tambahan: @NeilSlater mengatakan di bawah ini bahwa beberapa orang melakukan penahanan di atas CV. Dengan kata lain, mereka memiliki tes kereta split dan kemudian melakukan pemilihan model pada pelatihan. Menurutnya, mereka melatih ulang menggunakan set pelatihan asli, tetapi tidak set pengujian. Set pengujian kemudian digunakan untuk melakukan estimasi model akhir. Secara pribadi, saya melihat tiga kelemahan dalam hal ini: (a) tidak menyelesaikan masalah yang saya sebutkan dengan beberapa hiperparameter tergantung pada volume pelatihan karena Anda tetap berlatih kembali, (b) ketika menguji banyak model, saya lebih suka lebih canggih metode seperti validasi silang bersarang sehingga tidak ada data yang terbuang, dan (c) tahan adalah metode yang mengerikan untuk menyimpulkan bagaimana model akan digeneralisasi ketika Anda memiliki sedikit data.
sumber
refit
opsi fungsi GridSearchCV. Itu tidak cocok untuk memasukkan data uji yang ditahan (bahkan tidak bisa melihat data itu).Ya kamu bisa.
Karena data uji seharusnya berasal dari distribusi serupa untuk melatih data, Anda tidak akan merusak model Anda. Jika Anda telah melatih model dengan benar, maka Anda tidak akan melihat perubahan signifikan (kecuali metrik akurasi yang lebih baik pada data tes / validasi sebelumnya).
Tetapi jarang benar bahwa data pengujian berasal dari distribusi yang sama persis dengan data kereta, jadi dalam skenario kasus aplikasi nyata Anda mungkin mendapatkan generalisasi model yang lebih baik.
sumber
Jawaban untuk pertanyaan ini tergantung pada algoritma pelatihan (teknologi) yang Anda gunakan. Sebagai contoh, saya telah melihat beberapa pendekatan dalam klasifikasi ensemble di mana pelatihan dan validasi (tetapi tidak menguji) set digabungkan pada akhirnya. Sangat penting untuk mengetahui bahwa bahkan validasi digunakan terutama untuk menentukan parameter hiper beberapa parameter hiper ini dapat menjadi fungsi dari data yang digunakan untuk pelatihan. Misalnya, dalam validasi DNN yang digunakan untuk mengetahui kapan harus berhenti, karena overfitting dapat terjadi sebagai akibat dari penyetelan parameter (bobot) jaringan, kami memerlukan cara untuk mengetahui kapan harus berhenti. Tanpa set validasi, Anda akan berjalan membabi buta dalam proses pelatihan. Di sisi lain, jika Anda menggunakan jumlah iterasi yang persis sama seperti yang ditentukan sebelumnya, ada masalah besar yang tidak akan Anda peroleh dari sampel tambahan ini. Set pengujian tidak boleh disentuh sama sekali, seperti ditunjukkan di atas tanpa set pengujian Anda tidak akan memiliki metode untuk mengevaluasi model Anda. Ini adalah perjudian, Anda TIDAK BISA menyampaikan model atau solusi apa pun tanpa estimasi keakuratannya pada distribusi data yang sebenarnya (yang diwakili oleh data pengujian).
sumber