基于近邻的推荐方法
推进系统要找到的是最优项(Best Item)和最优N项(Top-N)
基本概念
符号定义说明
用户集U(user),物品集I(item),评价分数集合S(score)
rui 是用户u对i的评分
Iu 是用户u评分过的物品集合
Ui 是对i打过分的用户集合
Iuv 同时被用户u和v打过分的物品集合
Uij 同时对物品i和j打过分的用户集合
常用准确率评判指标
平均绝对误差(MAE)
MAE(f)=1|Rtest|∑rui∈Rtest|f(u,i)−tui|
均方根误差(RMSE)
RMSE(f)=1|Rtest|∑rui∈Rtest(f(u,i)−tui)2‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√
对于2元的评分用准确率召回率
协同过滤概述
如果用户u和用户v在其他物品上的评分很相似,呢么用户u对新物品i的评分和用户v对物品i的评分也是相似的
若其他用户v对物品i和j的评分相似,则用户u对对物品i和j的评分相似
基于近邻的推荐有2种方法,基于用户和基于物品
- 基于用户
- 评估用户u对物品i的偏好程度,利用已经对i评价过,而且和用户u有相似评级习惯的用户,把这些用户作为近邻来预测用户u对物品i的偏好
- 基于物品
- 基于用户u对给与物品i相似的物品的评分,来预测用户对i的评分,相似物品指的是被一些用户评价相似的物品
基于近邻的方法直接应用评分数据进行预测,基于模型的推荐利用评分来学习预测模型
基于模型的方法常用模型
- 贝叶斯聚类(Bayesian Clustering)
- 潜在语义分析(Latent Semantic Analysis)
- 潜在狄利克雷分布(Latent Dirichlet Allocation)
- 最大熵(Maximum Entropy)
- 玻尔兹曼机(Boltzmann Machines)
- 支持向量机(Support Vector Machine)
- 奇异值分解(Singular Value Decomposition)
基于邻近方法的优势
- 简单:可调参数只有一个,最近邻居数
- 合理性:近邻用户或相似物品给推荐结果直观的解释
- 高效性:相比基于模型的推荐不需要训练,但是推荐阶段消耗大于基于模型的推荐,可以离线预计算近邻提高效率
- 稳定性:用户,物品,评分增加的时候,对推荐结果影响较小。增加物品的评分只需要重新计算相关的评分即可,不用全局重新计算
推荐策略
基于用户评分
预测评分 r̂ ui 可以利用用户u的k近邻,即与用户u相似度w最高的k个用户且这些用户对物品i有打分 Ni(u) 计算
这个计算方法存在问题:每个用户评价相似程度不同,就是说和用户u更像的用户,他的评分代表性更强,所以需要加入相似程度作为权重,并进行权重标准化
另外用户评分的准则不一样,这个后面进行讨论
基于用户分类
本质上是通过近邻用户对于评分的投票,找到用户u对物品i最有可能的评分
再加如相似度权重,得到计算方法
其中 rvi=r 则 δ(rvi=r) 为1,否则为0。找到 vir 最大的呢个就是预测评分值
基于物品推荐
通过评分相近的物品来预测
定义 Nu(i) 为用户u已经评论且和物品i评分相近的物品
对于分类的方法,类似基于用户的方法
对比基于用户和基于不物品
- 准确度:
- 用户数量 > 物品数量,基于物品的方法准确度高,例如电商
- 用户数量 < 物品数量,基于用户的方法准确度高,例如新闻推荐
- 效率:计算相似度阶段会根据用户和物品数量不同而不同,推荐阶段效率都一样。用户多则基于物品的推荐效率高,反之亦然
- 稳定性:系统物品的稳定性>用户稳定性,则基于物品的推荐稳定,反之亦然
- 合理性:基于物品的推荐更容易合理解释
- 惊喜性:基于用户的推荐好,基于物品的推荐相对保守
近邻推荐方法的关键点
基于近邻方法的三个要点
- 评分标准化
- 相似度计算
- 近邻的选择
评分标准化
每个用户的评价标准不一样,例如一个用户喜欢打3~5分,另一个用户只打1分和5分,所以需要更一般的方法作为整体评分标准
均值中心化
思想是通过和平均分比较,得到一个正或者负的评分,最后和平均分结合得到评分
在基于用户的推荐中,预测用户评分为
r̂ ui=r¯u+∑v∈Ni(u)wuv(rvi−r¯v)∑v∈Ni(u)|wuv|在基于物品的推荐中,预测评分为
r̂ ui=r¯i+∑j∈Nu(i)wij(ruj−r¯j)∑j∈Nu(i)|wij|用户对物品的喜好可以用均值中心化后的评分的正负值情况,可以表明对物品的喜好厌恶程度
Z-score标准化
引入标准差,相比均值中心化移除不同平均值导致的误差,进一步考虑了不同用户不同评分范围带来的差异
基于用户的预测评分
r̂ ui=r¯u+σu∑v∈Ni(u)wuv(rvi−r¯v)/σu∑v∈Ni(u)|wuv|
在基于物品的推荐中,预测评分为
r̂ ui=r¯i+σi∑j∈Nu(i)wij(ruj−r¯j)/σi∑j∈Nu(i)|wij|
可能遇到的问题
- 用平均中心化方法,假设一个用户只给买过物品打最高分,则该用户会被错误认为是容易满足的用户,造成所有低于最高分的评分都是负分,因此对于少量评分标准化有风险
- 一个用户只打一个分数,导致标准差为0,也要注意处理
- Z-score方法对评分比较敏感,预测分数有可能超过评分范围
- 另一种标准化的方法是预测相对值,用排名表示兴趣的强弱
相似度计算
作用:用于选择可信的近邻,给不同的近邻在预测中的权重
直接影响推荐系统的准确性和效率
基于关联的相似度
信息检索中,计算a,b的相似度,会表示成向量模式,然后计算向量的余弦向量相似度
cos(xa,xb)=xaTxb∥xa∥∥xb∥基于物品的推荐,将用户表示为向量,则用户间相似度
CV(u,v)=cos(xu,xv)=∑i∈Iuvruirvi∑i∈Iur2ui∑i∈Ivr2vi‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√再把评分间的均值和方法考虑进去,得到皮尔逊相关系数(Pearson Correlation,PC)
PC(u,v)=∑i∈Iuv(rui−r¯u)(rvi−r¯v)∑i∈Iu(rui−r¯u)2∑i∈Iv(rvi−r¯v)2‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√同理基于用户的推荐计算物品相似度
PC(i,j)=∑u∈Uij(rui−r¯i)(ruj−r¯j)∑u∈Uij(rui−r¯i)2∑u∈Uij(ruj−r¯j)2‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√皮尔逊系数正反表示正相关或负相关的强度
利用皮尔逊系数和先做Z-score再做余弦相似不一样!!!因为皮尔逊考虑的是用户评分交集的标准差,不是全部
其他的度量相似度的方法
均方差(Mean Squared Difference),使用用户u,v对相同物品评分差的平方和的均值的倒数作为用户相似度
MSD(u,v)=|iuv|∑i∈Iuv(rui−rvi)2
近邻的选择
一般分2步,先用全局过滤保持最有可能近邻,再在预测的每一步中都选最合适的近邻
过滤预选近邻
不会存储所有用户的非零相似度,因此需要取一小部分有重要影响的作为推荐依据
Top-N过滤
选取最近的n个作为依据,如果n选的大,需要大量内存存储,预测性能下降。如果n选的太小,会降低推荐的覆盖,导致一些物品永远无法被推荐阈值过滤
给定相似度阈值,但是确定阈值又成问题
负值过滤
一般情况负关联性比正关联性的可靠性要差,正相关表达是用一个团体的,但是负相关对于不同团体却无法衡量,也没有不同团体差异的信息。因此过滤掉负相关也是一种手段
用于预测的近邻数:k
经验值区间在20~50
科学的方法还是不同的k值进行交叉验证