ALS(Alternating Least Squares)

ALS(Alternating Least Squares)算法是基于矩阵分解的协同过滤算法中的一种,它已经集成到 Spark 的 Mllib 库中,使用起来比较方便。

1.矩阵分解
这里的矩阵分解可以理解为,将一个 m×n 的矩阵A分解为一个m×k的矩阵U和n×k的矩阵V的转置的乘积的近似值,即
                   ALS(Alternating Least Squares)

将这个公式放到推荐系统中,则 ALS(Alternating Least Squares) 表示用户对产品的偏好评分矩阵,ALS(Alternating Least Squares) 代表用户对隐含特征的偏好矩阵,ALS(Alternating Least Squares) 表示产品所包含的隐含特征矩阵。
为了使矩阵 U 和 V 转置的乘积尽可能接近 A,我们使用用户喜好特征矩阵 U(m∗k) 中的第 i 个用户的特征向量 ALS(Alternating Least Squares) ,和产品特征矩阵V(n∗k)第j个产品的特征向量 ALS(Alternating Least Squares) 预测打分矩阵 A(m∗n) 中的 ALS(Alternating Least Squares) ,需要最小化平方误差损失函数:
                  ALS(Alternating Least Squares)

有了损失函数之后,下面就开始介绍优化方法。通常的优化方法分为两种:交叉最小二乘法(alternative least squares)和随机梯度下降法(stochastic gradient descent)。


2.交替最小二乘法(ALS)
在开始的时候,随机初始化一个 ALS(Alternating Least Squares) 的值,因此上式就变成了一个关于 ALS(Alternating Least Squares) 的函数,问题转化为最小二乘问题,用最小二乘法求 ALS(Alternating Least Squares)的最优解:

               ALS(Alternating Least Squares)
其迭代步骤是:首先随机初始化 ALS(Alternating Least Squares),利用上述方法更新得到 ALS(Alternating Least Squares),然后利用 ALS(Alternating Least Squares) 的表达式更新 ALS(Alternating Least Squares),直到RMSE(均方根误差)变化很小或者到达最大迭代次数为止。