在線做插畫的網(wǎng)站seo案例分享
1、威爾遜平滑引入的動機
在曝光很少的情況下,計算出的CTR并不真實可靠,而樣本數(shù)越大,CTR的比例才越準確,更能反應(yīng)真實情況。
為了衡量樣本數(shù)對于CTR信區(qū)間的影響,我們引入"威爾遜(Wilson)區(qū)間"的概念。Wilson區(qū)間的含義就是,就是指在一定置信度下,真實的CTR范圍是多少。
2、威爾遜平滑公式
p —— 概率,即點擊的概率,也就是 CTR?
n —— 樣本總數(shù),即曝光數(shù)
z —— 在正態(tài)分布里,均值 + z * 標準差會有一定的置信度。例如 z 取 1.96,就有 95% 的置信度。
Wilson區(qū)間的含義就是,就是指在一定置信度下,真實的 CTR 范圍是多少。
3、置信度區(qū)間z參數(shù)設(shè)置
置信度水平與區(qū)間的關(guān)系如下
4、威爾遜幾種實現(xiàn)代碼
設(shè)置n小于多少時,認定為小樣本,下面默認曝光次數(shù)小于10000時為小樣本。
class WilsonCorrect(object):def evaluate(self, p, n, z=1.96, threshold=10000):score = pp = min(p, 1)if 0 < n < threshold:try:score = (p + z * z / (2 * n) - z / (2 * n) * math.sqrt(4 * n * (1 - p) * p + z * z)) / (1 + z * z / n)except:passreturn score
當ctr大于某一閾值時,直接歸0
import numpy as npdef walson_ctr(num_click, num_pv, z=1.96):p = num_click * 1.0 / num_pvif p > 0.9:return 0.0n = num_pvA = p + z**2 / (2*n)B = np.sqrt(p * (1-p) / n + z**2 / (4*(n**2)))C = z * BD = 1 + z**2 / nctr = (A - C) / Dreturn ctr
全走wilson平滑
double walson_ctr(int num_pv, int num_click) {if (num_pv * num_click == 0 || num_pv < num_click) {return 0.f;}double score = 0.f;double z = 1.96f;int n = num_pv;double p = 1.0f * num_click / num_pv;score = (p + z*z/(2.f*n) - z*sqrt((p*(1.0f - p) + z*z /(4.f*n))/n)) / (1.f + z*z/n);return score;
}
5、威爾遜實例
舉個例子,有三個廣告:
A:點擊數(shù) ? 5 ? ? 曝光數(shù) ? 10
B:點擊數(shù) ? 50 ? ? 曝光數(shù) ? 100
C:點擊數(shù) ? 500 ? ? 曝光數(shù) ? 1000
這三個廣告的CTR 都是0.5 ,但是按照實際表現(xiàn),從置信的角度分析,應(yīng)該是C>B>A,因為C的樣本數(shù)更多,可信度更高。
利用威爾遜平滑后的ctr預(yù)估值如下:
walson_ctr(5,10):0.2365895936154873
walson_ctr(50,100):0.40382982859014716
walson_ctr(500,1000):0.4690690341793595
6、參考文獻
機器學習之數(shù)據(jù)處理威爾遜置信區(qū)間-CSDN博客
【推薦系統(tǒng)】推薦系統(tǒng)中一些常用的技術(shù)方法_威爾遜區(qū)間平滑-CSDN博客