基于Spark ALS算法的个性化推荐

其实在R中还有一个包可以做推荐,那就是recommenderlab。如果数据量不大的时候可以使用recommenderlab包,之前也用该包做过电影评分预测模型(点击即可查看)。如果数据量较大还是推荐使用spark来进行计算。

在spark中包含了许多机器学习算法,其中就有一个推荐算法,即ALS。

ALS是最小二乘法(alternating least squares)的简写,它是一种求解矩阵分解问题的最优化方法。何为矩阵分解?就是把一个评分矩阵A分解为两个矩阵B,C。B*C=A。为什么要进行分解?那是因为矩阵A是一个稀疏矩阵,分解之后的B,C矩阵相对能稠密一点,可以实现降维。另外,当建立模型之后,也比较容易求出推荐结果。使用该算法可以很方便的做一个推荐系统,核心代码只有三行。

一.读取数据

连接到spark

二. 推荐

前面那些都是准备工作,现在就来实现推荐部分,真的只需三行代码。

是不是三句代码就搞定了。没骗人吧。从结果可以看到给用户id为12的用户推荐的是1450和113.在这里ALS算法其他参数给的都是默认值,可以通过不断调整参数来优化我们的模型。

三.模型评估

模型生成之后需要对模型进行评估,我们可以使用RMSE方法进行模型计算评估,它的计算公式如下:

不过要在之前我们需要知道用户对电影的预测评分,然后根据预测评分和实际评分来计算出RMSE结果。获取预测评分可以使用transform方法,如果你想要更多的了解transform方法,可以打开:http://spark.apache.org/docs/latest/ml-collaborative-filtering.html进行查看官方文档说明。

在计算模型时,参数给的都是默认值,此时model_RMSE=0.7725977。该值越小,说明该模型越好。

现在修改参数,当把参数调整为:reg_param=0.05,max_iter = 20L,alpha=2

model_RMSE等于0.7123907.比默认时的值小了0.06,就这样通过不断优化调整参数来使得模型最优。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180518G1V67700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券