2012-10-25 20 views
8

हम एक सीटीआर को प्रशिक्षित जब मॉडल (के माध्यम से दर क्लिक करें), कभी कभी हम इतिहास डेटा से वास्तविक सीटीआर calcute की जरूरत है, इससीटीआर की गणना करते समय इंप्रेशन पूर्वाग्रह से कैसे बचें?

 

       #(click) 
    ctr = ---------------- 
       #(impressions) 

की तरह हम जानते हैं कि, अगर छापों की संख्या बहुत छोटा है, calculted सीटीआर असली नहीं है। तो हम बड़े पर्याप्त इंप्रेशन को फ़िल्टर करने के लिए हमेशा एक थ्रेसहोल्ड सेट करते हैं।

लेकिन हम जानते हैं कि उच्च इंप्रेशन, सीटीआर के लिए उच्च आत्मविश्वास। फिर मेरा सवाल यह है कि: क्या सीआरआर की गणना करने के लिए कोई इंप्रेशन-सामान्यीकृत सांख्यिकीय विधि है?

धन्यवाद!

उत्तर

11

आपको शायद अपने अनुमानित सीटीआर के लिए आत्मविश्वास अंतराल का प्रतिनिधित्व करने की आवश्यकता है। Wilson score interval कोशिश करने के लिए एक अच्छा है।

  • \hat p मनाया सीटीआर
  • n छापों
  • की कुल संख्या है (#impressions बनाम #clicked के अंश) है:

    Wilson score interval

    आप आत्मविश्वास स्कोर की गणना करने आँकड़े नीचे की जरूरत है

  • z α/2(1-α/2) मानक की मात्रा है और न ही मल वितरण

अजगर में एक साधारण कार्यान्वयन नीचे दिखाया गया है, मैं z (1-α/2) = 1.96 जो एक 95% विश्वास अंतराल से मेल खाती है का उपयोग करें। मैंने कोड के अंत में 3 परीक्षण परिणाम संलग्न किए।

# clicks  # impressions  # conf interval 
2    10     (0.07, 0.45) 
20   100     (0.14, 0.27) 
200   1000    (0.18, 0.22) 

अब आप गणना किए गए आत्मविश्वास अंतराल का उपयोग करने के लिए कुछ सीमा निर्धारित कर सकते हैं।

from math import sqrt 

def confidence(clicks, impressions): 
    n = impressions 
    if n == 0: return 0 
    z = 1.96 #1.96 -> 95% confidence 
    phat = float(clicks)/n 
    denorm = 1. + (z*z/n) 
    enum1 = phat + z*z/(2*n) 
    enum2 = z * sqrt(phat*(1-phat)/n + z*z/(4*n*n)) 
    return (enum1-enum2)/denorm, (enum1+enum2)/denorm 

def wilson(clicks, impressions): 
    if impressions == 0: 
     return 0 
    else: 
     return confidence(clicks, impressions) 

if __name__ == '__main__': 
    print wilson(2,10) 
    print wilson(20,100) 
    print wilson(200,1000) 

"""  
-------------------- 
results: 
(0.07048879557839793, 0.4518041980521754) 
(0.14384999046998084, 0.27112660859398174) 
(0.1805388068716823, 0.22099327100894336) 
""" 
+0

अपने जवाब के लिए धन्यवाद। लेकिन मैं जानना चाहता हूं कि क्या इंप्रेशन-सामान्यीकृत सांख्यिकीय विधि है, अनुमानित सीटीआर के लिए विश्वास नहीं। उदाहरण के लिए, यह विधि इस तरह दिख सकती है: # (क्लिक करें) * 2/(# (इंप्रेशन) + औसत (# इंप्रेशन)) – Tim

+1

वास्तव में मुझे यकीन नहीं है कि मैं समझता हूं कि आप क्या चाहते हैं और आप इस तरह क्यों चाहते हैं। एक Bayesian अनुमानक के बारे में कैसे? या आईएमडीबी स्कोर की तरह कुछ? http://en.wikipedia.org/wiki/Bayes_estimator – greeness

+0

क्या z = 1.6 90% आत्मविश्वास से मेल नहीं खाता है? Google सहायक: https://www.google.ru/search?q=z+values+confidence, डमीज़ के लिए लेख :-): http://www.dummies.com/how-to/content/finding- अनुचित- zvalues-for-given-confident-l.html – skaurus

4

यदि आप इसे एक द्विपक्षीय पैरामीटर के रूप में देखते हैं, तो आप Bayesian अनुमान कर सकते हैं। यदि सीआरआर पर आपका पूर्व वर्दी है (पैरामीटर के साथ बीटा वितरण (1,1)) तो आपका पोस्टर बीटा (1 + # क्लिक, 1 + # इंप्रेशन- # क्लिक) है। आपका पिछला मतलब # क्लिक + 1/# इंप्रेशन + 2 है यदि आप इस पोस्टरियर की एक सारांश सारांश चाहते हैं, लेकिन शायद आप नहीं करते हैं, और यहां क्यों है:

मुझे नहीं पता कि यह निर्धारित करने के लिए आपकी विधि क्या है सीटीआर काफी ऊंचा है, लेकिन मान लीजिए कि आप सीटीआर> 0.9 के साथ सब कुछ में रुचि रखते हैं। इसके बाद आप बीटा वितरण के संचयी घनत्व फ़ंक्शन का उपयोग कर सकते हैं यह देखने के लिए कि संभाव्यता द्रव्यमान का अनुपात 0.9 थ्रेसहोल्ड से अधिक है (यह केवल 1 होगा - सीडीएफ 0.9 पर)। इस तरह, आपका थ्रेसहोल्ड स्वाभाविक रूप से सीमित नमूना आकार की वजह से अनुमान के बारे में अनिश्चितता को शामिल करेगा।

0

इस आत्मविश्वास अंतराल की गणना करने के कई तरीके हैं। विल्सन स्कोर का एक विकल्प क्लॉपर-पेरसन अंतराल है, जिसे मैंने स्प्रेडशीट में उपयोगी पाया।

Upper Bound Equation

Lower Bound Equation

कहाँ

  • B() उलटा बीटा वितरण
  • alpha है आत्मविश्वास का स्तर त्रुटि है (95% आत्मविश्वास के स्तर के लिए जैसे, अल्फा 5% है)
  • n सैंप की संख्या है लेस (उदा। छापों)
  • x सफलताओं की संख्या (उदाहरण के लिए क्लिक करता है)

Excel में B() के लिए क्रियान्वयन की BETA.INV सूत्र द्वारा प्रदान की जाती है।

Google पत्रक में बी के लिए कोई समकक्ष सूत्र() नहीं है, लेकिन किसी Google Apps स्क्रिप्ट कस्टम समारोह जावास्क्रिप्ट सांख्यिकीय लाइब्रेरी से अनुकूलित किया जा सकता (jstat के लिए उदाहरण, खोज GitHub)