一.spark ml 协同过滤推荐算法
相似度算法
在Spark MLlib中提供了余弦相似度的分布式实现,org.apache.spark.mllib.linalg.distributed包中的IndexedRowMatrix是一个分布式矩阵类,其中提供了一个columnSimilarities方法用于计算该矩阵各列之间的余弦相似度。
预测值计算:采用加权求和的方法计算预测值.
Step 1:读取用户评分数据,设用户数为U,物品数目为I,将数据转换为以用户为行,物品为列的二维矩阵R,R维度为(U×I)。矩阵的每一个数据表示某个用户对特定物品的评分。
Step 2:计算R每列之间的相似度,可以得到维度(I×I)的矩阵S。S(i,j)表示物品i和物品j之间的相似度。
Step 3:使用预测值计算公式计算用户对未评分物品的预测评分。得到预测评分矩阵P,P维度为(U×I),P(i,j) 表示用户i对物品j的预测评分。
Step 4:对用户i进行推荐。找出P的第i行中评分最高的前K个物品推荐给用户。K是需要推荐的物品数量。
二.
关于官方例子:
官方例子是用户-电影数据
很多人想把例子copy过来试试,却不知道源数据是什么样子的。方法:spark-2.3.1-bin-hadoop2.7.tar 这个包大家很熟悉,解压后里面有很多目录,data\mllib目录下就有所有的源数据。官方的例子包括数据都是最优的,随便训练效果都很好,实际数据很糟糕。
三.
下边例子,我训练的是用户-主题,做的是某款软件上的主题推荐。
最终代码没有放上,这只是最开始的demo。
import org.apache.spark.ml.evaluation.RegressionEvaluator
import org.apache.spar
版权声明:本文为qq_31032181原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。