【每周一篇】推荐算法之威尔逊区间法
簡單闡述一下自己的學習計劃:
【每周一篇】更側重于理論,希望盡量能夠形成一個體系或者完整的脈絡
當然,也不排除因為業(yè)務或者緊急需求,突然跳到某個領域的可能~
【每周代碼】更側重于代碼實踐,可能是fork一個優(yōu)秀項目,分析核心代碼和算法思路,也可能是自己實現(xiàn)一個小項目demo(如果是這個的話,可能會持續(xù)好幾周都是同一個算法了hhhh)
因為具體工作的空閑時間不定,所以不能保證每周都能更新【一篇】和【代碼】,但是盡量保證每周更新其中之一
僅以自勉~
參考的文章放在前面,主要是整理和歸納(因為自己的水平還沒到可以原創(chuàng)的程度hhh)
會增加自己的解讀或者補充
應用:推薦系統(tǒng)-威爾遜區(qū)間法
寫這篇的原因是因為上一篇代碼部分,reddit社區(qū)的評論排序部分使用了這個方法,因此對這個還挺感興趣的,就去網(wǎng)上專門找了一下,把這個簡單易用的方法全面的學習一下~
先做如下設定:
(1)每個用戶的打分都是獨立事件。
(2)用戶只有兩個選擇,要么投喜歡’1’,要么投不喜歡’0’。
(3)如果總人數(shù)為n,其中喜歡的為k,那么喜歡的比例p就等于k/n。
這是一種統(tǒng)計分布,叫做"二項分布"(binomial distribution)(二項分布后面會補充一個文章)
理論上講,p越大應該越好,但是n的不同,導致p的可信性有差異。
比如,100個人投票,50個人投喜歡;10個人投票,6個人喜歡,我們不能說后者比前者要好,所以需要同時考慮(p,n)兩個參數(shù)
剛才說滿足二項分布,這里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)計量
這里n為評價數(shù),p為好評率,z為對應檢驗對應概率區(qū)間下的統(tǒng)計量
t-分布如圖:
當n的值足夠大時,這個下限值會趨向p,如果n非常小,這個下限值會大大小于p,更加符合實際。
這個算法也被應用于前一篇博客提到的reddit的評論算法
然后這個博客的主人補充了下面的內(nèi)容
計算排名的時候,我們通常會考慮三個事情
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
等等
額外知識補充:
為什么正態(tài)分布非常常見
整理內(nèi)容來自這里→正態(tài)分布為什么常見
其實感覺自己很多問題都沒有深入思考,有機會一定會再重新認真學習一邊概率論與數(shù)理統(tǒng)計(真是對不起我的專業(yè)啊
之前就覺得正態(tài)分布很常見
直到John D.cook的文章
這里需要提到中心極限定理(central limit theorem)
在自然界與生產(chǎn)中,一些現(xiàn)象受到許多相互獨立的隨機因素的影響,如果每個因素所產(chǎn)生的影響都很微小時,總的影響可以看作是服從正態(tài)分布的。
可以看出,隨著統(tǒng)計量個數(shù)的增加,它們和的平均值越來越符合正態(tài)分布。
正態(tài)分布只適合各種因素累加的情況,如果這些因素不是彼此獨立的,會互相加強影響,那么就不是正態(tài)分布了。
如果各種因素對結果的影響不是相加,而是相乘,那么最終結果不是正態(tài)分布,而是對數(shù)正態(tài)分布(log normal distribution),即x的對數(shù)值log(x)滿足正態(tài)分布。
也就是結果的對數(shù)值滿足正態(tài)分布
(我覺得中心極限定理也是一個值得挖掘的坑~下周的內(nèi)容暫定未中心極限定理分析(理論)和相關應用的代碼)
總結
以上是生活随笔為你收集整理的【每周一篇】推荐算法之威尔逊区间法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift语法学习--字典
- 下一篇: JAVA8 Stream的系列操作,Op