Apa metode yang paling efisien untuk optimasi hyperparameter di scikit-learn?

10

Gambaran umum proses optimisasi hyperparameter di scikit-learn ada di sini .

Pencarian kisi-kisi yang mendalam akan menemukan set hiperparameter yang optimal untuk suatu model. Downside adalah bahwa pencarian grid lengkap lambat.

Pencarian acak lebih cepat dari pencarian kotak tetapi memiliki variasi yang tidak perlu tinggi.

Ada juga strategi tambahan dalam paket lain, termasuk scikit-optimise , auto-sklearn , dan scikit-hyperband .

Apa metode yang paling efisien (mencari parameter berkinerja cepat dengan cepat) untuk optimasi hyperparameter di scikit-learn?

Idealnya, saya ingin contoh kode kerja dengan tolok ukur.

Brian Spiering
sumber
Saya menduga jawabannya akan sedikit tergantung pada tipe model. Apakah Anda memiliki pemikiran tertentu?
Ben Reiniger
Dalam scikit-belajar Anda juga bisa mencoba scikit-hyperband. Maaf saya tidak memiliki kode untuk benchmark saat ini. Namun ada metode lain yang tidak diimplementasikan dalam scikit belajar.
Ethan
1
Hyperopt atau menggunakan Bayesian Approach tampaknya mendominasi kaggle .. Dan jelas Pengalaman sesudahnya karena kita tidak bisa selalu melakukannya :)
Aditya
Di scikit-belajar, saya biasanya menggunakan ansambel pohon. Ansambel pohon akan menjadi tempat yang baik untuk memulai mengingat mereka cenderung berkinerja baik dan memiliki banyak tombol untuk diputar.
Brian Spiering
1
Menariknya, beberapa tolok ukur baru-baru ini menunjukkan bahwa x2 acak dapat mengungguli beberapa metode "pelamun". Saya dapat menautkan ke artikel / makalah yang sangat bagus untuk Anda baca. Juga, jika saya menemukan waktu minggu depan saya mungkin dapat menjawab pertanyaan Anda lebih lengkap.
Ethan

Jawaban:

6

Optimalisasi bukan bidang saya, tetapi sejauh yang saya tahu, optimasi hiper-parameter yang efisien dan efektif akhir-akhir ini berputar di sekitar membangun model pengganti. Seiring meningkatnya kompleksitas model, mereka menjadi kotak hitam yang lebih buram. Ini adalah kasus untuk jaring saraf yang dalam dan pohon yang mungkin rumit juga. Model pengganti mencoba untuk mundur ruang yang mendasari dalam kotak hitam itu. Berdasarkan berbagai teknik pengambilan sampel, mereka menyelidiki ruang parameter-hiper dan berusaha membangun fungsi yang mewakili ruang parameter-hiper yang mendasarinya.

Optimalisasi Bayesian berfokus pada model pengganti dan bagaimana model ini dibangun sangat penting untuk BO. Yang juga penting bagi BO adalah memilih fungsi kerugian yang baik.

Saya pikir kinerja antara pencarian acak dan pencarian Bayesian bervariasi dari dataset ke dataset, dan model ke model. Bergstra & Bengio (2012) membuat argumen yang kuat untuk pencarian acak dari pencarian grid. Shahriari et al. (2016) membuat alasan kuat untuk BO. Strategi Hiperband berbasis-model berpotensi berperforma lebih baik daripada BO, terutama untuk dimensi tinggi, namun ini murni eksplorasi, bukan eksploitasi. Ini bisa mengakibatkan penghentian yang terlalu dini. Namun, ada upaya untuk menggabungkan Hyperband dan BO .

Saya sudah sukses scikit-optimalkan, walaupun ada sedikit yang tidak diterapkan. Sangat mudah untuk membuat prototipe dan dapat dengan mudah berinteraksi dengan scikit-belajar.


Bergstra, J., & Bengio, Y. (2012). Pencarian acak untuk optimasi hyper-parameter. Jurnal Penelitian Pembelajaran Mesin, 13 (Feb), 281-305.

Shahriari, B., Swersky, K., Wang, Z., Adams, RP, & De Freitas, N. (2016). Mengambil manusia keluar dari loop: Tinjauan optimasi bayesian. Prosiding IEEE, 104 (1), 148-175.

Alex L
sumber
2

Anda dapat melihat sklearn otomatis . Itu adalah toolkit pembelajaran mesin otomatis yang merupakan perpanjangan langsung dari scikit-learn.

TQA
sumber
2
Sangat menarik. Ini menggunakan pendekatan Bayesian untuk optimasi hyper-parameter di bawah tenda @Aditya.
Esmailian