Bagaimana membangun model akhir dan menyetel ambang probabilitas setelah validasi silang bersarang?

17

Pertama, permintaan maaf karena memposting pertanyaan yang telah dibahas panjang lebar di sini , di sini , di sini , di sini , di sini, dan untuk memanaskan kembali topik lama. Saya tahu @DikranMarsupial telah menulis tentang topik ini secara panjang lebar di posting dan makalah jurnal, tapi saya masih bingung, dan menilai dari jumlah posting serupa di sini, itu masih sesuatu yang sulit dipahami orang lain. Saya juga harus menyatakan bahwa saya telah menerima kontradiksi tentang topik ini yang telah menambah kebingungan saya. Anda juga harus tahu bahwa saya awalnya seorang ahli fisika dan bukan ahli statistik, jadi keahlian domain saya di sini agak terbatas. Saya sedang menulis makalah jurnal di mana saya ingin menggunakan CV bersarang untuk memperkirakan kinerja yang dapat saya harapkan dari model terakhir saya. Di domain saya, ini yang pertama. (Kami hampir tidak pernah menggunakan apa sajabentuk CV yang kuat di bidang saya tetapi dengan gembira memompa kertas dengan hasil dari penelitian menggunakan jaring saraf dan meningkatkan pohon keputusan!) Oleh karena itu, sangat penting bahwa saya memiliki pemahaman yang sangat menyeluruh dan jelas sehingga saya tidak mengacaukan dan menyebarkan prosedur yang salah bagi komunitas saya yang dapat bertahun-tahun untuk dihapus! Terima kasih! Dengan pertanyaan ...

Bagaimana cara membuat model akhir setelah validasi silang bersarang?

Saya melatih model glmnet sederhana dengan regularisasi L1 dan L2. Cepat, sederhana, dan bisa ditafsirkan. Saya melakukan pemusatan fitur, penskalaan, dan transformasi Box-Cox ke distribusi fitur yang berpusat pada rata-rata, terstandarisasi dan agak mirip Gaussian. Saya melakukan langkah ini dalam validasi silang, untuk mencegah kebocoran informasi. Murni karena perangkat keras saya sangat lambat dan saya tidak memiliki akses ke lebih banyak otot CPU, saya juga melakukan pemilihan fitur berbasis filter cepat dalam CV setelah preprocessing fitur. Saya menggunakan pencarian grid acak untuk memilih hyperparameters alpha dan lambda. Saya mengerti bahwa saya tidak bolehCV loop untuk mendapatkan estimasi ini. Saya mengerti bahwa loop CV dalam digunakan untuk pemilihan model (dalam hal ini, hiperparameter optimal) dan bahwa loop luar digunakan untuk evaluasi model , yaitu, CV dalam dan luar melayani dua tujuan yang berbeda yang sering kali disatukan secara keliru. (Bagaimana yang saya lakukan sejauh ini?)

Sekarang, tautan yang saya posting menyarankan bahwa "cara untuk memikirkan cross-validasi adalah dengan memperkirakan kinerja yang diperoleh dengan menggunakan metode untuk membangun model, daripada untuk memperkirakan kinerja model". Mengingat itu, bagaimana saya harus menginterpretasikan hasil prosedur CV bersarang?

Saran yang saya baca tampaknya mengindikasikan yang berikut --- tolong perbaiki saya jika ini salah: CV bagian dalam adalah mekanisme yang memungkinkan saya memilih hyperparameter alpha dan lambda optimal dari model glmnet saya. CV luar memberi tahu perkiraan yang bisa saya dapatkan dari model akhir jika saya menerapkan prosedur persis seperti yang digunakan dalam CV batin termasuk penyetelan hyperparameter dan menggunakan seluruh dataset untuk membangun model akhir. Artinya, penyetelan hyperparameter adalah bagian dari "metode untuk membangun model". Apakah ini benar atau tidak? Karena inilah yang membingungkan saya. Di tempat lain saya telah melihat bahwa prosedur untuk membangun model akhir yang akan digunakan melibatkan pelatihan pada seluruh dataset menggunakan nilai-nilai tetapdari hiperparameter yang telah dipilih menggunakan CV. Di sini, "metode untuk membangun model" tidak termasuk penyetelan. Jadi, mana yang benar? Pada titik tertentu, hiperparameter optimal dipilih dan diperbaiki untuk membangun model akhir! Dimana? Bagaimana? Jika loop dalam saya adalah CV 5 kali lipat, dan loop luar saya adalah CV 5 kali lipat, dan saya pilih, katakanlah, 100 poin untuk pengujian sebagai bagian dari pencarian grid acak di CV dalam, berapa kali saya benar-benar melatih glmnet model? (100 * 5 * 5) +1 untuk bangunan final, atau ada langkah-langkah lain yang saya tidak sadari?

Pada dasarnya, saya memerlukan deskripsi yang sangat jelas tentang bagaimana menafsirkan estimasi kinerja dari CV bersarang dan bagaimana membangun model akhir.

Saya juga ingin mengetahui prosedur yang tepat untuk memilih ambang probabilitas untuk mengubah skor probabilitas dari model glmnet akhir saya menjadi label kelas (biner) --- diperlukan loop CV lagi?

Andrew John Lowe
sumber

Jawaban:

8

Validasi silang bersarang dijelaskan tanpa bersarang

Inilah cara saya melihat validasi silang dan pembuatan model. Perhatikan bahwa saya ahli kimia dan seperti Anda melihat dari sisi aplikasi ke proses pembangunan model (lihat di bawah). Poin utama saya di sini adalah dari sudut pandang saya, saya tidak perlu berbagai jenis validasi lintas bersarang . Saya memerlukan metode validasi (mis. Validasi silang) dan fungsi pelatihan model:

model = f (training data)

Fungsi pelatihan model "saya" f tidak memerlukan hiperparameter karena secara internal semua tuning hiperparameter (misalnya Anda alpha, lambdadan threshold).

Dengan kata lain, fungsi pelatihan saya dapat berisi sejumlah validasi silang dalam (atau out-of-bag atau apa pun perkiraan kinerja yang saya anggap berguna). Namun, perhatikan bahwa perbedaan antara parameter dan parameter - hiper biasanya adalah bahwa parameter-parameter hiperparameter perlu disetel ke set data / aplikasi yang tersedia sedangkan parameter kemudian dapat dipasang terlepas dari data apa itu. Jadi dari sudut pandang pengembang algoritma klasifikasi baru, masuk akal untuk hanya menyediakan fungsi pemasangan "telanjang" ( g (training data, hyperparameters)) yang sesuai dengan parameter jika diberikan data dan hiperparameter.

Inti dari memiliki fungsi pelatihan "luar" fadalah bahwa setelah Anda menjalankan validasi silang, itu memberi Anda cara langsung untuk melatih "pada seluruh kumpulan data": gunakan saja f (whole data set)alih-alih panggilan f (cv split training data)untuk model pengganti validasi silang.

Jadi dalam contoh Anda, Anda akan memiliki 5 + 1 panggilan f, dan masing-masing panggilan fakan memiliki misalnya 100 * 5 panggilan ke g.


ambang batas probabilitas

Meskipun Anda bisa melakukan ini dengan validasi silang yang lain, ini tidak perlu: itu hanya satu hiperparameter yang dimiliki dan dapat diperkirakan oleh model Anda f.

Yang Anda butuhkan untuk memperbaikinya adalah heuristik yang memungkinkan Anda menghitung ambang seperti itu. Ada berbagai macam heuristik (dari ROC dan menentukan betapa pentingnya menghindari positif palsu dibandingkan negatif palsu atas sensitivitas atau spesifisitas minimum yang dapat diterima atau PPV atau NPV untuk memungkinkan dua ambang batas dan dengan demikian tingkat "tidak pasti" (NA) dan seterusnya. ) yang cocok dalam situasi yang berbeda - heuristik yang baik biasanya sangat spesifik aplikasi.

Tetapi untuk pertanyaan di sini, Anda dapat melakukan ini di dalam fdan misalnya menggunakan prediksi yang diperoleh selama validasi silang batin untuk menghitung ROC dan kemudian menemukan titik / ambang kerja Anda yang sesuai.


Komentar spesifik untuk bagian dari pertanyaan

Saya mengerti bahwa saya seharusnya tidak melaporkan kinerja dari CV yang digunakan untuk memilih hiperparameter optimal sebagai perkiraan kinerja yang diharapkan dari model akhir saya (yang akan terlalu optimis) tetapi harus menyertakan loop CV luar untuk mendapatkan perkiraan ini .

Iya. (Meskipun perkiraan dalam memang membawa informasi sehubungan dengan perkiraan luar: jika itu jauh lebih optimis daripada perkiraan luar, Anda biasanya overfitting.)

Saya mengerti bahwa loop CV dalam digunakan untuk pemilihan model

Segala jenis penyetelan model berbasis data, sungguh -> itu termasuk penyetelan batas batas Anda.

(dalam hal ini, hiperparameter optimal) dan bahwa loop luar digunakan untuk evaluasi model, yaitu, CV dalam dan luar melayani dua tujuan yang berbeda yang sering disalahgunakan secara salah.

Iya.

Artinya, penyetelan hyperparameter adalah bagian dari "metode untuk membangun model".

Saya lebih suka melihatnya dengan cara ini juga: Saya ahli kimia dan seperti Anda melihat dari sisi aplikasi: bagi saya model yang terlatih / dipasang tidak lengkap tanpa hyperparameters, atau lebih tepatnya, model adalah sesuatu yang dapat saya gunakan langsung untuk dapatkan prediksi. Padahal seperti yang Anda perhatikan orang lain memiliki pandangan berbeda (tanpa penyetelan hyperparameter). Dalam pengalaman saya, ini sering terjadi pada orang yang mengembangkan model baru: penyetelan hyperparameter kemudian merupakan "masalah yang diselesaikan" dan tidak dipertimbangkan. (catatan: pandangan mereka tentang apa yang dapat dilakukan validasi silang dalam hal validasi juga sedikit berbeda dari apa yang dapat dilakukan validasi silang dari sisi aplikasi).

Cbeleites mendukung Monica
sumber