Collaborative Filtering根據近鄰推薦時需要考慮的3要素

Collaborative Filtering根據近鄰推薦時需要考慮的3要素

在使用類似於item-based 或user-based collaborative filtering構建推薦策略時,會涉及以下3個因素:

  1. 訓練數據的歸一化: 工業界推薦系統,包括商業系統中user的數量非常龐大(例如facebook是10億級別),而user都會有自己對推薦內容打分的獨特習慣,例如有些人對推薦內容,都會一股腦地接收,或是給出較高的評價,而有些人則會打較低的分數;有些人總給一樣的分數,有些人的評價則分佈較爲廣泛。這就需要對訓練數據進行歸一化,規避user個性化對模型的影響。
  2. 尋找一種適合數據的相似度度量方法:信息檢索中的經典問題。在推薦系統中,第一步就是需要找到待推薦的候選, 以及之後的衆多過濾,基本都是在使用合適的相似度度量過濾不相關的item,保留較爲相關的item。例如在百度關鍵詞推薦系統,以及觸發系統中,大部分的工作,都是圍繞相似度度量展開的(當然會比較複雜,包含各種特定場景,特定優化目標的相關性模型,以及使用topic model進行語義相關性計算)
  3. 高效的neigibors查找算法: 正如1中提到,工業界中待推薦處理的user/item較多,所以不可能爲每個neighbor的pair都計算相似度,所以一般會對待計算的neighbors進行剪枝,僅計算‘靠譜’的neighbors進行計算。

訓練數據歸一化

最常用的訓練數據歸一化方法,非Mean-centering莫屬,該方法的核心思想就是對於每一個user,找出其投票分值得中心,該用戶其他的分值均會與該中心對比正負,即不關心投票分數的絕對值,而是看與均值的偏差: 如果投票分數爲負數,說明是一個負向的打分,如果爲正值,則說明正向。例如小明和小張都是用戶,小明平均情況下對電影的打分是3分(例如滿分是5,最低分是1),小張的打分均值是4,說明相比於小明,小張喜歡打高分,對於小張,一個電影如果打分爲3就算是負向評價了,而同樣的分值對於小明這樣的分數是個中性的分數。

item-base CF中mean-centering計算方法如下:

mean-centering-normalization

 

user-based CF中mean-centering計算方法同理

設想這樣一個場景: 小明和小張投票的均值均爲3,小明投票時都投3分,而小張則各個分數的分佈都有。如果小明和小張對於同一個電影都投了5分,此時小明和小張的投票體現出的信息是不同的: 小明平常都投3分而此時投了5分,這一票體現出的信息,比經常投5分的小張的一票體現出的信息要多(類似於TF-IDF中的IDF原理),而Mean-Centering則不能體現該特性。故我們引出另一種Normalization方法: Z-Score

Z-Score

核心思路是:如果一個用戶投票的波動較大,則其投票的話語權要降低。具體計算公式與Mean-Centering相比,除以標準差即可。

z-score

 

極端的解釋,就是經常投各種票的人, 其投票的權重會被降低;而投票分值一般不變,但突然改變以往習慣投票值得一票,體現出的信息較多。

在這插入另一篇文章中的思想: 就是經常投票給較多item的user的票的權值需要進行懲罰。例如在youtube推薦視頻時,如果某個視頻經常和很多視頻一起被觀看,則有可能不是因爲他們相關,而是某個視頻就是比較熱,需要增加懲罰降低‘哈利波特’效應(具體思想可參見論文: the youtube video recommendation system),例如百度關鍵詞推薦系統中就在級聯二步圖算法中對類似邊的權值進行了懲罰(具體技術實現後續會有專門章節介紹)

Neighborhood 中的相似度度量方法參見前文,此處就不再複述。

http://semocean.com/%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E7%9B%B8%E4%BC%BC%E5%BA%A6%E5%BA%A6%E9%87%8F/

至於高效的Neighbors計算方法,則可以在離線計算時設定固定Neighbors的具體N值(KNN中的N),之後在性能和效果之間權衡, 就像你知道的,很多時候,系統設計,就是在不停地在性能和效果之間做取捨達到平衡。

參考文獻:

the youtube video recommendation system,James Davidson 等

RSs Handbooks


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章