協同過濾演算法——入門
協同過濾演算法——入門
協同過濾演算法(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
相關文章
- 協同過濾演算法演算法
- 推薦協同過濾演算法演算法
- 協同過濾演算法簡介演算法
- SimRank協同過濾推薦演算法演算法
- 協同過濾演算法概述與python 實現協同過濾演算法基於內容(usr-it演算法Python
- 協同過濾推薦演算法總結演算法
- 基於物品的協同過濾演算法演算法
- 協同過濾筆記筆記
- 【小白學推薦1】 協同過濾 零基礎到入門
- chapter2:協同過濾APT
- 推薦系統入門之使用協同過濾實現商品推薦
- 協同過濾(CF)演算法詳解和實現演算法
- 基於使用者的協同過濾演算法演算法
- Slope One :簡單高效的協同過濾演算法演算法
- 基於矩陣分解的協同過濾演算法矩陣演算法
- 物品推薦(基於物品的協同過濾演算法)演算法
- 【Datawhale】推薦系統-協同過濾
- [機器學習]協同過濾演算法的原理和基於Spark 例項機器學習演算法Spark
- 矩陣分解在協同過濾推薦演算法中的應用矩陣演算法
- 協同過濾實現小型推薦系統
- chapter3:協同過濾-隱式評級及基於物品的過濾APT
- 推薦召回--基於物品的協同過濾:ItemCF
- 【轉】推薦系統演算法總結(二)——協同過濾(CF) MF FM FFM演算法
- 協同過濾的R語言實現及改進R語言
- 推薦系統與協同過濾、奇異值分解
- 協同過濾在推薦系統中的應用
- git 入門教程之協同開發Git
- Spring Cloud Gateway ---GatewayFilter過濾器、過濾器工廠(入門)SpringCloudGatewayFilter過濾器
- 神經圖協同過濾(Neural Graph Collaborative Filtering)Filter
- Python之協同過濾(尋找相近的使用者)Python
- 深入理解mahout基於hadoop的協同過濾流程Hadoop
- 推薦系統--完整的架構設計和演算法(協同過濾、隱語義)架構演算法
- 基於遺傳最佳化的協同過濾推薦演算法matlab模擬演算法Matlab
- Qt入門(8)——事件和事件過濾器QT事件過濾器
- [R]可能是史上程式碼最少的協同過濾推薦引擎
- 【JAVA】助力數字化營銷:基於協同過濾演算法實現個性化商品推薦Java演算法
- vue 基礎入門筆記 07:過濾器Vue筆記過濾器
- 《MySQL 入門教程》第 08 篇 過濾條件MySql