協同過濾演算法——入門

bigface1234fdfg發表於2015-02-05

協同過濾演算法——入門

    

    協同過濾演算法(Collaborative Filtering, CF)是推薦系統演算法中的重頭,也是推薦系統演算法的入門必備,這篇我們入門一下,主要說它的兩大分支:

  • 基於使用者的協同過濾演算法(user based CF);
  • 基於物品的協同過濾演算法(item based CF)。

1. 基於使用者的協同過濾演算法


    這類方法的基本思想是:把A使用者相鄰使用者的偏好物品推薦給A。這裡的相鄰是計算使用者之間的相似性,計算用到的特徵是每個使用者標註偏好物品的偏好值;


    詳細點說,收集許多使用者的歷史日誌log,得到它們標註的偏好物品,以及對應的偏好值。給定一個使用者A,我們也已經有了他的歷史log,包括A的偏好物品和偏好值。

    這時,我們要用A使用者的特徵,計算其和所有使用者的特徵之間的相似性,記為similarity_i,i表示使用者A和第i個鄰居使用者的相似性。

    最後,讓鄰居使用者偏好的物品構成需要推薦的物品集合(除去使用者A已經偏好的物品),讓鄰居使用者對第k個物品的偏好值,乘以對應的使用者A和他的相似性值,求和得到第k個物品需要推薦給使用者A的“得分”。

    這樣也就得到了所有需要推薦的物品的推薦值。

   

   這樣過程可以用下圖來表示:



    分析:基於使用者的CF方法給你推薦的物品是和你相似的人偏好的東西,也就是說,和你相似的人也看了這本書,所以他推薦給你這本書了。如果要是能夠把和你相似的人特點給出來,展示給你看,讓你找到共鳴,這樣你就會對這本書的興趣會大大增加。但是,每個使用者的特徵只是自己偏好物品的偏好值,而使用者的數量是遠遠大於偏好物品數量的,這個方法樣本的特徵維數太少了,效果不一定很好。


2. 基於物品的協同過濾演算法


    這類方法的基本思想是:把使用者A已經偏好的物品的相似物品推薦給A。這裡的特徵是物品被所有使用者標註的偏好值。


    詳細點說,根據使用者A的log,我們已經知道了他標註的偏好物品的偏好值,我們需要計算這些已經被偏好的物品和其餘物品的相似性,然後推薦給A。如何計算相似性呢?

    首先,我們收集每個物品在所有使用者下的歷史log,得到所有使用者對每個物品的偏好值,這樣就可以計算得到候選被推薦物品p和A使用者已經偏好物品q之間的相似性,記為similarity_q. 我們就可以計算出候選被推薦物品與A使用者所有已經偏好物品之間的相似性。

    然後,我們用這個計算好的候選被推薦物品p和A使用者已經偏好物品q之間的相似性similarity_q值,乘以A使用者對偏好物品q的偏好值。這樣把所有乘積再相加,得到候選被推薦物品p的“推薦值”得分。


    這樣子,基於物品的CF演算法就完成了。


    這個過程可以也通過一個圖來表示:



分析:基於使用者的CF方法計算相似性是每個物品被所有使用者的偏好值,特徵長度是使用者數量,這樣子特徵就比上面基於使用者的CF方法要豐富,效果理論上較好。



參考:

http://my.oschina.net/BreathL/blog/62519

http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/index.html

http://www.cnblogs.com/zhangchaoyang/articles/2664366.html

http://www.cnblogs.com/luchen927/archive/2012/02/01/2325360.html


相關文章