豆瓣电影推荐系统(Ⅰ)ItemCF算法原理
豆瓣電影推薦系統(Ⅰ)算法原理
- 前言
- ItemCF算法原理
- 常用術語(評價指標)
- 實現原理
- 與UserCF比較
來自github上的一個推薦系統項目的學習筆記,主要通過python與mysql實現,不足之處望讀者多多指正
前言
?關于推薦系統,主流算法主要有
- 基于用戶(UserCF)
- 基于物品(ItemCF)
- LFM隱語義模型
- 二分圖模型等,
這里項目使用的算法是基于物品的推薦算法(ItemCF),優點是對于具有大量用戶的推薦系統計算量相對于UserCF。
ItemCF算法原理
常用術語(評價指標)
假設對用戶u推薦N個物品(記為R(u)),令用戶在物品集中喜歡的物品集合為T(u),評價算法的兩個指標為:
- 召回率(Recall):Recall=∑u∣R(u)∩T(u)∣∑u∣T(u)∣\frac{\sum_{u}|R(u) \cap T(u)|}{\sum_{u}|T(u)|}∑u?∣T(u)∣∑u?∣R(u)∩T(u)∣?;描述的是用戶的評分記錄在喜歡列表中所包含的比例。
- 準確率(Precision):Precision=∑u∣R(u)∩T(u)∣∑u∣R(u)∣\frac{\sum_{u}|R(u) \cap T(u)|}{\sum_{u}|R(u)|}∑u?∣R(u)∣∑u?∣R(u)∩T(u)∣?;描述的的推薦列表的用戶評分的比例。
- 覆蓋率(Coverage):Coverage=Uu∈UR(u)∣∣I∣=\frac{U_{u \in U} R(u) \mid}{|I|}=∣I∣Uu∈U?R(u)∣?
實現原理
?基于物品的協同過濾算法主要分為兩步。
(1) 首先計算物品之間的相似度;
(2)根據物品的相似度和用戶的歷史行為給用戶生成推薦列表。
定義Wij為物品i與物品j之間的相似度,計算公式為:wij=∣N(i)∩N(j)∣∣N(i)∣w_{i j}=\frac{|N(i) \cap N(j)|}{|N(i)|}wij?=∣N(i)∣∣N(i)∩N(j)∣?
其中N(i)表示喜愛物品i用戶數量,N(j)為喜愛物品j的用戶數量。
為了排除熱門物品的影響,更好的挖掘挖掘長尾信息,使用改進的相似度公式為:wij=∣N(i)∩N(j)∣∣N(i)∣∣N(j)∣w_{i j}=\frac{|N(i) \cap N(j)|}{\sqrt{|N(i)||N(j)|}}wij?=∣N(i)∣∣N(j)∣?∣N(i)∩N(j)∣?
據此可以得到空閑矩陣C(C[i] [j]表示喜歡物品i與物品j的用戶數量):算例如下圖:
再將矩陣C歸一化可以得到物品之間的余弦相似矩陣W。
得到物品間的相似度后,再計算用戶u對一個物品j的興趣,計算公式:
其中N(u)為用戶喜歡的物品集合,S(j,k)為物品j最相似的K個物品集合,wij為物品i、j間的相似度,rui為用戶u對物品i的興趣,對于隱反饋數據集,如果用戶u對物品i有過行為,即可令rui=1,該公式的含義是,和用戶歷史上感興趣的物品越相似的物品,越有可能在用戶的推薦列表中獲得比較高的排名。該公式的實現代碼如下所示。
一個例子:
與UserCF比較
總結
以上是生活随笔為你收集整理的豆瓣电影推荐系统(Ⅰ)ItemCF算法原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Galaxy+note3+android
- 下一篇: 在Windows Azure中使用自己的