電商領域中經常需要計算或預測一些轉化率指標,如最典型的CTR(點擊率,Click-Through Rate)。這些轉化率可以是模型的預測值,也可以作爲模型的特徵(feature)使用。以商品點擊率預測爲例,CTR的值等於點擊量(Click)除以曝光量(Impression或Exposure)。以
但在實際應用過程中會碰到兩個問題:
新商品點擊率的預測與計算
對於新上線的商品,其曝光爲0,點擊量也爲0,此時這件商品的CTR應該設爲0還是賦一個初始值?
不同商品點擊率之間的比較
有兩件商品A和B,其點擊率分別爲
第一個問題,初始值設0是可以的,但不太合理。當CTR作爲特徵使用時,表示這個商品完全沒有點擊,不太符合日常推斷,通常是賦一個大於0的初始值。第二個問題,不合理。
解決以上兩個問題可以使用平滑的技術解決。最簡單的方法是在計算CTR的公式中分子分母同時加上一個數,加上之後可避免這兩個問題。
但(2)式中a和b的值如何確定?若設置得不合理會出現數據被放大的情況。本文介紹如何使用貝葉斯平滑來確定a和b的值。
貝葉斯平滑的思想是給CTR預設一個經驗初始值,再通過當前的點擊量和曝光量來修正這個初始值。如果某商品的點擊量和曝光量都是0,那麼該商品的CTR就是這個經驗初始值;如果商品A和商品B的曝光量差別很大,那麼可以通過這個經驗初始值來修正,使得曝光量大的商品的權重增大。
貝葉斯平滑就是確定這個經驗值的過程。貝葉斯平滑是基於貝葉斯統計推斷的,因此經驗值計算的過程依賴於數據的分佈情況。
貝葉斯平滑的推導涉及貝葉斯參數估計,如果對貝葉斯參數估計不熟悉,可以參考這篇文章:貝葉斯參數估計
對於一件商品或一條廣告,對於某次曝光,用戶要麼點擊,要麼沒點擊,這符合二項分佈。因此下文中對於點擊率類的貝葉斯平滑,都是基於以下假設:對於某件商品或廣告
其中
對於不符合二項分佈的比值類數據,後文有說明。
在(3)式的假設下,可以使用極大似然法計算出點擊率的估計值
那麼所有記錄的點擊數的聯合概率密度就是上式的連乘。將連乘後的式子對
上述
在貝葉斯框架下,我們假設點擊率
因爲這是基於經驗的,這個分佈稱爲先驗分佈。貝葉斯參數估計可以同時解決最開始提出的兩個問題。其過程是基於經驗或歷史數據先給出一個
既然有先驗分佈,就有後驗分佈。
貝葉斯估計的過程可以簡單認爲:
用歷史數據根據
適用於點擊率的損失函數有:
適用於點擊率的損失函數有: