推荐系统的目标:根据用户的喜好,为不同的用户推荐不同的物品,促成更多的交易。
1.协同过滤
具有相似消费行为的人,可以相互推荐。比如用户a、b同时购买了手机,a又购买了手机壳,那么b也是手机壳的潜在买家。
往往需要一个物品评分矩阵R,元素ri,j表示用户i对物品j的评分。一般采用5分制,从1(非常不喜欢)到5(非常喜欢)。形如:
表1.1 一个评分矩阵示例
user | p1 | p2 | p3 | p4 | p5 |
---|---|---|---|---|---|
u1 | 5 | 3 | 4 | 4 | ? |
u2 | 3 | 1 | 2 | 3 | 3 |
u3 | 4 | 3 | 4 | 3 | 5 |
u4 | 3 | 3 | 1 | 5 | 4 |
u5 | 1 | 5 | 5 | 2 | 1 |
ui,pi
分别表示用户与物品编号。?
表示待评分。
1.1 基于用户
基本思想:先算用户相似度,找到与用户u最邻近的n个用户。然后根据这些用户对物品p的评分,预测出u对p的评分。
用户相似度,即历史评分行为相似。这也可以说明爱好相似。
使用Pearson相关系数(可译为培生,皮尔逊等),计算a,b两个用户的相似度公式
sim(a,b)=∑p∈P(ra,p−ra¯)(rb,p−rb¯)∑p∈P(ra,p−ra¯)2−−−−−−−−−−−−−√∑p∈P(rb,p−rb¯)2−−−−−−−−−−−−−√(1.1-1)
P为物品集合。 ru¯为用户u的平均评分。
Person相关系数的值从-1(强负相关)到1(强正相关)。
Person相关系数的计算考虑到了不同用户评分标准不尽相同这一情况——有些用户习惯性给高分,有些习惯性差评。
式1.1-2表示 用户a对物品p的评分预测值。
pred(a,p)=ra¯+∑b∈Nsim(a,b)∗(rb,p−rb¯)∑b∈Nsim(a,b)(1.1-2)
N为与用户a打分行为最相似的n个用户的集合。大多数情况下,n取值为20~50比较合理。
1.2 基于物品
基于物品的协同过滤,item-based collaborative filtering 。
基本思想:在购买了p1物品的用户集合中,很多也买了p2,那么其他p1的购买者也是p2的潜在购买者。
物品a,b的相似度计算:
sim(a,b)=|U(a)∩U(b)||U(a)|×|U(b)|−−−−−−−−−−−−√(2.1)
U(p)
表示购买了物品p的用户集合。
因此协同过滤中的物品间相似并不一定是物品属性的相似(比如手机与手机壳被同时购买的概率就很大),而是基于被同时购买的概率的相似。
可以得到与物品p最相似的n个邻近物品集合S(p,n)为:
S(p,n)={x|sim(p,x)topn,x∈P}(2.2)
P为物品全集。
可以得到用户u对物品p的预测评分:
Rec(u,p)=∑i∈Bought(u)∩S(p,n)wpirui(2.3)
wpi表示物品p与物品i的相似度; rui表示用户u对物品i的评分; Bought(u)表示用户u的已买物品集。
2.基于内容的推荐
基本思想:基于内容评估未购买物品与已购买物品的相似度,择优推荐。
为物品维护一些特征集合。 以图书为例:
表2.1物品属性
书名 | 体裁 | 作者 | 类型 | 价格 | 关键词 |
---|---|---|---|---|---|
The Lace Reader | fiction,mystery | Tom | Hardcover | 50.0 | detective,historical |
表2.2用户小明的偏好
书名 | 体裁 | 作者 | 类型 | 价格 | 关键词 |
---|---|---|---|---|---|
/ | fiction,romance | Selina | Paperback(平装) | 40.0 | school,youth |
用户偏好可以分析已购买物品的特征得到。
特征重叠相似度一般用Dice系数
计算。
a,b两物品的Dice系数计算为:
Dice(a,b)=2∗|keywords(a)∩keywords(b)||keywords(a)|+|keywords(b)|(2.1)
可以描述为 2∗重叠特征个数总特征个数。
3.如何评价一款推荐系统
常用于机器学习的N-折交叉检验同样适用。
3.1 推荐准确率
用户感知不到推荐评分,他看到的就是一个推荐列表,也就是评分后top-n的物品列表。所以可以定义准确率=|命中集合||购买集合|:
Precision=∑u∈U|Rec(u)∩Test(u)|∑u∈U|Test(u)|(3.1)
Rec(u)
为生成的用户u的推荐列表;
Test(u)
为测试集中用户u的购买列表。二者的交集就是命中的物品集合。
3.2 推荐召回率
可以定义准确率=|命中集合||推荐集合|:
Recall=∑u∈U|Rec(u)∩Test(u)|∑u∈U|Rec(u)|(3.2)
3.3 评分准确率
可以使用均方根误差来评估。
RMSE=∑u,i∈T(rui−rui^)2−−−−−−−−−−−−−−√|T|(3.3)
rui为用户u对物品i的评分(rating); rui^为预测值。