Saya memiliki satu set uji 100 kasus dan dua pengklasifikasi.
Saya menghasilkan prediksi dan menghitung ROC AUC, sensitivitas dan spesifisitas untuk kedua pengklasifikasi.
Pertanyaan 1: Bagaimana saya bisa menghitung nilai-p untuk memeriksa apakah satu secara signifikan lebih baik daripada yang lain sehubungan dengan semua skor (ROC AUC, sensitivitas, spesifisitas)?
Sekarang, untuk set uji yang sama dari 100 kasus, saya memiliki tugas fitur yang berbeda dan independen untuk setiap kasus. Ini karena fitur saya tetap tetapi subjektif dan disediakan oleh beberapa (5) subjek.
Jadi, saya mengevaluasi dua pengklasifikasi saya lagi untuk 5 "versi" dari set pengujian saya dan memperoleh 5 ROC AUCs, 5 sensitivitas dan 5 spesifisitas untuk kedua pengklasifikasi. Kemudian, saya menghitung rata-rata setiap ukuran kinerja untuk 5 subjek (rata-rata ROC AUC, sensitivitas rata-rata dan spesifisitas rata-rata) untuk kedua pengklasifikasi.
Pertanyaan 2: Bagaimana saya bisa menghitung nilai-p untuk memeriksa apakah ada yang secara signifikan lebih baik daripada yang lain sehubungan dengan skor rata-rata (rata-rata ROC AUC, sensitivitas rata-rata, spesifisitas rata-rata)?
Jawaban dengan beberapa contoh python (lebih disukai) atau kode MatLab lebih dari diterima.
Jawaban:
Wojtek J. Krzanowski dan David J. Hand Kurva ROC untuk Data Berkelanjutan (2009) adalah referensi yang bagus untuk semua hal yang terkait dengan kurva ROC. Ia mengumpulkan sejumlah hasil dalam basis literatur yang sangat luas, yang sering menggunakan terminologi berbeda untuk membahas topik yang sama.
Selain itu, buku ini menawarkan komentar dan perbandingan metode alternatif yang telah diturunkan untuk memperkirakan jumlah yang sama, dan menunjukkan bahwa beberapa metode membuat asumsi yang mungkin tidak dapat dipertahankan dalam konteks tertentu. Ini adalah salah satu konteksnya; jawaban lain melaporkan metode Hanley & McNeil, yang mengasumsikan model binormal untuk distribusi skor, yang mungkin tidak sesuai dalam kasus di mana distribusi skor kelas tidak (mendekati) normal. Asumsi skor yang didistribusikan secara normal tampaknya sangat tidak sesuai dalam konteks pembelajaran mesin modern , model umum yang umum seperti xgboost cenderung menghasilkan skor dengan distribusi "bathtub" untuk tugas-tugas klasifikasi (yaitu, distribusi dengan kepadatan tinggi pada ekstrem dekat 0 dan 1). ).
Pertanyaan 1 - AUC
Bagian 6.3 membahas perbandingan ROC AUC untuk dua kurva ROC (hal. 113-114). Secara khusus, pemahaman saya adalah bahwa kedua model ini berkorelasi, sehingga informasi tentang bagaimana menghitung sangat penting di sini; jika tidak, statistik pengujian Anda akan menjadi bias karena tidak memperhitungkan kontribusi korelasi.r
Karena jawaban lain memberikan ekspresi Hanley dan McNeil untuk penaksir varian AUC, di sini saya akan mereproduksi penaksir DeLong dari hal. 68:
Ini adalah garis besar tingkat tinggi yang disederhanakan tentang cara kerja pengujian hipotesis:
Pengujian, dalam kata-kata Anda, "apakah satu classifier secara signifikan lebih baik daripada yang lain" dapat diulangi sebagai pengujian hipotesis nol bahwa kedua model memiliki AUC yang secara statistik sama dengan hipotesis alternatif bahwa statistik tidak sama.
Ini adalah tes dua sisi.
Kami menolak hipotesis nol jika statistik pengujian berada di wilayah kritis dari distribusi referensi, yang merupakan distribusi normal standar dalam kasus ini.
Pertanyaan 1 - Sensitivitas dan Spesifisitas
Poin utama adalah mengembangkan tes yang tepat mengingat bahwa dua proporsi sampel akan dikorelasikan (karena Anda telah menerapkan dua model pada data tes yang sama). Ini ditujukan pada hal. 111.
Pertanyaan 2
Tampaknya cukup untuk menggabungkan hasil dengan rata-rata nilai prediksi untuk setiap responden, sehingga untuk setiap model Anda memiliki 1 vektor dari 100 nilai prediksi rata-rata. Kemudian hitung statistik ROC AUC, sensitivitas dan spesifisitas seperti biasa, seolah-olah model aslinya tidak ada. Ini mencerminkan strategi pemodelan yang memperlakukan masing-masing model 5 responden sebagai salah satu "panitia" model, semacam ansambel.
sumber
Biarkan saya menjawab singkat, karena panduan ini menjelaskan lebih banyak dan lebih baik .
Untuk membandingkan dua AUC, Anda perlu menghitung SE dari keduanya menggunakan:
Dari sana Anda dapat menghitung nilai-p menggunakan kepadatan probabilitas dari distribusi normal standar. Atau cukup gunakan kalkulator ini.
Mudah-mudahan ini menjawab Pertanyaan 1 . - setidaknya bagian yang membandingkan AUC. Sens / Spec sudah dicakup oleh ROC / AUC dalam beberapa cara. Kalau tidak, jawabannya saya pikir terletak pada Pertanyaan 2.
Sedangkan untuk Pertanyaan 2 , Teorema Limit Pusat memberi tahu kami bahwa statistik ringkasan Anda akan mengikuti distribusi normal. Oleh karena itu, saya akan berpikir uji-t sederhana akan cukup (5 ukuran dari satu classifier terhadap 5 langkah dari classifier kedua di mana langkah-langkahnya bisa AUC, sens, spec)
sumber
Untuk Pertanyaan 1, @Sycorax memberikan jawaban yang komprehensif.
Untuk Pertanyaan 2, sejauh yang saya ketahui, rata-rata prediksi dari subjek tidak benar. Saya memutuskan untuk menggunakan bootstrap untuk menghitung nilai-p dan membandingkan model.
Dalam hal ini, prosedurnya adalah sebagai berikut:
Prosedur ini melakukan uji satu sisi dan mengasumsikan bahwa kinerja rata-rata M1> kinerja rata-rata M2.
Implementasi Python dari bootstrap untuk menghitung nilai-p yang membandingkan banyak pembaca dapat ditemukan di repo GitHub ini: https://github.com/mateuszbuda/ml-stat-util
sumber