如何实现基于用户的协同过滤算法,实现分布式的推荐算法

日期: 栏目:文章分享 浏览:812 评论:0

我们都知道,大多数的推荐算法都是单机版的。如果不进行任何处理是不能够分布式执行,也就不能充分利用像这样的分布式计算集群。这严重限制了

推荐算法的实际应用。比如协同过滤,像亚马逊、天猫这些包含大量用户、大量物品及大量行为的平台配置burpsuit谷歌浏览器证书及HSTS问题处理,用户-物品矩阵巨大。要实现协同过滤,时间复杂度不说,就是存储,单机的也没法

搞定。所以,实现分布式的推荐算法,充分利用集群的资源就变得非常的必要。

在我们自己的推荐算法实践过程中,已经,并且将来会更加频繁的遇到推荐算法的可扩展性问题。因此,决定对扩展性这块系统的研究一下。本篇主要是关于采用来解决扩展性问题。后面会补充“MF篇”等。

首先,讲下如何在上实现基于用户的协同过滤算法。详细可以参考文献[1]。

如何实现一个能在上执行的协同过滤算法配置burpsuit谷歌浏览器证书及HSTS问题处理,也就是算法要能拆分成map-形式的计算模块。具体做法分为以下三步:

1、数据拆分阶段

谷歌浏览器 优酷隔一段时间就显示浏览器有兼容性问题_重庆问题证书处理_配置burpsuit谷歌浏览器证书及HSTS问题处理

将用户分组到不同的文件中。每个文件的每行对应一个用户的id。

数据拆分要满足两个原则:

1)在整个的运行时间上,计算时间的占比要越大越好。意思就是运行时间的大多数耗在计算上,而不是频繁的初始化上。

比如,如果我们针对1000个用户创建1000个,就需要频繁初始化这样不如创建40或者50个要好。

2)所有task的执行完成时间相同。

2、Map阶段

的setup函数首先会创建用户-物品评分矩阵,然后读取user ID文件,文件的行号为输入的key,对应的user ID为value。

然后计算用户间相似度–>找到用户的最近邻–>预测用户对所有物品的评分。最后按评分排序得到用户id及其推荐列表作为中间key/value,将其

作为阶段的输入。

3、阶段

根据排序,并将最终的结果输出到hdfs。

整个流程如下图所示:

这里写图片描述

参考文献【2】:

Sales–>Rate

将销售数据转换成推荐系统中的评分数据

两种转换方式:

方式1:

Sui为商店u对物品i的销售量

方式2:

的两种方式:

方式1:

重庆问题证书处理_配置burpsuit谷歌浏览器证书及HSTS问题处理_谷歌浏览器 优酷隔一段时间就显示浏览器有兼容性问题

方式2:

当推荐(协同过滤)完成后,又需要将评分数据转换为实际销售数据

如下图:

这里写图片描述

整个推荐算法在上执行的流程:

这里写图片描述

标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。发布前请先查看评论规则:点我查看