ALS(Alternating Least Square)
,交替最小二乘法。在机器学习中,特指使用最小二乘法的一种协同推荐算法。本文通过代码来演示用spark运行ALS算法的一个小例子。
1 算法简介
ALS算法通过观察到的所有用户给商品的打分,来推断每个用户的喜好并向用户推荐适合的商品。
其原理简单说就是假设用户评分矩阵是用户特征矩阵乘以物品特征矩阵得到的,即:A(m*n)=U(m*k)*V(k*n)
,然后得到一个评分矩阵。具体原理请自行查阅,本文主要为使用。
通常,调用ALS算法进行训练时有4个重要参数,分别是ratings
,rank
,iterations
,和lambda
。
ratings
指用户提供的训练数据,它包括用户id集、商品id集以及相应的打分集;rank
表示隐含因素的数量,即特征的数量,也就是分解矩阵的k值。iterations
表示最大迭代次数;lambda
表示正则因子,可省略,默认为0.01。
2 运行步骤
2.1 数据说明
数据格式为:用户id,物品id,评分1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[xuqm@cu01 ML_Data]$ cat input/test.data
1,1,5.0
1,2,1.0
1,3,5.0
1,4,1.0
2,1,5.0
2,2,1.0
2,3,5.0
2,4,1.0
3,1,1.0
3,2,5.0
3,3,1.0
3,4,5.0
4,1,1.0
4,2,5.0
4,3,1.0
4,4,5.0
2.2 代码及说明
1 |
|
3 结果展示
可以看出,误差不是很大。