Mengevaluasi Kinerja Prediksi Rangkaian Waktu

9

Saya memiliki Dynamic Naive Bayes Model yang dilatih pada beberapa variabel temporal. Output dari model adalah prediksi P(Event) @ t+1, diperkirakan masing-masing t.

Plot P(Event)versus timeadalah seperti yang diberikan pada gambar di bawah ini. Dalam gambar ini, garis hitam mewakili P(Event)seperti yang diprediksi oleh model saya; yang garis merah horisontal merupakan probabilitas sebelumnya dari acara terjadi; dan garis-garis vertikal putus - putus mewakili (lima) kemunculan peristiwa pada deret waktu.

Idealnya, saya ingin melihat P(Event)puncak yang diprediksi sebelum mengamati peristiwa apa pun dan tetap mendekati nol ketika tidak ada prospek acara.

P (Event) versus Grafik Waktu

Saya ingin dapat melaporkan seberapa baik kinerja model saya (garis hitam) dalam memprediksi kejadian acara. Calon yang jelas untuk membandingkan model saya dengan adalah probabilitas kejadian sebelumnya (garis merah), yang -jika digunakan sebagai prediktor- akan memprediksi nilai probabilitas yang sama untuk semua t.

Apa metode formal terbaik untuk mencapai perbandingan ini?

PS: Saat ini saya menggunakan skor (intuitif) seperti kode di bawah ini, di mana skor keseluruhan yang lebih rendah menunjukkan kinerja prediksi yang lebih baik. Saya menemukan bahwa sebenarnya cukup sulit untuk mengalahkan sebelumnya dengan skor ini:

# Get prediction performance
model_score = 0; prior_score=0; 

for t in range(len(timeSeries)):

   if(timeSeries[t]== event):  # event has happened
      cur_model_score = 1- prob_prediction[t]; 
      cur_prior_score = 1 - prior
   else: # no event
      cur_model_score = prob_prediction[t] - 0;
      cur_prior_score = prior - 0;

   model_score = model_score + abs(cur_model_score);
   prior_score = prior_score + abs(cur_prior_score);
Zhubarb
sumber
Apakah Anda pikir Anda bisa memaksakan fungsi kerugian yang berarti? Apakah ada cara untuk mengatakan berapa banyak Anda untung / rugi dengan menebak dengan benar / salah?
James
Saya memikirkan hal ini, tetapi saya tidak ingin menemukan fungsi kerugian sewenang-wenang yang dapat saya atur untuk mencapai kinerja rendah atau tinggi seperti yang saya inginkan.
Zhubarb

Jawaban:

1

Anda dapat membuat kurva ROC. Untuk nilai p antara 0 dan 1, Anda memperkirakan bahwa peristiwa tersebut akan terjadi jika probabilitas yang diprediksi lebih besar dari p. Kemudian Anda menghitung TPR dan FPR yang memberi Anda satu titik pada kurva ROC. Dengan memvariasikan p antara nol dan satu Anda mendapatkan seluruh kurva. Misalnya untuk p <0,005 prediktor berbasis sebelumnya akan selalu mengatakan bahwa acara akan terjadi setiap saat.

Untuk lebih lanjut, lihat:

http://en.wikipedia.org/wiki/Receiver_operating_characteristic

James
sumber
Hanya untuk menambahkan bahwa AUC tersedia sebagai statistik ringkasan untuk kurva ini.
Dugaan