机器学习之推荐系统基础


很早就对推荐感兴趣了,特别是用了网易云音乐后(不是打广告),对它推荐的歌曲非常适合我的口味(平时听歌广泛,不拘于几首好听的),于是乎,更加对推荐增添了些许兴趣。但之前看的有关推荐内容都很杂,这次把它稍微整理一下。

背景

推荐系统是一种帮助用户快速发现有用信息的工具,通过分析用户的历史行为,研究用户偏好,对用户兴趣建模,从而主动给用户推荐能够满足他们感兴趣的信息。本质上,推荐系统是解决用户额外信息获取的问题。在海量冗余信息(信息过载)的情况下,用户容易迷失目标,推荐系统主动筛选信息,将基础数据与算法模型进行结合,帮助其确定目标,最终达到智能化推荐。


相似度

在推荐系统中,为了实现推荐,我们常用的手段会涉及计算用户之间相似度、物品之间的相似度和用户与物品之间的相关性的。

其中相似度计算是基于向量间距离,距离越近相似度越大。例如,在用户对物品偏好的二维矩阵中,一个用户对所有物品的偏好作为一个向量,可用于计算用户之间的相似度,即两个向量间的距离;将所有用户对一个物品的偏好作为向量表示此物品,可以用于计算物品之间的相似度。

也就是说,我们通过计算相似度达到为不同的用户推进相应的物品,而这个相似度计算有如下几种方式:


皮尔逊相关系数(Pearson Correlation Coefficient)

一般用于计算两个变量间的相关性,它的取值是[-1,1],(正弦)当取值大于0时表示两个变量是正相关的;当取值小于0时表示两个变量是负相关的,取值为0表示不相关。在推荐系统中,常用于用户之间的相似度计算,计算公式如下:
在这里插入图片描述
其中,?为两个用户?、?共同评价过物品的总数;?_?表示用户?对物品?的评分,? ̅ 表示用户?所有评价过的物品的平均分;?_?表示用户?对物品?的评分,? ̅ 表示用户?所有评价过的物品的平均分;

通过以上公式,我们可以发现这个系数是两个变量之间的协方差和标准差的商(复习一下什么叫协方差、标准差。)


欧几里德相似度

用于计算欧几里德空间中两个点的距离,以两个用户?和?为例子,看成是?维空间的两个向量?和?,?_?表示用户?对物品?的喜好值,?_?表示用户?对物品?的喜好值,他们之间的欧几里德距离(Euclidean Distance)计算公式如下:(类比初中学的两点间的距离公式)
在这里插入图片描述
对应的欧几里德相似度,一般采用以下公式进行转换:
在这里插入图片描述
表示距离越小,相似度越大。


余弦向量相似度(Cosine Similarity)

先说说为啥这个东西能怎样表示相似度的吧~向量a和向量b表示二维情况下两个用户的喜好,根据我们学过的知识:两个向量的数量积等于b向量的模乘以a向量在b向量上的投影。当夹角足够小时,a向量乘以余弦值和b向量将重合,此时可以表明两个用户的喜好具有极高的相似性。
在这里插入图片描述
在这里插入图片描述
余弦向量相似度(Cosine Similarity)是计算两个向量的夹角余弦,被广泛应用于计算文档之间的相似度,相比欧氏距离,余弦距离更加注重两个向量在方向上的差异。其计算公式为如下(分母打错了,应该是根号a乘以根号b的形式):

在这里插入图片描述
如图:向量a(1,0,0,1)和b(0,1,0,1)的相似度
在这里插入图片描述
余弦相似度更多的是从方向上区分差异,而对最后的结果数值不敏感,所以无法度量每个维数值的差异,在某些情况下会导致无法区分用户的评分。

例如用户对内容进行评分,按照5分制进行打分,1分最差,5分最好,A和B两用户分别对两个物品进行评分,分值分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98。

两者相似度较高,但实际上A用户不喜欢这2个内容,而B用户比较喜欢,这说明结果产生了误差,调整余弦相似度是所有维度上的数值都减去均值,再用余弦相似度计算,例如A和B对两个物品的评分均值都是3,那么调整后为(-2,-1)和(1,2)得到相似度结果为-0.8,相似度为负值并且差异较大,这样更加符合事实。


Tanimoto系数

该系数也称Jaccard系数,是Cosine相似度的扩展,也较多地用于计算文档间相似度的计算。(我们之前分析的聚类的外部指标之一)

计算方式如下来自豆瓣
A=[1,2,3,4],B=[1,2,5],C = A & B = [1,2]
T = Nc / ( Na + Nb -Nc) = len© / ( len(a) + len(b) - len©) = 2 / (4+3-2) = 0.4


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

legendaryhaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值