मेरे पास एक डायनेमिक नाइव बेयस मॉडल है जो कि कुछ अस्थायी चरों पर प्रशिक्षित है। मॉडल का आउटपुट P(Event) @ t+1
प्रत्येक की अनुमानित भविष्यवाणी है t
।
P(Event)
बनाम time
का प्लॉट नीचे दिए गए चित्र में दिया गया है। इस चित्र में, काली रेखा को दर्शाता है P(Event)
के रूप में अपने मॉडल के आधार पर भविष्यवाणी की; क्षैतिज लाल रेखा घटना हो रहा है की पूर्व संभावना प्रतिनिधित्व करता है; और बिंदीदार खड़ी रेखाएं समय श्रृंखला पर (पांच) घटना घटती हैं।
आदर्श रूप से, मैं P(Event)
किसी भी घटना को देखने से पहले भविष्यवाणी की गई चोटी को देखना चाहता हूं और किसी घटना की कोई संभावना नहीं होने पर शून्य के करीब रहना चाहिए।
मैं यह रिपोर्ट करने में सक्षम होना चाहता हूं कि मेरा मॉडल (काली रेखा) घटना की घटनाओं की भविष्यवाणी करने में कितना अच्छा प्रदर्शन करता है। मेरे मॉडल के साथ तुलना करने के लिए एक स्पष्ट उम्मीदवार घटना (लाल रेखा) की पूर्व संभावना है, जो -इसे भविष्यवक्ता के रूप में उपयोग किया जाता है- सभी के लिए समान संभावना मूल्य की भविष्यवाणी करेगा t
।
इस तुलना को प्राप्त करने के लिए सबसे अच्छा औपचारिक तरीका क्या है ?
पुनश्च: मैं वर्तमान में नीचे कोडित के रूप में (सहज) स्कोरिंग का उपयोग कर रहा हूं, जहां एक समग्र निचला स्कोर बेहतर भविष्यवाणी प्रदर्शन को इंगित करता है। मैंने पाया कि वास्तव में इस स्कोरिंग से पूर्व को हरा पाना काफी मुश्किल है:
# 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);