Memilih metrik kinerja klasifikasi untuk pemilihan model, pemilihan fitur, dan publikasi

8

Saya memiliki satu set data kecil yang tidak seimbang (70 positif, 30 negatif), dan saya telah bermain-main dengan pemilihan model untuk parameter SVM menggunakan BAC (akurasi seimbang) dan AUC (area di bawah kurva). Saya menggunakan bobot kelas yang berbeda untuk parameter C di libSVM untuk mengimbangi data yang tidak seimbang mengikuti saran di sini ( Pelatihan pohon keputusan terhadap data yang tidak seimbang ).

  1. Tampaknya kesalahan validasi silang k-fold sangat sensitif terhadap jenis ukuran kinerja. Itu juga memiliki kesalahan dalam dirinya sendiri karena set pelatihan dan validasi dipilih secara acak. Sebagai contoh, jika saya mengulangi BAC dua kali dengan biji acak yang berbeda, saya akan mendapatkan kesalahan yang berbeda, dan kemudian nilai parameter optimal berbeda. Jika saya rata-rata skor BAC berulang, rata-rata 1000 kali akan memberi saya nilai parameter optimal berbeda dari rata-rata 10.000 kali. Selain itu, mengubah jumlah lipatan memberi saya nilai parameter optimal berbeda.

  2. Metrik akurasi untuk validasi silang mungkin terlalu optimis. Biasanya apapun lebih dari 2 kali lipat validasi silang memberi saya akurasi 100%. Juga, tingkat kesalahan diskritisasi karena ukuran sampel yang kecil. Pemilihan model akan sering memberi saya tingkat kesalahan yang sama di semua atau sebagian besar nilai parameter.

  3. Saat menulis laporan, bagaimana saya tahu bahwa klasifikasi itu 'baik' atau 'dapat diterima'? Di lapangan, sepertinya kita tidak memiliki sesuatu seperti goodness of fit atau ambang batas p-value yang umum diterima. Karena saya menambahkan ke data iteratif, saya ingin tahu kapan harus berhenti - apa yang baik N di mana model tidak meningkat secara signifikan?

Mengingat masalah yang dijelaskan di atas, sepertinya akurasi tidak dapat dengan mudah dibandingkan antara publikasi sementara AUC telah digambarkan sebagai indikator yang buruk untuk kinerja (lihat di sini , atau di sini , misalnya).

Adakah saran tentang cara mengatasi salah satu dari 3 masalah ini?

bravetang8
sumber
1
Apa yang ingin Anda lakukan sebagian besar tidak dapat dilakukan, terutama dengan data yang sangat sedikit. Cukup banyak. Mengenai poin Anda bahwa Anda tidak memiliki konvensi seperti ambang batas untuk nilai-p, Anda mungkin harus berterima kasih.
gung - Reinstate Monica

Jawaban:

5

Tampaknya kesalahan validasi silang k-fold sangat sensitif terhadap jenis ukuran kinerja. Itu juga memiliki kesalahan dalam dirinya sendiri karena set pelatihan dan validasi dipilih secara acak.

Saya pikir Anda telah menemukan varians tinggi ukuran kinerja yang sebanding dengan jumlah kasus seperti # correct predictions# test cases. Anda mencoba mengestimasi misalnya, kemungkinan bahwa classifier Anda mengembalikan jawaban yang benar. Dari sudut pandang statistik, itu digambarkan sebagai uji coba Bernoulli, yang mengarah ke distribusi binomial. Anda dapat menghitung interval kepercayaan untuk distribusi binomial dan akan menemukan bahwa mereka sangat luas. Ini tentu saja membatasi kemampuan Anda untuk melakukan perbandingan model.

Dengan melakukan resampling skema validasi seperti validasi silang, Anda memiliki sumber variasi tambahan: ketidakstabilan model Anda (saat Anda membuat k model pengganti selama setiap menjalankan CV)

Selain itu, mengubah jumlah lipatan memberi saya nilai parameter optimal berbeda.

Itu yang diharapkan karena varians. Anda mungkin memiliki efek tambahan di sini: libSVM membagi data hanya sekali jika Anda menggunakan validasi silang bawaan untuk penyetelan. Karena sifat SVM, jika Anda membangun SVM dengan data pelatihan yang identik dan perlahan-lahan mengubah parameter, Anda akan menemukan bahwa vektor dukungan (dan konsekuensinya akurasi) melonjak: selama parameter SVM tidak terlalu berbeda, itu akan tetap pilih vektor dukungan yang sama. Hanya ketika paraters diubah cukup, tiba-tiba vektor dukungan yang berbeda akan dihasilkan. Jadi mengevaluasi kisi-kisi parameter SVM dengan pemisahan validasi silang yang persis sama dapat menyembunyikan variabilitas, yang Anda lihat di antara berbagai proses.

IMHO masalah dasarnya adalah Anda melakukan pencarian kisi, yang merupakan pengoptimalan yang mengandalkan perilaku fungsional target Anda yang cukup lancar (akurasi atau apa pun yang Anda gunakan). Karena varians yang tinggi dari pengukuran kinerja Anda, asumsi ini dilanggar. Ketergantungan "gelisah" dari model SVM juga melanggar asumsi ini.

Metrik akurasi untuk validasi silang mungkin terlalu optimis. Biasanya apapun lebih dari 2 kali lipat validasi silang memberi saya akurasi 100%. Juga, tingkat kesalahan diskritisasi karena ukuran sampel yang kecil. Pemilihan model akan sering memberi saya tingkat kesalahan yang sama di semua atau sebagian besar nilai parameter.

Itu yang diharapkan mengingat masalah umum dari pendekatan tersebut.

Namun, biasanya dimungkinkan untuk memilih nilai parameter yang benar-benar ekstrem di mana classifier rusak. IMHO rentang parameter di mana SVM bekerja dengan baik adalah informasi penting.

Dalam kasus apa pun Anda benar-benar membutuhkan validasi eksternal (ganda / bersarang) dari kinerja model yang Anda pilih sebagai 'terbaik'.

Saya mungkin akan melakukan sejumlah run / repetitions / iterasi dari validasi cross luar atau validasi out-of-bootstrap luar dan memberikan distribusi

  • hyperparameters untuk model "terbaik"
  • melaporkan kinerja penyetelan
  • mengamati kinerja validasi luar

Perbedaan antara dua yang terakhir adalah indikator overfitting (misalnya karena "skimming" varians).

Saat menulis laporan, bagaimana saya tahu bahwa klasifikasi itu 'baik' atau 'dapat diterima'? Di lapangan, sepertinya kita tidak memiliki sesuatu seperti goodness of fit atau ambang batas p-value yang umum diterima. Karena saya menambahkan ke data iteratif, saya ingin tahu kapan harus berhenti - apa yang baik N di mana model tidak meningkat secara signifikan?

(Apa yang Anda tambahkan? Kasing atau variasi / fitur?)

Pertama-tama, jika Anda melakukan pemodelan iteratif, Anda juga perlu melaporkan bahwa karena prosedur pemasangan yang tepat, kinerja Anda tidak dianggap serius karena tunduk pada bias optimis. Alternatif yang lebih baik adalah melakukan validasi model akhir. Namun, data uji yang harus independen dari semua data yang pernah masuk ke pelatihan atau proses keputusan Anda untuk pemodelan (sehingga Anda mungkin tidak memiliki data yang tersisa).

cbeleites tidak senang dengan SX
sumber
Terima kasih atas jawabannya. Dari apa yang saya pahami, strategi Anda akan melibatkan pembangunan distribusi hiperparameter dari rentang nilai yang berasal dari beberapa lipatan luar / iterasi. (1) Dalam hal ini, akurasi optimis atau AUC baik-baik saja? Saya merasa bahwa metrik pesimistis akan lebih baik untuk menemukan "model terbaik" karena jika tidak, distribusi skor dari CV yang diulang akan menjadi 'satu arah'. (2) Juga, saya merasa aneh bahwa rata-rata lebih banyak iterasi CV tidak selalu membantu-apakah itu karena kesalahan tidak didistribusikan secara probabilistik karena ketidakstabilan model SVM?
bravetang8
Untuk mengklarifikasi pertanyaan terakhir saya, saya menambahkan kasus secara iteratif dengan eksperimen. Saya menggunakan model awal untuk memilih poin 'informatif', dari mana saya dapat membangun kembali dan memperbaiki model asli. Apa yang ingin saya ketahui pada dasarnya adalah berapa banyak kasus yang perlu saya tambahkan sehingga perkiraan kesalahan (dari validasi luar) bias minimal. Saya berharap ada rasio case / fitur yang 'dapat diterima'.
bravetang8
@ bravetang8: (1) Anda benar: langkah-langkah bias optimis bukan ide yang baik: tidak untuk optimasi internal karena optimisasi tidak dapat membedakan antara model yang berbeda yang semuanya tampaknya sempurna. Tidak untuk optimasi eksternal karena dalam banyak aplikasi lebih baik untuk memiliki perkiraan kinerja yang konservatif daripada yang terlalu optimistis. Tetapi baik untuk mengetahui apakah optimasi internal mengalami estimasi internal terlalu optimistis, atau apakah ini bukan masalah di sini.
cbeleites tidak senang dengan SX
@ bravetang8: 2) rata-rata iterasi CV akan mengurangi hanya bagian varians yang disebabkan oleh ketidakstabilan model, tetapi bukan bagian yang disebabkan oleh set case hingga Anda. Jadi setelah iterasi "cukup", varian model-instabilitas-tipe hanya akan menjadi kontributor kecil untuk total varians dan tidak membantu untuk beralih ke lebih banyak iterasi.
cbeleites tidak senang dengan SX
@cbeleites, hai cbeleites, saya bertanya-tanya apakah Anda punya waktu untuk melihat posting ini meskipun prof.Harrel sudah membuat catatan penting di sini? Terima kasih. stats.stackexchange.com/questions/86917/…
lennon310
3

Lebih sederhana daripada BIR adalah aturan penilaian logaritmik atau kuadrat (Brier). Ini adalah skor yang tepat, tidak seperti proporsi yang diklasifikasikan dengan benar, tidak akan memunculkan model palsu saat optimisasi.

Frank Harrell
sumber
Untuk itu, OP perlu beralih ke output probabilitas untuk SVM. IIRC setidaknya dengan libSVM ini dihitung dengan memasang suatu logistik, dan saya tidak yakin seberapa dekat ini berkaitan dengan SVM asli.
cbeleites tidak senang dengan SX
1

Seperti yang Anda tunjukkan, akurasi prediktif dan AUC terbatas dalam aspek-aspek tertentu. Saya akan memberikan Bayesian Information Reward (BIR), yang seharusnya memberikan penilaian yang lebih sensitif tentang seberapa baik atau buruk pengklasifikasi Anda lakukan dan bagaimana itu berubah ketika Anda mengubah parameter Anda (jumlah lipatan validasi, dll.).

Intuisi BIR adalah sebagai berikut: seorang petaruh dihargai tidak hanya untuk mengidentifikasi pemenang dan pecundang utama (0 dan 1), tetapi yang lebih penting untuk mengidentifikasi peluang yang sesuai. Selain itu, ia melangkah maju dan membandingkan semua prediksi dengan probabilitas sebelumnya.

Katakanlah Anda memiliki daftar 10 pertandingan Arsenal (tim sepak bola di Inggris) dengan hasil yang mungkin: Win atau Lose. Rumus untuk penghargaan klasifikasi biner per game adalah:

masukkan deskripsi gambar di sini

dimana, p adalah prediksi model Anda untuk pertandingan Arsenal tertentu, dan padalah probabilitas sebelumnya Arsenal memenangkan pertandingan. Tujuannya adalah: jika saya tahu sebelumnyap=0.6, dan model prediktor saya dihasilkan p=0.6, bahkan jika prediksinya benar, itu dihargai 0 karena tidak menyampaikan informasi baru. Sebagai catatan, Anda memperlakukan klasifikasi yang benar dan salah secara berbeda seperti yang ditunjukkan dalam persamaan. Akibatnya, berdasarkan pada apakah prediksi itu benar atau salah, BIR untuk prediksi tunggal dapat mengambil nilai di antaranya(inf,1].

BIR tidak terbatas pada klasifikasi biner tetapi digeneralisasi untuk masalah klasifikasi multinomial juga.

Zhubarb
sumber