守护之沙:http://sharkdtu.com/posts/ml-als.html
参数:
本文主要通过Spark官方的例子理解ALS协同过滤算法的原理和编码过程,然后通过对电影进行推荐来熟悉一个完整的推荐过程。
协同过滤
协同过滤常被应用于推荐系统,旨在补充用户-商品关联矩阵中所缺失的部分。MLlib当前支持基于模型的协同过滤,其中用户和商品通过一小组隐语义因子进行表达,并且这些因子也用于预测缺失的元素。Spark MLlib实现了交替最小二乘法(ALS) 来学习这些隐性语义因子。
在 MLlib 中的实现类为org.apache.spark.mllib.recommendation.ALS.scala,其有如下的参数:
numUserBlocks
:是用于并行化计算的分块个数 (设置为-1,为自动配置)。numProductBlocks
:是用于并行化计算的分块个数 (设置为-1,为自动配置)。rank
:是模型中隐语义因子的个数。iterations
:是迭代的次数,推荐值:10-20。lambda
:惩罚函数的因数,是ALS的正则化参数,推荐值:0.01。implicitPrefs
:决定了是用显性反馈ALS的版本还是用适用隐性反馈数据集的版本。alpha
:是一个针对于隐性反馈 ALS 版本的参数,这个参数决定了偏好行为强度的基准。seed
:随机种子
可以调整这些参数,不断优化结果,使均方差变小。比如:iterations越多,lambda较小,均方差会较小,推荐结果较优。