Bagaimana cara mendapatkan hiperparameter optimal setelah validasi silang bersarang?

8

Secara umum, jika kita memiliki dataset besar, kita dapat membaginya menjadi (1) pelatihan, (2) validasi, dan (3) tes. Kami menggunakan validasi untuk mengidentifikasi hyperparameter terbaik dalam validasi silang (misalnya, C dalam SVM) dan kemudian kami melatih model menggunakan hyperparameter terbaik dengan set pelatihan dan menerapkan model yang terlatih untuk menguji untuk mendapatkan kinerja.

Jika kami memiliki dataset kecil, kami tidak dapat membuat set pelatihan dan tes (tidak cukup sampel). Oleh karena itu, kami akan melakukan validasi silang (k-fold, leave-one-out, dll) untuk mengevaluasi kinerja model.

Saya telah melihat validasi silang bersarang (apakah berulang atau bertingkat) telah digunakan dalam pengaturan dataset kecil, yaitu, untuk menghasilkan kinerja model umum sambil mengoptimalkan pemilihan parameter. Pertanyaan saya adalah, bagaimana saya bisa mendapatkan hiperparameter terbaik dalam validasi silang bersarang (berulang / tidak diulang)? Saya tertarik melakukan ini di scikit-belajar, jika memungkinkan. Saya agak bingung bagaimana melakukannya.

Saya telah membaca beberapa sumber tetapi tidak ada yang memberi saya jawaban pasti untuk pertanyaan ini:

Validasi silang bersarang untuk pemilihan model

Validasi silang bersarang dan pemilihan fitur: kapan harus melakukan pemilihan fitur?

RockTheStar
sumber
Ini menyebutkan scikit-belajar, tetapi memiliki pertanyaan pembelajaran mesin yang layak. Ini sepertinya bukan topik bagi saya.
gung - Reinstate Monica
@ung ya, terima kasih. The scikit-belajar adalah bagian tambahan dari pertanyaan (plus bagi saya)
RockTheStar

Jawaban:

6

Gambaran

Ketika @RockTheStar menyimpulkan dengan benar dalam komentar, validasi silang bersarang hanya digunakan untuk mengakses estimasi kinerja model. Terpisah dari itu, untuk menemukan hyperparameters terbaik kita perlu melakukan penyetelan sederhana dengan validasi silang pada seluruh data.


Secara detail:

Tuning dan validasi (loop resampling dalam dan luar)

Di loop dalam Anda melakukan penyetelan hyperparameter, model dilatih dalam data pelatihan dan divalidasi pada data validasi. Anda menemukan parameter optimal dan melatih model Anda pada seluruh data loop dalam . Meskipun dilatih untuk mengoptimalkan kinerja pada data validasi, evaluasi ini bias.

Jadi model ini diuji dengan data uji sehingga mudah-mudahan tidak ada bias, memberikan Anda perkiraan kinerja.

Model terakhir

Sekarang setelah Anda mengetahui kinerja yang diharapkan dari model Anda, Anda harus melatihnya dengan semua data Anda. Tapi model kami bukan hanya algoritme, tetapi seluruh proses pembangunan model!

Jadi lakukan penyetelan hyperparameter dengan semua data Anda dan spesifikasi yang sama dari loop dalam. Dengan hyperparameter terbaik, latih model akhir Anda dengan seluruh data. Kinerja yang diharapkan dari model akhir ini adalah apa yang Anda evaluasi dengan validasi bersarang sebelumnya.

Untuk mengulangi, hyperparmeters dari model akhir adalah apa yang Anda harapkan akan memberi Anda kinerja yang Anda temukan pada langkah Tuning dan validasi .

Pembakar
sumber
Terima kasih atas jawaban anda. Saya mencoba memahaminya tetapi saya tidak yakin apakah saya mendapatkannya. Jadi di mana tepatnya saya mendapatkan set hyperparameter terbaik saya?
RockTheStar
@RockTheStar Saya memperbarui jawabannya. Pada dasarnya Anda mereparasi (yaitu melakukan tuning lagi, dan kemudian pas dengan model yang disetel pada semua data): ini adalah tempat taruhan terbaik Anda untuk hiperparameter optimal.
Firebug
1
jadi pada dasarnya, Anda mengatakan CV bersarang adalah untuk memverifikasi kinerja model. Dan kita perlu melakukan CV sederhana untuk data lengkap lagi untuk mendapatkan parameter yang optimal. Apakah saya benar?
RockTheStar
@RockTheStar Ya, Anda merangkum semuanya dengan benar.
Firebug
1
@nafizh Maaf sudah lama tidak menjawab pertanyaan Anda, belum melihat notifikasi (?). Semua perkiraan kinerja harus didasarkan pada CV bersarang, yang merupakan yang Anda bangun untuk menguji strategi pembangunan model Anda. Untuk melakukan penyetelan hyperparameter akhir, Anda melakukan loop dalam pada seluruh data dan memilih yang terbaik sesuai dengan kriteria yang sama yang Anda gunakan dalam Nested CV. Kemudian Anda mencocokkannya dengan seluruh data dan itulah model akhir Anda, tetapi kinerja prediktif yang Anda anggap itu adalah yang Anda peroleh di Nested CV .
Firebug