Metrik galat untuk memvalidasi silang model Poisson


29

Saya memvalidasi silang model yang mencoba memprediksi hitungan. Jika ini adalah masalah klasifikasi biner, saya akan menghitung AUC out-of-fold, dan jika ini adalah masalah regresi saya akan menghitung RMSE atau MAE out-of-fold

Untuk model Poisson, metrik kesalahan apa yang dapat saya gunakan untuk mengevaluasi "keakuratan" dari prediksi out-of-sample? Apakah ada ekstensi Poisson dari AUC yang melihat seberapa baik prediksi memesan nilai aktual?

Tampaknya banyak kompetisi Kaggle untuk penghitungan (mis. Jumlah suara yang bermanfaat yang akan ditinjau oleh ulasan, atau beberapa hari yang akan dihabiskan pasien di rumah sakit) menggunakan root mean log squared error, atau RMLSE.


/ Sunting: Satu hal yang telah saya lakukan adalah menghitung desil dari nilai yang diprediksi, dan kemudian melihat penghitungan yang sebenarnya, binned oleh decile. Jika desil 1 rendah, desil 10 tinggi, dan desil di antaranya semakin meningkat, saya telah menyebut model "baik," tapi saya mengalami kesulitan menghitung proses ini, dan saya yakin ada yang lebih baik pendekatan.

/ Sunting 2: Saya mencari rumus yang mengambil nilai yang diprediksi dan aktual serta mengembalikan beberapa metrik "kesalahan" atau "akurasi". Rencana saya adalah untuk menghitung fungsi ini pada data yang tidak terlipat selama cross-validation, dan kemudian menggunakannya untuk membandingkan berbagai macam model (misalnya regresi poisson, hutan acak dan GBM ).

Sebagai contoh, salah satu fungsinya adalah RMSE = sqrt(mean((predicted-actual)^2)). Fungsi lain seperti itu adalah AUC . Tampaknya tidak ada fungsi yang tepat untuk data poisson.


Untuk model Poisson Anda bisa menggunakan deviance; yang mirip dengan MSE tetapi lebih cocok untuk Poisson. Jika ukuran sampel Anda tidak kecil, MSE tertimbang akan sangat mirip.
Glen_b -Reinstate Monica

@ Glen_b apa rumus untuk penyimpangan?
Zach

1
Penyimpangan . Bagaimana Anda menyesuaikan model Poisson Anda?
Glen_b -Reinstate Monica

Beberapa cara yang berbeda, mulai dari regresi poisson dihukum untuk gbm. Saya mencari metrik kesalahan yang baik untuk membandingkan model yang berbeda. Terima kasih atas sarannya.
Zach

Regresi Poisson setidaknya akan memberi Anda penyimpangan secara otomatis
Glen_b -Reinstate Monica

Jawaban:


37

Ada beberapa aturan penilaian yang tepat dan sangat tepat untuk menghitung data yang dapat Anda gunakan. Aturan penilaian adalah penalti diperkenalkan dengan sebagai distribusi prediktif dan nilai yang diamati. Mereka memiliki sejumlah properti yang diinginkan, pertama dan terutama bahwa perkiraan yang lebih dekat dengan probabilitas sebenarnya akan selalu menerima lebih sedikit penalti dan ada ramalan terbaik (unik) dan itulah ketika probabilitas yang diprediksi bertepatan dengan probabilitas yang sebenarnya. Dengan demikian meminimalkan ekspektasi berarti melaporkan probabilitas sebenarnya. Lihat juga Wikipedia .P y s ( y , P )s(y,P)Pys(y,P)

Seringkali seseorang mengambil rata-rata dari semua nilai prediksi sebagai

S=1ni=1ns(y(i),P(i))

Aturan mana yang harus diambil tergantung pada tujuan Anda, tetapi saya akan memberikan karakterisasi kasar ketika masing-masing bagus untuk digunakan.

Dalam apa yang berikut saya menggunakan untuk fungsi massa probabilitas prediktif dan fungsi distribusi kumulatif prediktif. A menjalankan seluruh dukungan dari distribusi jumlah (yaitu, ). menunjukkan fungsi indikator. dan adalah mean dan standar deviasi dari distribusi prediktif (yang biasanya secara langsung diestimasi jumlah dalam model data hitung). Pr ( Y = y ) F ( y ) k 0 , 1 , , I μ σf(y)Pr(Y=y)F(y)k0,1,,Iμσ

Aturan pemberian skor yang benar-benar tepat

  • Skor Brier : (stabil untuk ketidakseimbangan ukuran dalam prediktor kategoris)s(y,P)=2f(y)+kf2(k)
  • Skor Dawid-Sebastiani : (baik untuk pilihan model prediksi umum; stabil untuk ketidakseimbangan ukuran dalam prediktor kategoris)s(y,P)=(yμσ)2+2logσ
  • Skor penyimpangan : ( adalah istilah normalisasi yang hanya bergantung pada , dalam model Poisson biasanya dianggap sebagai penyimpangan jenuh; baik untuk digunakan dengan perkiraan dari kerangka kerja ML)g y ys(y,P)=2logf(y)+gygyy
  • Skor logaritmik : (sangat mudah dihitung; stabil untuk ketidakseimbangan ukuran dalam prediktor kategoris)s(y,P)=logf(y)
  • Skor probabilitas peringkat : (baik untuk membedakan berbagai prediksi dari jumlah yang sangat tinggi; rentan terhadap ketidakseimbangan ukuran dalam prediktor kategoris)s(y,P)=k{F(k)I(yk)}2
  • Skor bola : (stabil untuk ketidakseimbangan ukuran dalam prediktor kategori)s(y,P)=f(y)kf2(k)

Aturan penilaian lainnya (tidak terlalu tepat tetapi sering digunakan)

  • Skor kesalahan absolut :(tidak tepat)s(y,P)=|yμ|
  • Skor kesalahan kuadrat : (tidak sepenuhnya tepat; rentan terhadap outlier; rentan terhadap ketidakseimbangan ukuran dalam prediktor kategoris)s(y,P)=(yμ)2
  • Skor kesalahan kuadrat dinormalisasi Pearson : (tidak sepenuhnya tepat; rentan terhadap pencilan; dapat digunakan untuk memeriksa jika model memeriksa apakah skor rata-rata sangat berbeda dari 1; stabil untuk ketidakseimbangan ukuran dalam prediksi kategori)s(y,P)=(yμσ)2

Contoh kode R untuk aturan yang benar-benar tepat:

library(vcdExtra)
m1 <- glm(Freq ~ mental, family=poisson, data=Mental) 

# scores for the first observation
mu <- predict(m1, type="response")[1]
x  <- Mental$Freq[1]

# logarithmic (equivalent to deviance score up to a constant) 
-log(dpois(x, lambda=mu))

# quadratic (brier)
-2*dpois(x,lambda=mu) + sapply(mu, function(x){ sum(dpois(1:1000,lambda=x)^2) })

# spherical
- dpois(x,mu) / sqrt(sapply(mu, function(x){ sum(dpois(1:1000,lambda=x)^2) }))

# ranked probability score
sum(ppois((-1):(x-1), mu)^2) + sum((ppois(x:10000,mu)-1)^2)

# Dawid Sebastiani
(x-mu)^2/mu + log(mu)

@Momo, ini utas lama tapi sangat bagus dan bermanfaat. Namun pertanyaan tentang skor logaritmik. Anda menggunakan fungsi -log(f(y)). Apakah -tanda itu benar-benar harus ada di sana? Dalam tautan wikipedia aturan penilaian Anda ( en.wikipedia.org/wiki/Scoring_rule#Logarithmic_scoring_rule ), skor logaritmik sebagai tanpa tanda negatif: L(r,i)=ln(ri)apakah itu normal? Akhirnya, dalam hal ini skor yang lebih tinggi lebih baik atau lebih buruk?
Bastien

Apakah lebih baik (atau setidaknya lebih konservatif dan lebih realistis) untuk menghitung langkah-langkah ini pada set data validasi yang bukan bagian dari data yang digunakan untuk memperkirakan model?
Fred

Mengingat bahwa GLM cocok menggunakan kuadrat terkecil yang berulang secara berulang, seperti dalam bwlewis.github.io/GLM , apa yang sebenarnya menjadi keberatan untuk menghitung R2 tertimbang pada skala tautan GLM, menggunakan bobot 1 / varians sebagai bobot (yang mana akan dikembalikan dalam slot, bobot cocok GLM)? Ini juga akan bekerja untuk GLM Poisson kan?
Tom Wenseleers

Lihat stats.stackexchange.com/questions/412580/… untuk contoh yang dapat direproduksi ...
Tom Wenseleers
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.