推荐系统是属于信息过滤领域的一个范畴,目标在预测用户对某个项目(例如产品、电影、歌曲等)的“评分”或“偏好”。
推荐系统通过与用户交互的痕迹来了解用户的兴趣,从而提供个性化信息。与其他机器学习算法非常相似,推荐系统根据用户过去的行为进行预测。具体来说,它在根据经验预测用户对一组项目的偏好。
从数学上讲,推荐任务设置为:
根据用于推理的数据,推荐系统大致分为两类:
推荐系统的一些重要应用包括渗透在我们生活里面的方方面面:
协作过滤通过使用系统从其他用户收集的交互和数据来过滤信息。它基于这样的想法:对某些项目的评估达成一致的人将来可能会再次达成一致。
这个概念很简单:当我们想找一部新电影观看时,我们经常会向朋友寻求推荐。当然,我们更相信那些与我们有相似品味的朋友的推荐。
大多数协同过滤系统应用所谓的基于相似性索引的技术。在基于邻域的方法中,根据用户与活动用户的相似性来选择多个用户。通过计算所选用户评分的加权平均值来推断活跃用户。
协同过滤系统关注用户和项目之间的关系。项目的相似度由对这两个项目进行评分的用户对这些项目的评分的相似度来确定。
协同过滤有两类:
协作方法通常使用效用矩阵来制定。推荐模型的任务是学习一个函数来预测每个用户的拟合度或相似度。矩阵通常是非常稀疏、就是维度巨大但里面大多数矩阵元素删除了值。
在下面的矩阵中,每行代表一个用户,而列对应不同电影。余弦相似度是查找向量相似度所需的最简单算法。矩阵中,每一行代表一个用户,而每一列对应不同的电影,每个单元格代表用户对该电影的评分。
余弦相似度(p, q) = pq
____
|p|.|q|
比如说我们有以下数据
那么我们用Python描述余弦相似度
import math
def consine_similarity(v1, v2):
#computer consine_similarity of v1 and v2: (v1 dot v2)/(||v1||*||v2||)
sumxx, sumxy, sumyy = 0,0,0
for i in range(len(v1)):
x = v1[i]; y = v2[i]
sumxx += x*x
sumxy += x*y
sumyy += y*y
return sumxy/math.sqrt(sumxx*sumyy)
#cosine_similarity(joe, beck) =
v1,v2=[4,4,4,3,2],[5,5,2,2,3]
print (v1, v2, consine_similarity(v1,v2))
当新用户加入平台时,我们应用最简单的算法来计算行(用户)或列(电影)的余弦或相关相似度,并推荐 k 最近邻居的项目。在这个例子中,我们得到Wall-e和
最后一个是第一个矩阵之后的效用矩阵,仅包含部分数据,需要这些数据来通过用户给出的“根”来预测预期评级的可能性。除了最后一个记录该用户与目标用户之间的相似度。
有许多方程可以处理相似性度量的问题,其中一些包括:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。