als是交替最小二乘法,是一种优化算法,在机器学习中,als特指使用交替最小二乘法的一个协同过滤推荐算法。
在基于矩阵分解的推荐系统中,由于用户-物品评分矩阵是一个稀疏矩阵,所以将这个矩阵分解为两个矩阵,一个是用户对物品的偏好矩阵,一个是物品包含的特征的矩阵,在矩阵分解过程中,矩阵的缺失值得到了填充,那么就可以填充后的评分矩阵给用户推荐商品。
设这个评分矩阵为
,用户偏好矩阵为
,物品隐含特征矩阵为
,那么
。als的目的就是要找到用户偏好矩阵为
,和物品隐含特征矩阵为
。为了让
尽可能的接近
,也就是使损失函数
最小化,为了解决过拟合的问题,加入了正则化的系数,即
,由于有两个变量x,y,所以先固定y,将损失函数对
求偏导,再固定x,对
求偏导,依次迭代,将上一步得到的
,
作为下一步的输入,直到均方根误差RMSE很小。
以上就是als的算法原理。als算法大大减少了存储的空间,而且Spark可以利用这种稀疏性用简单的线性代数计算求解。这些都使得als算法在大规模数据上计算是非常快的,这也解释了为什么Spark的推荐算法只有als。