Collaborative Filtering

一個經典的推薦系統通常分爲召回階段和排序階段,召回階段是指從大量的(可能高達數十億)的item中選定候選集(通常爲幾千到幾百的範圍)的過程,而排序階段是指對候選集中的item按照用戶偏好進行排序。本質上來講,全部推薦算法的目標都是識別用戶對某一item的偏好,也就是說,對於以下的一個user-item-preference矩陣,咱們須要預測其中任意一點的值:算法

大部分狀況下,這張表是至關稀疏的,並且在隨着時間不斷更新,咱們也不可能把它所有算出來。因此基本上咱們只有在查詢的時候纔會由模型來計算某個用戶的preference的值,而不一樣的推薦系統即意味着:架構

  1. 對用戶preference的不一樣定義。有時候,用戶的評分是明確的,好比咱們會在豆瓣和淘寶對item進行打分。但更多時候,咱們是沒有這個明確的rank的。這種狀況下,咱們擁有的數據是用戶的implicit feedback(隱式反饋),好比說用戶的瀏覽、點擊、播放等行爲。咱們須要使用用戶的行爲來肯定preference的值,在不少狀況下,咱們使用不一樣行爲的加權和做爲preference。用戶行爲的權重會根據咱們的關注度而改變,好比在視頻網站,咱們可能關注播放行爲;在淘寶,可能主要關注購買行爲。咱們根據不一樣的關注點對用戶的preference進行不一樣的定義,這個定義決定了推薦系統的輸入,每每也決定了推薦系統的目標。網站

  2. 對預測目標的不一樣定義。一個推薦系統是很是複雜的,咱們會在不一樣場景下使用不少不一樣的推薦算法,來構成整個推薦算法。用戶的preference每每是較爲複雜的,在不少場景下不能直接觀測,這時咱們一般會使用另一些指標來做爲它的度量。還有不少時候preference不是一個適合做爲推薦算法目標的值,因此咱們在不一樣的場景下仍是會爲推薦算法設立不一樣的相關的目標值。典型的好比CTR(click rate),playback_duration之類的。ui

  3. 對評測指標的不一樣定義。評測指標是個總體的目標,好比用戶滿意度、用戶購買率等等,咱們在最終評價一個推薦系統的好壞時會用這些指標。好比一個視頻網站,真正關注的確定是用戶留存率、盈利等數據,這是長期評測指標;總的用戶watch minutes是短時間評測指標;preference是一個用戶播放行爲、點擊行爲、收藏行爲等綜合起來決定的值;而在不一樣場景的推薦算法中,預測目標多是用戶的CTR,playback_duration等等。設計

  4. 召回階段的不一樣篩選策略。基本是比較大方向的規則,好比popular content + saved content + historic related content等等。3d

  5. 排序階段不一樣的預測模型。種類很是多,是如今推薦系統領域的主要關注方向。cdn

  6. 不一樣的模型更新時間,即時的或者離線的。這個跟推薦系統的底層架構有關,一般是在整個系統設計的時候就已經決定了,不過仍是有一些例外的狀況,好比說有一些算法自己就是即時更新不須要預訓練的,我遇到過的有MAB,kalman filter等等。 而咱們平常的工做基本上只關注第5點,不一樣場景下,排序階段不一樣的預測模型。接下來咱們討論的算法都只與這一點有關。視頻

協同過濾: Collaborative Filtering

協同過濾是最經典的鄰域推薦算法之一。所謂鄰域算法,就是新的推薦項目是由它的鄰居的數據生成的。在不一樣的協同過濾算法中,對鄰居的定義是不一樣的。blog

User-based CF

咱們考慮上面的user-item矩陣。假定咱們如今有了一些user對item的preference,咱們接下來的目標是把空白填滿,咱們會選擇怎麼填呢?在user-based CF,咱們使用兩個步驟:排序

(1)找到和目標用戶興趣類似的用戶集合。

(2)找到這個集合中的用戶喜歡的,且目標用戶未consume的item,更新它們的user-item preference並排序。

咱們把用戶類似度定義爲餘弦類似度:

即:

  • 召回階段,創建物品對用戶的倒排索引表,對於每一個物品都保存對該物品產生過行爲的用戶,掃描該表,找到全部|N(u)∩ N(v)|不爲0的用戶對,計算其他弦類似度。對於用戶v,其全部有交集的用戶中和他最類似的k個用戶是他的鄰居。這些用戶發生過行爲的item集合就是召回集合。

  • 排序階段:用戶u對物品i的感興趣程度以下,其中S(u, k)是和用戶u興趣最接近的k個用戶,N(i)是對物品i有過行爲的用戶集合,wuv是用戶u和v的興趣類似度,rvi是用戶v對物品i的感興趣程度。

對user-based CF的改進基本是對這兩個公式的改變,即改變用戶類似度的計算方法,或者改變物品感興趣程度的計算方法。

Item-based CF

咱們仍是看這個user-item矩陣。在item-based CF中,咱們給用戶推薦和他們以前喜歡的物品類似的物品。而和user-based CF相對稱,它主要經過用戶的行爲計算物品之間的類似度。

物品類似度:

其中N(i)表示喜歡item i的用戶

和User-CF算法相似,使用item-CF能夠先創建用戶-物品倒排索引表,從而計算物品之間的餘弦類似度,並在獲得物品之間的類似度後,使用以下公式計算user u對item j的preference:

其中N(u)是用戶交互過的物品,S(j,K)是最類似的K個物品,wji是物品j和物品i的類似度,rui是user u對item i的偏好。

item-CF的最大優點是能夠從歷史數據中提供推薦解釋。

經過偏好歸一化、懲罰熱門物品,改變類似度公式等方法,咱們能夠不斷改進item-CF。

相關文章
相關標籤/搜索