基于統(tǒng)計思想下的推薦系統(tǒng)

0 評論 8429 瀏覽 47 收藏 6 分鐘

基于統(tǒng)計思想下的推薦系統(tǒng)是什么樣的?文章為你揭開迷霧。

我們先做如下設定:

  1. 每個用戶的打分都是獨立事件。
  2. 用戶只有兩個選擇,要么投喜歡’1’,要么投不喜歡’0’。
  3. 如果總?cè)藬?shù)為n,其中喜歡的為k,那么喜歡的比例p就等于k/n。

這是一種統(tǒng)計分布,叫做”二項分布”(binomial distribution)

理論上講,p越大應該越好,但是n的不同,導致p的可信性有差異。100個人投票,50個人投喜歡;10個人投票,6個人喜歡,我們不能說后者比前者要好。

所以這邊同時要考慮(p,n)

剛才說滿足二項分布,這里p可以看作”二項分布”中某個事件的發(fā)生概率,因此我們可以計算出p的置信區(qū)間。

所謂”置信區(qū)間”,就是說,以某個概率而言,p會落在的那個區(qū)間。

置信區(qū)間展現(xiàn)的是這個參數(shù)的真實值有一定概率落在測量結果的周圍的程度。置信區(qū)間給出的是被測量參數(shù)的測量值的可信程度,即前面所要求的“一個概率”,也就是結論的可信程度。

二項分布的置信區(qū)間有多種計算公式,最常見的是”正態(tài)區(qū)間”(Normal approximation interval)。但是,它只適用于樣本較多的情況(np > 5 且 n(1 ? p)> 5),對于小樣本,它的準確性很差。

這邊,我推薦用t檢驗來衡量小樣本的數(shù)據(jù),可以解決數(shù)據(jù)過少準確率不高的問題。

這樣一來,排名算法就比較清晰了:

  • 第一步,計算每個case的p(好評率)。
  • 第二步,計算每個”好評率”的置信區(qū)間(參考z Test或者t Test,以95%的概率來處理)。
  • 第三步,根據(jù)置信區(qū)間的下限值,進行排名。這個值越大,排名就越高。

解釋一下,n為評價數(shù),p為好評率,z為對應檢驗對應概率區(qū)間下的統(tǒng)計量

比如t-分布:

可以看到,當n的值足夠大時,這個下限值會趨向p,如果n非常小,這個下限值會大大小于p,更加符合實際。

Reddit的評論排名,目前就使用這個算法。國內(nèi)的化,滴滴也有部分業(yè)務涉及,效果也不錯。

除此之外,在計算排名的時候,我們通常會考慮三個事情

  1. 上文講到的,次數(shù)+好評率的分布,次數(shù)越多好評率越可靠,好評率越高該項越值得推薦
  2. 時間因素,如果一個項目是10天前推送的,一個項目是昨天推送的,很明顯前者的次數(shù)遠大于后者
  3. 影響權重,你這邊只考慮了喜歡和不喜歡,其實所有的排序不可能只以1個維度考慮,通常會考慮多個維度,比如瀏覽次數(shù),搜索次數(shù)等,你需要考慮每個的重要性或者說權重大小

1.這里就不講了,其他方法也有很多,比如貝葉斯平均的優(yōu)化版本、再比如經(jīng)典的Hacker公式:

2.時間因素:

時間越久,代表之前的投票結果對當前的影響越小,這邊有很多不同的影響方式,舉幾個例子:

比如艾賓浩斯遺忘規(guī)律:

這里的c、k決定下降速度,業(yè)務運用過程中,c值一般在[1,2],k值一般在[1.5,2.5]

比如時效衰減:

這里就是比較常見的移動窗口式的,永遠只看近期某一段時間,而且時間內(nèi)呈線性下降,不過可以改變變化方式

3.不同種的屬性對于結果的影響自然不同

舉個例子,用戶主動搜索和用戶瀏覽相比,用戶主動搜索的情況下,用戶的需求更為強烈。

通常需要判斷這些強烈程度都是通過:

  • 相關性:看因變量與自變量之間的相關系數(shù),如:cor函數(shù)
  • importance:看刪除或者修改自變量,對應變量的判斷影響大小,如:randomForest的重要性
  • 離散程度:看自變量的數(shù)據(jù)分布是否足夠分散,是否具有判斷依據(jù),如:變異系數(shù)或者pca等等。

End.

 

作者:沙韜偉

來源:http://www.36dsj.com/archives/89802

本文來源于人人都是產(chǎn)品經(jīng)理合作媒體@36大數(shù)據(jù),作者@沙韜偉

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!