电池不行了 马云家电池淘宝靠谱的手机店吗 还是去手机店

Spark 基于物品的协同过滤算法实现 - 简书
Spark 基于物品的协同过滤算法实现
由于 Spark MLlib 中协同过滤算法只提供了基于模型的协同过滤算法,在网上也没有找到有很好的实现,所以尝试自己实现基于物品的协同过滤算法(使用余弦相似度距离)
基于物品的协同过滤算法是目前业界应用最多的算法,亚马逊网、Netflix、Hulu、YouTube 都使用该算法作为推荐系统的基础算法。算法核心思想是根据用户对物品的历史行为记录,先计算物品之间的相似度,得到与物品最相似的 TopN 个物品,再利用用户对物品的历史行为,将用户访问过的物品的相似物品推荐给用户。也就是说,算法分为 2 步:
计算物品之间的相似度
为用户生成推荐列表
计算物品之间的相似度
计算物品的相似度有很多种算法,如余弦相似度、皮尔森相关度、欧式距离相似度、Tanimoto系数等,这里我们使用的是余弦相似度。
假设有向量A(x1,x2,...xn)和向量B(y1,y2,...yn),A、B 之间的余弦相似度为:
余弦相似度公式
如果物品少这样计算没关系,但设想如有 100W 的物品,需要计算物品间的两两相似度,计算量大概是 100W x 100W,基本无法计算。
虽然物品很多,但并不是每两个物品都有被相同的用户访问过, 也就是说,很多物品直接余弦相似度等于0,为了避免这些计算,我们引入倒排表来解决这一问题。
假设有物品 Item1、Item2、Item3、Item4,用户 U1、U2、U3、U4:Item1 被 U1、U2 访问,偏好分分别是2、3,转化为向量是(2,3,0,0)Item2 被 U3、U4 访问,偏好分分别是1、4,转化为向量是(0,0,1,4)Item3 被 U2,U3 访问,偏好分分别是2、2,转化为向量是(0,2,2,0)Item4 只被 U3 访问,用户对其的偏好分是5,转化为向量是(0,0,5,0)
先计算每个 Item 的模,即上图余弦相似度公式中的分母部分,缓存| Item1 | = √(22 + 32) = √13| Item2 | = √17| Item3 | = √8| Item4 | = 5
转化为用户访问物品关系,将相同用户访问过的 Item 列出,即:
U1:Item1(2)U2:Item1(3),Item3(2)U3:Item2(1),Item3(2),Item4(5)U4:Item2(5)
针对同一用户,计算两两物品之间的相似度,输出&物品对,分数&,即:
U1:输出空U2:输出 &(Item1, Item3), 3x2=6&U3:输出 &(Item2, Item3), 2&,&(Item2, Item4), 5&,&(Item3, Item4), 10&U4:输出空注意:可以将所有物品对 id 小的放前面,以减少后面一半的计算量
将物品对作为 key 聚合,将分数相加,得到每个物品对的分数和,即上图余弦相似度公式中的分子部分。再从缓存中取出分母部分相除,即两两物品的相似度。如 Item2 和 Item4 的余弦相似度=5/(√17 x 5) = 1/√17
如果要取物品的 TopK 相似的物品,可将得到的两两相似度结果(其实是半个相似度矩阵)扩展,然后按 key 聚合取 TopK 个。另外,实践表明针对同一物品,如果将相似度进行归一化 similaryi/similarymax 有助于提高最终推荐结果的精度。
为用户生成推荐列表
现在已经有每个物品的 TopK 个相似的物品信息,结合用户对物品的访问情况,将用户访问过的每个物品的相似物品取出,按相似度加权,排除已经访问过的物品,就可以得到用户的推荐列表,具体计算步骤如下:
将&物品,相似物品列表& 与 &物品,访问过该物品的用户列表& join,得到&物品,(相似物品列表,访问过该物品的用户列表)&
交叉遍历相似物品列表和访问过该物品的用户列表,得到很多 &用户,(物品,分数)&
按用户聚合,将相同物品的分数相加,按分数排序,取 TopK,即该用户的推荐列表
基于以上的算法,本人尝试用 java 实现,代码放在 ,希望读者指正。主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
傻丫头和高科技产物小心翼翼的初恋
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:
人生得意须尽欢,莫使金樽空对月。
随着互联网的迅猛发展,为了满足人们在繁多的信息中获取自己需要内容的需求,个性化推荐应运而生。协同过滤推荐是其中运用最为成功的技术之一。本文将详细介绍个性化推荐领域中最常用的spark大数据处理框架和spark分布式矩阵的实现以及运算。请裁剪图片
【实战篇】如何在spark分布式矩阵实现协同过滤推荐? - 恒生技术之眼 - 恒生研究院
上文,介绍了协同过滤中的矩阵分解算法、spark大数据处理框架以及spark分布式矩阵的实现以及相关的运算,请戳蓝色加粗链接:《如何在spark分布式的基础上实现协同过滤推荐?》。本文将重介绍最受欢迎的协同过滤算法,以及会在文中实战在spark分布式矩阵的基础上模拟协同过滤推荐。
【推荐系统简介】
个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。个...
上文,介绍了协同过滤中的矩阵分解算法、spark大数据处理框架以及spark分布式矩阵的实现以及相关的运算,请戳蓝色加粗链接:《如何在spark分布式的基础上实现协同过滤推荐?》。本文将重介绍最受欢迎的协同过滤算法,以及会在文中实战在spark分布式矩阵的基础上模拟协同过滤推荐。
【推荐系统简介】
个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。个...
用户名不正确!
下次自动登录
添加到资源集
+创建资源集
新建资源集
创建资源集目前仅对内测用户开放,

我要回帖

更多关于 三哥手机店靠谱吗 的文章

 

随机推荐