Bagaimana cara menilai apakah model pembelajaran mesin yang diawasi sesuai atau tidak?

27

Adakah yang bisa memberi tahu saya cara menilai apakah model pembelajaran mesin yang diawasi sesuai atau tidak? Jika saya tidak memiliki dataset validasi eksternal, saya ingin tahu apakah saya dapat menggunakan ROC validasi silang 10 kali lipat untuk menjelaskan overfitting. Jika saya memiliki dataset validasi eksternal, apa yang harus saya lakukan selanjutnya?

pengguna22062
sumber

Jawaban:

29

Singkatnya: dengan memvalidasi model Anda. Alasan utama validasi adalah untuk menegaskan tidak ada overfit terjadi dan untuk memperkirakan kinerja model umum.

Pakaian

Pertama mari kita lihat apa overfitting sebenarnya. Model biasanya dilatih agar sesuai dengan dataset dengan meminimalkan beberapa fungsi kerugian pada set pelatihan. Namun ada batas di mana meminimalkan kesalahan pelatihan ini tidak akan lagi menguntungkan kinerja sebenarnya model, tetapi hanya meminimalkan kesalahan pada set data tertentu. Ini pada dasarnya berarti bahwa model telah dipasang terlalu ketat ke titik data spesifik dalam set pelatihan, mencoba memodelkan pola dalam data yang berasal dari kebisingan. Konsep ini disebut pakaian berlebihan . Contoh pakaian berlebihan ditampilkan di bawah ini di mana Anda melihat pelatihan diatur dalam warna hitam dan satu set lebih besar dari populasi aktual di latar belakang. Pada gambar ini Anda dapat melihat bahwa model biru terlalu pas untuk set pelatihan, memodelkan suara yang mendasarinya. masukkan deskripsi gambar di sini

Untuk menilai apakah suatu model dilengkapi atau tidak, kita perlu memperkirakan kesalahan umum (atau kinerja) yang akan dimiliki model pada data masa depan dan membandingkannya dengan kinerja kita pada set pelatihan. Memperkirakan kesalahan ini dapat dilakukan dengan beberapa cara berbeda.

Dataset terbelah

Pendekatan yang paling mudah untuk memperkirakan kinerja umum adalah dengan mempartisi dataset menjadi tiga bagian, satu set pelatihan, satu set validasi dan satu set tes. Set pelatihan digunakan untuk melatih model agar sesuai dengan data, set validasi digunakan untuk mengukur perbedaan kinerja antara model untuk memilih yang terbaik dan set tes untuk menyatakan bahwa proses pemilihan model tidak sesuai dengan yang pertama. dua set.

Untuk memperkirakan jumlah pakaian berlebih, cukup evaluasi metrik minat Anda pada set tes sebagai langkah terakhir dan bandingkan dengan kinerja Anda pada set pelatihan. Anda menyebut ROC tetapi menurut saya Anda juga harus melihat metrik lain seperti misalnya skor brier atau plot kalibrasi untuk memastikan kinerja model. Ini tentu saja tergantung pada masalah Anda. Ada banyak metrik tetapi ini selain itu intinya di sini.

Metode ini sangat umum dan dihormati tetapi menempatkan permintaan besar pada ketersediaan data. Jika dataset Anda terlalu kecil, kemungkinan besar Anda akan kehilangan banyak kinerja dan hasil Anda akan menjadi bias pada split.

Validasi silang

Salah satu cara untuk menyiasati pemborosan sebagian besar data untuk validasi dan pengujian adalah dengan menggunakan cross-validation (CV) yang memperkirakan kinerja umum menggunakan data yang sama seperti yang digunakan untuk melatih model. Gagasan di balik cross-validation adalah untuk membagi dataset menjadi sejumlah himpunan bagian tertentu, dan kemudian menggunakan masing-masing himpunan bagian sebagai set uji yang dikerahkan secara bergantian saat menggunakan sisa data untuk melatih model. Rata-rata metrik pada semua lipatan akan memberi Anda perkiraan kinerja model. Model akhir kemudian secara umum dilatih menggunakan semua data.

Namun, estimasi CV tidak bias. Tetapi semakin banyak lipatan yang Anda gunakan, semakin kecil biasnya, tetapi sebaliknya Anda mendapatkan varians yang lebih besar.

Seperti dalam pemisahan dataset kami mendapatkan perkiraan kinerja model dan untuk memperkirakan pakaian berlebih Anda cukup membandingkan metrik dari CV Anda dengan yang diperoleh dari mengevaluasi metrik pada set pelatihan Anda.

Bootstrap

Gagasan di balik bootstrap mirip dengan CV tetapi alih-alih memisahkan dataset menjadi bagian-bagian yang kami perkenalkan secara acak dalam pelatihan dengan menggambar set pelatihan dari seluruh dataset berulang kali dengan penggantian dan melakukan fase pelatihan penuh pada masing-masing sampel bootstrap ini.

Bentuk paling sederhana dari validasi bootstrap hanya mengevaluasi metrik pada sampel yang tidak ditemukan dalam set pelatihan (yaitu yang ditinggalkan) dan rata-rata atas semua pengulangan.

Metode ini akan memberi Anda perkiraan kinerja model yang dalam banyak kasus kurang bias dibandingkan CV. Sekali lagi, membandingkannya dengan kinerja latihan yang Anda setel dan Anda mendapatkan pakaian yang sesuai.

Ada beberapa cara untuk meningkatkan validasi bootstrap. Metode .632+ dikenal untuk memberikan perkiraan yang lebih baik, lebih kuat dari kinerja model umum, dengan mempertimbangkan overfit. (Jika Anda tertarik, artikel asli adalah bacaan yang bagus: Perbaikan Cross-Validation: The 632+ Metode Bootstrap )

Saya harap ini menjawab pertanyaan Anda. Jika Anda tertarik dengan validasi model, saya sarankan untuk membaca bagian validasi dalam buku . Elemen pembelajaran statistik: penggalian data, inferensi, dan prediksi yang tersedia secara online secara gratis.

sementara
sumber
2
Perhatikan bahwa terminologi validasi vs pengujian Anda tidak diikuti di semua bidang. Misalnya dalam bidang saya (kimia analitik) validasi adalah prosedur yang harus membuktikan bahwa model bekerja dengan baik (dan mengukur seberapa baik kerjanya). Ini dilakukan dengan model akhir , tidak ada perubahan lebih lanjut yang diizinkan setelah itu (atau, jika Anda melakukannya, Anda perlu memvalidasi lagi dengan data independen). Jadi saya akan memanggil set validasi Anda "set uji dalam" atau "set uji optimasi". Data uji "luar" tidak mencegah overfitting, tetapi dapat digunakan untuk mengukur tingkat overfitting.
Cbeleites mendukung Monica
Oke, saya tidak punya pengalaman di bidang Anda. Terimakasih atas klarifikasinya. Mungkin sama di bidang lain juga. Saya hanya menggunakan terminologi yang digunakan dalam buku yang saya tautkan pada akhirnya. Saya harap itu tidak terlalu membingungkan.
sedangkan
7

Inilah cara Anda dapat memperkirakan tingkat overfitting:

  • Dapatkan estimasi kesalahan internal. Entah resubstitutio (= prediksi data pelatihan), atau jika Anda melakukan "validasi" lintas silang untuk mengoptimalkan hiperparameter, ukuran itu juga akan menarik.
  • Dapatkan estimasi kesalahan set tes independen. Biasanya, resampling (iterated cross validation atau out-of-bootstrap * disarankan. Tetapi Anda perlu berhati-hati agar tidak ada kebocoran data. Yaitu loop resampling harus menghitung ulang semua langkah yang memiliki perhitungan yang mencakup lebih dari satu kasus. Itu termasuk pra- memproses langkah-langkah seperti pemusatan, penskalaan, dll. Selain itu, pastikan Anda membelah pada tingkat tertinggi jika Anda memiliki struktur data "hierarkis" (juga dikenal sebagai "berkerumun) seperti pengukuran berulang misalnya pasien yang sama (=> sampel ulang pasien ).
  • Kemudian, bandingkan seberapa jauh perkiraan kesalahan "bagian dalam" daripada yang independen.

Berikut ini sebuah contoh:
overfitting
Trefferrate = hit rate (% benar diklasifikasikan), Variablenzahl = jumlah variabel (= kompleksitas model)
Simbol:. resubstitusi, + estimasi internal-satu-keluar pengoptimal hyperparameter, o validasi lintas luar independen pada tingkat pasien

Ini berfungsi dengan ROC, atau ukuran kinerja seperti skor Brier, sensitivitas, spesifisitas, ...

* Saya tidak merekomendasikan bootstrap .632 atau .632+ di sini: mereka telah tercampur dalam kesalahan penggantian: Anda dapat menghitungnya nanti dari perkiraan penggantian dan keluar dari bootstap.

Cbeleites mendukung Monica
sumber
0

Overfitting hanyalah konsekuensi langsung dari mempertimbangkan parameter statistik, dan karena itu hasil yang diperoleh, sebagai informasi yang berguna tanpa memeriksa bahwa mereka tidak diperoleh secara acak. Oleh karena itu, untuk memperkirakan keberadaan overfitting kita harus menggunakan algoritma pada database yang setara dengan yang asli tetapi dengan nilai-nilai yang dihasilkan secara acak, mengulangi operasi ini berkali-kali kita dapat memperkirakan probabilitas untuk mendapatkan hasil yang sama atau lebih baik secara acak . Jika probabilitas ini tinggi, kami kemungkinan besar dalam situasi overfitting. Sebagai contoh, probabilitas bahwa polinomial tingkat empat memiliki korelasi 1 dengan 5 titik acak di pesawat adalah 100%, jadi korelasi ini tidak berguna dan kita berada dalam situasi overfitting.

Andrea Berdondini
sumber