[推荐系统02]基于近邻的推荐

本文详细介绍了基于近邻的推荐方法,包括协同过滤、基于用户和物品的推荐策略,以及评分标准化、相似度计算和近邻选择的关键点。讨论了不同推荐策略的准确性和效率,强调了相似度计算在推荐系统中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于近邻的推荐方法

推进系统要找到的是最优项(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|ruiRtest|f(u,i)tui|

均方根误差(RMSE)
RMSE(f)=1|Rtest|ruiRtest(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) 计算

r̂ ui=1|Niu|vNi(u)rvi

这个计算方法存在问题:每个用户评价相似程度不同,就是说和用户u更像的用户,他的评分代表性更强,所以需要加入相似程度作为权重,并进行权重标准化

r̂ ui=vNi(u)wuvrvivNi(u)|wuv|

另外用户评分的准则不一样,这个后面进行讨论

基于用户分类

本质上是通过近邻用户对于评分的投票,找到用户u对物品i最有可能的评分
再加如相似度权重,得到计算方法

vir=vNi(u)δ(rvi=r)wuv

其中 rvi=r δ(rvi=r) 为1,否则为0。找到 vir 最大的呢个就是预测评分值

基于物品推荐

通过评分相近的物品来预测

定义 Nu(i) 为用户u已经评论且和物品i评分相近的物品

r̂ ui=jNu(i)wijrujjNu(i)|wij|

对于分类的方法,类似基于用户的方法

vui=jNu(i)δ(ruj=r)wij

对比基于用户和基于不物品

  • 准确度:
    • 用户数量 > 物品数量,基于物品的方法准确度高,例如电商
    • 用户数量 < 物品数量,基于用户的方法准确度高,例如新闻推荐
  • 效率:计算相似度阶段会根据用户和物品数量不同而不同,推荐阶段效率都一样。用户多则基于物品的推荐效率高,反之亦然
  • 稳定性:系统物品的稳定性>用户稳定性,则基于物品的推荐稳定,反之亦然
  • 合理性:基于物品的推荐更容易合理解释
  • 惊喜性:基于用户的推荐好,基于物品的推荐相对保守

近邻推荐方法的关键点

基于近邻方法的三个要点

  • 评分标准化
  • 相似度计算
  • 近邻的选择

评分标准化

每个用户的评价标准不一样,例如一个用户喜欢打3~5分,另一个用户只打1分和5分,所以需要更一般的方法作为整体评分标准

均值中心化

思想是通过和平均分比较,得到一个正或者负的评分,最后和平均分结合得到评分
在基于用户的推荐中,预测用户评分为

r̂ ui=r¯u+vNi(u)wuv(rvir¯v)vNi(u)|wuv|

在基于物品的推荐中,预测评分为

r̂ ui=r¯i+jNu(i)wij(rujr¯j)jNu(i)|wij|

用户对物品的喜好可以用均值中心化后的评分的正负值情况,可以表明对物品的喜好厌恶程度

Z-score标准化

引入标准差,相比均值中心化移除不同平均值导致的误差,进一步考虑了不同用户不同评分范围带来的差异

基于用户的预测评分

r̂ ui=r¯u+σuvNi(u)wuv(rvir¯v)/σuvNi(u)|wuv|

在基于物品的推荐中,预测评分为

r̂ ui=r¯i+σijNu(i)wij(rujr¯j)/σijNu(i)|wij|

可能遇到的问题

  • 用平均中心化方法,假设一个用户只给买过物品打最高分,则该用户会被错误认为是容易满足的用户,造成所有低于最高分的评分都是负分,因此对于少量评分标准化有风险
  • 一个用户只打一个分数,导致标准差为0,也要注意处理
  • Z-score方法对评分比较敏感,预测分数有可能超过评分范围
  • 另一种标准化的方法是预测相对值,用排名表示兴趣的强弱

相似度计算

作用:用于选择可信的近邻,给不同的近邻在预测中的权重
直接影响推荐系统的准确性和效率

基于关联的相似度

信息检索中,计算a,b的相似度,会表示成向量模式,然后计算向量的余弦向量相似度

cos(xa,xb)=xaTxbxaxb

基于物品的推荐,将用户表示为向量,则用户间相似度

CV(u,v)=cos(xu,xv)=iIuvruirviiIur2uiiIvr2vi

再把评分间的均值和方法考虑进去,得到皮尔逊相关系数(Pearson Correlation,PC)

PC(u,v)=iIuv(ruir¯u)(rvir¯v)iIu(ruir¯u)2iIv(rvir¯v)2

同理基于用户的推荐计算物品相似度

PC(i,j)=uUij(ruir¯i)(rujr¯j)uUij(ruir¯i)2uUij(rujr¯j)2

皮尔逊系数正反表示正相关或负相关的强度

利用皮尔逊系数和先做Z-score再做余弦相似不一样!!!因为皮尔逊考虑的是用户评分交集的标准差,不是全部

其他的度量相似度的方法

均方差(Mean Squared Difference),使用用户u,v对相同物品评分差的平方和的均值的倒数作为用户相似度

MSD(u,v)=|iuv|iIuv(ruirvi)2

近邻的选择

一般分2步,先用全局过滤保持最有可能近邻,再在预测的每一步中都选最合适的近邻

过滤预选近邻

不会存储所有用户的非零相似度,因此需要取一小部分有重要影响的作为推荐依据

Top-N过滤
选取最近的n个作为依据,如果n选的大,需要大量内存存储,预测性能下降。如果n选的太小,会降低推荐的覆盖,导致一些物品永远无法被推荐

阈值过滤

给定相似度阈值,但是确定阈值又成问题

负值过滤

一般情况负关联性比正关联性的可靠性要差,正相关表达是用一个团体的,但是负相关对于不同团体却无法衡量,也没有不同团体差异的信息。因此过滤掉负相关也是一种手段

用于预测的近邻数:k

经验值区间在20~50
科学的方法还是不同的k值进行交叉验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值