Setelah melakukan pencarian kisi-kisi untuk setiap model pengganti, Anda dapat dan harus memeriksa beberapa hal:
- variasi parameter yang dioptimalkan (di sini dan C ).
Apakah parameter optimal stabil? Jika tidak, kemungkinan besar Anda dalam masalah.γC
- Bandingkan kinerja laporan validasi lintas dalam dan luar yang dilaporkan.
Jika validasi silang bagian dalam (yaitu penyetelan) terlihat jauh lebih baik daripada bagian luar (validasi model akhir), maka Anda juga berada dalam masalah: Anda overfitting. Ada risiko besar, bahwa parameter yang disetel tidak optimal sama sekali. Namun, jika validasi silang luar dilakukan dengan benar (semua set tes benar-benar independen dari masing-masing model pengganti), maka setidaknya Anda masih memiliki perkiraan kinerja model yang tidak bias (!). Tetapi Anda tidak dapat memastikan bahwa itu optimal.
- Seberapa jelas optimalnya? Apakah kinerja menurun dengan cepat untuk parameter suboptimal? Seberapa baik kinerja yang optimal?
Ada banyak hal untuk dikatakan tentang overfitting dengan pemilihan model. Namun, perlu diingat bahwa varians dan bias optimis dapat benar-benar menyakitkan
- varians berarti bahwa Anda mungkin secara tidak sengaja berakhir cukup jauh dari parameter hiper yang benar-benar optimal.
- tetapi juga bias bisa menyakitkan: jika Anda overfitting, Anda dapat mengalami situasi di mana banyak model terlihat sempurna untuk validasi salib batin (tetapi mereka tidak benar-benar). Dalam hal ini, penyetelan bisa tersesat karena tidak mengenali perbedaan antara model.
- Jika bias tergantung pada parameter-hiper, Anda berada dalam masalah besar.
Jika Anda tertarik pada sebuah contoh dan Anda dapat membaca bahasa Jerman, saya dapat membuat tesis Diplom saya online.
Dalam pengalaman saya, menyetel hyperparameters adalah ide yang sangat efektif untuk overfitting ...
Sekarang, jika Anda menyadari bahwa Anda overfitting, Anda memiliki dua pilihan:
- melaporkan bahwa pengoptimalan memiliki masalah dengan overfitting tetapi Anda melakukan validasi luar yang tepat yang menghasilkan ... (hasil validasi lintas silang).
- membatasi kerumitan model. Salah satu cara melakukannya adalah memperbaiki parameter-hiper:
Sebagai alternatif untuk menyetel hiper-parameter untuk setiap set pelatihan, Anda bisa menentukan sebelumnya (hiper) parameter (yaitu memperbaikinya sebelumnya). Saya melakukan itu sebanyak mungkin untuk model saya karena saya biasanya memiliki kasus lebih sedikit daripada yang Anda miliki, lihat di bawah.
Namun, perbaikan ini harus benar-benar dan jujur dilakukan sebelumnya: misalnya saya bertanya kepada rekan kerja untuk parameter yang dioptimalkan pada kumpulan data yang serupa (percobaan independen) atau melakukan pra-percobaan, termasuk pencarian grid pada parameter. Eksperimen pertama itu kemudian digunakan untuk memperbaiki beberapa parameter eksperimental serta parameter model untuk eksperimen nyata dan analisis data. Lihat di bawah untuk penjelasan lebih lanjut.
Tentu saja dimungkinkan untuk melakukan pengujian yang tepat pada model yang dioptimalkan secara otomatis (validasi ganda atau bertumpuk), tetapi ukuran sampel Anda mungkin tidak memungkinkan pemisahan data dua kali .
Dalam situasi itu, IMHO jauh lebih baik untuk melaporkan perkiraan jujur untuk model yang dibangun menggunakan pengalaman profesional tentang cara memilih parameter pemodelan daripada melaporkan perkiraan terlalu optimistik pada beberapa jenis model yang dioptimalkan secara otomatis.
Pandangan lain tentang situasi ini adalah Anda harus menukar
- kinerja yang lebih buruk karena mengesampingkan sekelompok kasus lain untuk optimasi parameter (ukuran sampel pelatihan lebih kecil => model yang lebih buruk, tetapi parameter "optimal")
- kinerja yang lebih buruk karena perbaikan parameter suboptimal oleh ahli (tetapi pada data pelatihan yang lebih besar).
Beberapa pemikiran serupa tentang pertanyaan serupa: /stats//a/27761/4598
Tentang memperbaiki parameter dan komentar Dikran Marsupial
Saya menggunakan istilah hyper-parameter seperti Dikran Marsupial menggunakannya dalam makalahnya (tautan dalam jawabannya)
Saya bekerja dengan data spektroskopi. Ini adalah semacam pengukuran di mana analisis dan pemodelan data sering kali mencakup sedikit pra-pemrosesan. Ini dapat dilihat sebagai parameter-hiper (misalnya urutan polinomial apa yang harus digunakan untuk garis dasar? Saluran pengukuran apa yang harus dimasukkan?). Ada keputusan lain yang lebih dekat dengan parameter svm Anda, misalnya berapa banyak komponen utama yang akan digunakan jika PCA dilakukan untuk pengurangan dimensi sebelum model "nyata" dilatih? Dan terkadang saya juga menggunakan klasifikasi SVM, jadi saya harus memutuskan parameter SVM.
Sekarang, IMHO cara terbaik untuk memperbaiki hiper-parameter adalah jika Anda memiliki alasan yang berasal dari aplikasi. Misalnya saya biasanya memutuskan jenis baseline apa yang akan digunakan oleh alasan fisik / kimia / biologis (yaitu pengetahuan tentang spesimen dan perilaku spektroskopi yang mengikuti dari itu). Namun, saya tidak mengetahui argumentasi seperti itu yang membantu dengan parameter SVM ...
Kasus pra-percobaan yang saya sebutkan di atas terlihat sebagai berikut:
- kami mengambil data sekelompok sel (ingin membedakan garis sel yang berbeda).
Spektrum dianalisis, iterasi ulang lintas ganda validasi SVM dijalankan (menghabiskan satu atau dua malam di server komputasi).
- γC
- Saya juga mengamati overfitting tertentu: validasi lintas luar tidak sebagus hasil tuning. Seperti yang diharapkan.
- Meski demikian, ada perbedaan kinerja pada rentang tala parameter-hiper, dan kinerja pada tala kisi terlihat cukup mulus. Baik.
Kesimpulan saya adalah: sementara saya tidak dapat memastikan bahwa parameter hiper optimal, validasi lintas luar memberi saya perkiraan yang tepat dari kinerja model pengganti.
Selama bagian eksperimental, kami memutuskan beberapa perubahan dalam set-up eksperimental (hal-hal yang tidak mempengaruhi sinyal ke kebisingan data, tetapi itu selangkah lebih maju dalam otomatisasi instrumen)
Kami meningkatkan pengaturan eksperimental dan memperoleh spektrum baru. Seperti sel, mereka harus tumbuh segar. Yaitu set data baru bahkan batch budaya independen.
Sekarang saya menghadapi keputusan: Haruskah saya "melewatkan" validasi salib batin dan hanya pergi dengan parameter-hyper yang saya tentukan dengan data lama?
- Seperti yang disebutkan di atas, saya menghadapi risiko bahwa parameter yang ditentukan sebelumnya ini tidak optimal.
- Tetapi saya juga tidak bisa memastikan untuk mendapatkan hiper-parameter yang benar-benar optimal dengan melakukan validasi silang internal (penyetelan).
- Namun, penyetelan pada data lama stabil.
- Dengan melakukan optimasi, saya akan melatih lebih sedikit sampel: Karena saya memiliki terlalu sedikit Sampel (TM) Saya harus berharap untuk mendapatkan model yang lebih buruk jika saya menyisihkan lebih banyak sampel untuk validasi silang putaran kedua.
Jadi dalam hal itu, saya memutuskan untuk menggunakan parameter tetap (dengan pengalaman pada data yang sama dan mengetahui bahwa di masa depan kita harus melakukan "pekerjaan rumah" kita termasuk antara lain memeriksa ulang keputusan ini dengan data besar).
Perhatikan bahwa yang penting adalah bahwa saya melewatkan bagian dalam ( validasi tala lintas), bukan bagian luar. Dengan parameter-tetap hiper saya mendapatkan estimasi yang tidak bias dari kinerja model yang mungkin suboptimal. Memang benar bahwa perkiraan ini tunduk pada varians tinggi, tetapi varians ini pada dasarnya sama apakah saya melakukan penyetelan dalam atau tidak.
Melewati vaidasi lintas luar Saya akan mendapatkan estimasi bias yang optimis dari model yang dicari - yang tergantung pada aplikasi dan data dapat menjadi tidak berharga (jika sangat optimis) dan bias optimis mungkin tidak dapat diterima.