云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

免备案CDN_网站怎么建设_高性价比

小七 141 0

使用apachespark MLlib进行可伸缩的协作过滤

推荐系统是机器学习最流行的应用之一。这种方法的目的是预测客户是否喜欢某一商品:产品、电影或歌曲。规模是推荐系统的一个关键问题,因为计算复杂度随着公司客户群的规模而增加。在这篇博客文章中,我们将讨论apachespark MLlib如何在几行Python(Scala/javaapi也可用)中从数十亿条记录中构建推荐模型。从pyspark.mllib.推荐导入ALS将培训和测试数据加载到(用户、产品、评级)元组中定义解析(行):字段=线.分割()return(int(字段[0]),int(字段[1]),float(字段[2]))培训=sc.TEXT文件("…).map(parseRating).cache()测试=sc.TEXT文件("…).map(解析)培养推荐模型型号=ALS.列车(训练,等级=10,迭代次数=5)根据测试数据对(用户、产品)进行预测预测=模型.预测(测试.map(λx:(x[0],x[1]))引擎盖下面怎么了?推荐算法通常分为:(1) 基于内容的过滤:推荐与用户已经喜欢的内容相似的项目。例如,在Metallica歌曲之后播放Megadeth歌曲。(2) 协同过滤:根据相似用户的喜好推荐商品,例如,在有人购买游戏机后推荐电子游戏,因为其他购买游戏机的人也购买了电子游戏。Spark MLlib实现了一种称为交替最小二乘(ALS)的协同过滤算法,该算法已在许多机器学习库中实现,并在学术界和工业界得到广泛的研究和应用。ALS将评分矩阵(R)建模为低秩用户(U)和乘积(V)因子的乘积,并通过最小化观察到的评分重建误差来学习这些因子。随后,可通过乘以这些系数来计算未知评级。这样,公司就可以根据预测的评级推荐产品,提高销售额和客户满意度。ALS是一种迭代算法。在每一次迭代中,算法交替地固定一个因子矩阵,然后求解另一个因子矩阵,这个过程持续到收敛为止。MLlib的特点是ALS算法的分块实现,它利用了Spark对分布式迭代计算的有效支持。它使用原生的LAPACK来实现高性能,并在商品集群上扩展到数十亿的评级。可扩展性、性能和稳定性最近我们做了一个实验,在Spark MLlib中对ALS实现进行大规模的基准测试。基准测试是在EC2上使用由Spark EC2脚本设置的m3.2xlarge实例执行的。我们使用现成的配置运行Spark。为了帮助了解最新技术,我们还从GitHub构建了Mahout并对其进行了测试。这个基准测试可以在EC2上使用脚本https://github.com/databricks/als-benchmark-scripts。我们在亚马逊评论数据集的缩放副本上运行了5次ALS迭代,其中包含了从640万个产品的660万用户收集的3500万个评级。对于每个用户,我们创建具有相同评级的伪用户。也就是说,对于每个等级as(userId,productId,rating),我们生成(userId+i,productId,rating),其中0