Validasi silang atau bootstrap untuk mengevaluasi kinerja klasifikasi?

24

Apa metode pengambilan sampel yang paling tepat untuk mengevaluasi kinerja classifier pada set data tertentu dan membandingkannya dengan classifier lain? Cross-validasi tampaknya menjadi praktik standar, tetapi saya telah membaca bahwa metode seperti .632 bootstrap adalah pilihan yang lebih baik.

Sebagai tindak lanjut: Apakah pilihan metrik kinerja memengaruhi jawaban (jika saya menggunakan AUC alih-alih keakuratan)?

Tujuan utama saya adalah untuk dapat mengatakan dengan yakin bahwa satu metode pembelajaran mesin lebih unggul daripada yang lain untuk dataset tertentu.

kelvin_11
sumber
1
Bootstrap (dengan penggantian) dapat digunakan pada set data pelatihan Anda, sebagai pengganti, misalnya, validasi silang k-fold (berulang). Lihat juga: Perbedaan antara validasi silang dan bootstrap untuk memperkirakan kesalahan prediksi , Memahami bootstrap untuk validasi dan pemilihan model .
chl

Jawaban:

42

Satu perbedaan penting dalam cara validasi silang biasa dan metode out-of-bootstrap diterapkan adalah bahwa kebanyakan orang menerapkan validasi silang hanya sekali (yaitu setiap kasus diuji tepat sekali), sedangkan validasi out-of-bootstrap dilakukan dengan sejumlah besar pengulangan / iterasi. Dalam situasi itu, validasi silang dikenakan varians yang lebih tinggi karena ketidakstabilan model. Namun, itu dapat dihindari dengan menggunakan misalnya iterated / repeat- cross validation. Jika itu dilakukan, setidaknya untuk set data spektroskopi yang telah saya kerjakan, kesalahan total dari kedua skema resampling tampaknya sama dalam praktiknya.k

Validasi silang tinggalkan satu tidak disarankan, karena tidak ada kemungkinan untuk mengurangi varians tipe ketidakstabilan model dan ada beberapa pengklasifikasi dan masalah di mana ia menunjukkan bias pesimistis yang sangat besar.

.632 bootstrap melakukan pekerjaan yang wajar selama kesalahan resampling yang bercampur tidak terlalu optimis. (Misalnya untuk data yang saya kerjakan, matriks yang sangat luas dengan banyak variasi, itu tidak berfungsi dengan baik karena model cenderung overfitting yang serius). Ini juga berarti bahwa saya akan menghindari menggunakan bootstrap .632 untuk membandingkan model dengan kompleksitas yang berbeda-beda. Dengan .632+ bootstrap, saya tidak punya pengalaman: jika overfitting terjadi dan terdeteksi dengan benar, itu akan sama dengan perkiraan out-of-bootstrap yang asli, jadi saya tetap menggunakan oob biasa atau validasi silang berulang / berulang untuk data saya.

Literatur:

  • Kohavi, R .: Studi Validasi Lintas dan Bootstrap untuk Estimasi Akurasi dan Pemilihan Model Prosiding Intelijen Buatan 14th International Joint Conference, 20 - 25. Agustus 1995, Montréal, Québec, Kanada, 1995, 1137 - 1145.
    (klasik )

Dougherty dan Braga-Neto memiliki sejumlah publikasi tentang topik tersebut , misalnya

Pilihan metrik:

Tujuan utama saya adalah untuk dapat mengatakan dengan yakin bahwa satu metode pembelajaran mesin lebih unggul daripada yang lain untuk dataset tertentu.

  • Gunakan tes berpasangan untuk mengevaluasi itu. Untuk membandingkan proporsi, lihatlah tes McNemar.

  • Jawabannya akan dipengaruhi oleh pilihan metrik. Karena langkah-langkah kesalahan tipe regresi tidak memiliki langkah "pengerasan" dalam memotong keputusan dengan ambang batas, mereka sering memiliki varian yang lebih sedikit daripada rekan-rekan klasifikasi mereka. Metrik seperti akurasi yang pada dasarnya adalah proporsi akan membutuhkan sejumlah besar kasus uji untuk menetapkan keunggulan satu classifier atas yang lain.

Fleiss: "Metode statistik untuk tarif dan proporsi" memberikan contoh (dan tabel) untuk perbandingan proporsi yang tidak berpasangan . Untuk memberi Anda kesan tentang apa yang saya maksud dengan "ukuran sampel besar", lihat gambar dalam jawaban saya untuk pertanyaan lain ini . Tes berpasangan seperti McNemar membutuhkan lebih sedikit kasus uji, tetapi IIRC masih dalam kasus setengah terbaik (?) Dari ukuran sampel yang dibutuhkan untuk tes tidak berpasangan.

  • Untuk mengkarakterisasi kinerja classifier (mengeras), Anda biasanya memerlukan kurva kerja setidaknya dua nilai seperti ROC (sensitivitas vs spesifisitas) atau sejenisnya.
    Saya jarang menggunakan akurasi keseluruhan atau AUC, karena aplikasi saya biasanya memiliki batasan misalnya sensitivitas lebih penting daripada spesifisitas, atau batasan tertentu pada langkah-langkah ini harus dipenuhi. Jika Anda memilih karakteristik penjumlahan "angka tunggal", pastikan titik kerja model yang Anda lihat sebenarnya dalam kisaran yang masuk akal.

  • Untuk akurasi dan ukuran kinerja lain yang meringkas kinerja untuk beberapa kelas sesuai dengan label referensi, pastikan Anda memperhitungkan frekuensi relatif dari kelas yang akan Anda temui dalam aplikasi - yang belum tentu sama dengan di Anda pelatihan atau data uji.

  • Provost, F. et al. : Kasus Terhadap Estimasi Akurasi untuk Membandingkan Algoritma Induksi Dalam Proses Konferensi Internasional Kelima Belas tentang Pembelajaran Mesin, 1998


sunting: membandingkan beberapa pengklasifikasi

Saya sudah memikirkan masalah ini untuk sementara waktu, tetapi belum menemukan solusi (saya juga belum bertemu siapa pun yang memiliki solusi).

Inilah yang saya dapatkan sejauh ini:

Untuk saat ini, saya memutuskan bahwa "optimisasi adalah akar dari semua kejahatan", dan mengambil pendekatan yang sangat berbeda:
Saya memutuskan sebanyak mungkin dengan pengetahuan para ahli tentang masalah yang dihadapi. Itu sebenarnya memungkinkan untuk mempersempit hal-hal sedikit, sehingga saya sering dapat menghindari perbandingan model. Ketika saya harus membandingkan model, saya mencoba untuk menjadi sangat terbuka dan jelas mengingatkan orang tentang ketidakpastian estimasi kinerja dan bahwa beberapa perbandingan model adalah AFAIK masih merupakan masalah yang belum terpecahkan.


Sunting 2: tes berpasangan

n12(n2-n)dari pengujian hanya merujuk pada kenyataan bahwa karena semua model diuji dengan kasus pengujian yang sama persis, Anda dapat membagi kasus menjadi kasus "mudah" dan "sulit" di satu sisi, di mana semua model mendapatkan jawaban yang benar (atau salah) prediksi. Mereka tidak membantu membedakan antara model. Di sisi lain, ada kasus "menarik" yang diprediksi dengan benar oleh beberapa orang, tetapi tidak oleh model lain. Hanya kasus "menarik" ini yang perlu dipertimbangkan untuk menilai superioritas, baik kasus "mudah" maupun "sulit" tidak membantu. (Ini adalah bagaimana saya memahami ide di balik ujian McNemar).

nn

Cbeleites mendukung Monica
sumber
Terima kasih atas jawaban terperinci Anda! Saya akan sangat menghargai jika Anda bisa menguraikan poin yang Anda buat: " Gunakan tes berpasangan untuk mengevaluasi itu. Untuk membandingkan proporsi, lihat tes McNemar. " Saya harus sedikit mengulangi pertanyaan saya: Saya ingin membandingkan beberapa mesin metode belajarnya sekaligus, tidak harus hanya berpasangan. Tidak segera jelas bagi saya bagaimana tes berpasangan dapat mencapai ini.
kelvin_11
3
(+6) Respons yang bagus.
chl
@cbeleites Aku mencintaimu untuk komentar ini. Untuk signifikansi perbandingan model berganda - bagaimana dengan metode analysis of variance (ANOVA)? seperti Kruskal – Wallis ?
Serendipity
1
@Sendendipity: Saya benar-benar tidak cukup tahu tentang Kruskal-Wallis untuk memberi Anda jawaban di sini. Tetapi saya menduga bahwa metode seperti ANOVA tidak seperti yang diinginkan di sini karena (1) tidak menggunakan sifat data yang dipasangkan dan (2) mendapatkan kekuatan dibandingkan dengan beberapa perbandingan karena hipotesis nol hanya "semua model berperforma sama "- jika itu ditolak, Anda masih tidak tahu algoritma mana yang berperforma berbeda. Jadi itu hanya dapat digunakan untuk menekankan hasil negatif (tidak masalah algoritma mana yang Anda pilih). Saya menduga ada zona besar di mana ANOVA memberi tahu Anda tidak semua model ...
cbeleites mendukung Monica
... sama, tetapi Anda tidak memiliki informasi yang cukup untuk memungkinkan beberapa perbandingan yang diperlukan untuk mengidentifikasi model yang lebih baik.
cbeleites mendukung Monica
6

Anda memerlukan modifikasi pada bootstrap (.632, .632+) hanya karena penelitian asli menggunakan aturan penilaian yang tidak tepat yang terputus-putus (proporsi diklasifikasikan dengan benar). Untuk skor akurasi lainnya, bootstrap optimisme biasa cenderung berfungsi dengan baik. Untuk informasi lebih lanjut, lihat http://biostat.mc.vanderbilt.edu/RmS#Studies_of_Methods_Used_in_the_T

Aturan penilaian yang tidak tepat menyesatkan Anda pada pilihan fitur dan bobotnya. Dengan kata lain, semua yang bisa salah akan salah.

Frank Harrell
sumber
4

Dari 'Applied Predictive Modelling., Khun. Johnson . hal.78

"Tidak ada metode resampling yang lebih baik daripada yang lain; pilihan harus dibuat dengan mempertimbangkan beberapa faktor. Jika ukuran sampel kecil, kami sarankan untuk menggunakan validasi silang 10 kali lipat karena beberapa alasan; sifat bias dan varians baik, dan diberikan ukuran sampel, biaya komputasi tidak besar. Jika tujuannya adalah untuk memilih antara model, bukan untuk mendapatkan indikator kinerja terbaik, kasus yang kuat dapat dibuat untuk menggunakan salah satu prosedur bootstrap karena ini memiliki varian yang sangat rendah. Untuk ukuran sampel besar, perbedaan antara metode resampling menjadi kurang jelas, dan efisiensi komputasi meningkat dalam kinerja. " hal. 78

Selain itu, mengingat pilihan dua hasil yang serupa, model yang lebih dapat ditafsirkan umumnya disukai. Sebagai contoh (dari teks yang sama), menggunakan CV 10 kali lipat, klasifikasi SVM memiliki estimasi akurasi 75% dengan hasil resample antara 66 dan 82%. Parameter yang sama digunakan pada klasifikasi regresi logistik dengan akurasi 74,9%, dan rentang sampel ulang yang sama. Model regresi logistik sederhana mungkin lebih disukai karena lebih mudah untuk menafsirkan hasil.

menepuk
sumber
4
Perhatikan bahwa varians yang dapat Anda kurangi dengan menjalankan sejumlah besar pengulangan / pengulangan bootstrap / validasi silang hanya bagian dari varian yang berasal dari ketidakstabilan model pengganti. Anda dapat mengukur apakah ini merupakan kontribusi utama terhadap total varians dengan validasi silang karena ia menguji setiap sampel secara tepat satu kali setiap kali dijalankan, sehingga varians karena ukuran sampel hingga tidak muncul dalam perbandingan rata-rata run validasi silang lengkap . Untuk klasifikasi "keras", Anda dapat menghitung varians karena ukuran sampel hingga dari distribusi binomial.
cbeleites mendukung Monica
@cbeleites: Bisakah Anda jelaskan sedikit apa yang Anda maksud dengan "ini menguji setiap sampel secara tepat satu kali setiap kali berjalan, sehingga varians karena ukuran sampel hingga tidak muncul dalam perbandingan rata-rata berjalan validasi lintas lengkap berjalan." (referensi juga baik-baik saja!) (+1 jelas)
usεr11852 mengatakan Reinstate Monic
@ usεr11852: setiap case diuji tepat satu kali per cross validasi berjalan Bayangkan sebuah tabel hasil menjalankan n_sample xr CV. Jika kita memiliki prediksi stabil , semua prediksi r untuk kasus yang sama adalah sama. Yaitu tidak ada varian di sepanjang baris. Tetapi kasus yang berbeda mungkin mendapatkan prediksi yang berbeda (kecuali kita memiliki akurasi misalnya 100%): kita memiliki varian di sepanjang kolom. Sekarang evaluasi standar iterated / repeat cross valiation adalah membandingkan rata-rata kolom. Untuk model yang stabil, ini adalah persis sama, meskipun kita lakukan memiliki varians sepanjang kolom, yaitu antara kasus.
cbeleites mendukung Monica
(Jika model / prediksi tidak stabil, kami mendapatkan prediksi yang berbeda dengan model pengganti yang berbeda, dan melihat varians di sepanjang baris juga. Ditambah beberapa varian tambahan di sepanjang kolom, karena setiap kolom dalam k-fold CV mencakup k model pengganti yang berbeda. ) Jadi untuk mengukur stabilitas model / prediksi (dalam), mungkin bahkan lebih langsung untuk pergi langsung untuk varian di sepanjang baris, yaitu varian prediksi model pengganti yang berbeda untuk kasus yang sama .
cbeleites mendukung Monica
1
@cbeleites: Terima kasih banyak atas klarifikasi. Sekarang saya bisa menghargai poin yang Anda buat lebih banyak.
usεr11852 mengatakan Reinstate Monic