37

协调过滤算法之ALS

 4 years ago
source link: https://www.tuicool.com/articles/u6RRNjr
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ALS(alternating least squares)

ALS是交替最小二乘的简称。在机器学习中,ALS特指使用交替最小二乘求解的一个协同推荐算法。如:将用户(user)对商品(item)的评分矩阵分解成2个矩阵:

  • user对item 潜在因素的偏好矩阵(latent factor vector)
  • item潜在因素的偏好矩阵

假设有m个user和n个item,所以评分矩阵为R。ALS(alternating least squares)希望找到2个比较低纬度的矩阵(X和Y)来逼近这个评分矩阵R。

biuE7ry.png!web

7nuuyam.png!web

IbMFzmU.png!web

ALS的核心就是这样一个假设:打分矩阵是近似低秩的。换句话说,就是一个m*n的打分矩阵可以由分解的两个小矩阵U(m*k)和V(k*n)的乘积来近似。这就是ALS的矩阵分解方法。

为了让X和Y相乘能逼近R,因此我们需要最小化损失函数(loss function),因此需要最小化损失函数,在此定义为平方误差和(Mean square error, MSE)。

RzMjmie.png!web

一般损失函数都会需要加入正则化项(Regularization item)来避免过拟合的问题,通常是用L2,所以目标函数会被修改为:

FZNNBff.png!web

上面介绍了“最小二乘(最小平方误差)”,但是还没有讲清楚“交替”是怎么回事。因为X和Y都是未知的参数矩阵,因此我们需要用“交替固定参数”来对另一个参数求解。

先固定Y, 将loss function对X求偏导,使其导数等于0:

JbE7fqi.png!web

再固定X, 将loss function对Y求偏导,使其导数等于0:

m6RrEni.png!web

既然是交替,就会有迭代的模式存在:

zqqiAzn.png!web

ALS-WR(alternating-least-squares with weighted-λ-regularization)

加权正则化交替最小二乘法。上文提到的模型适用于解决有明确评分矩阵的应用场景,然而很多情况下,用户没有明确反馈对商品的偏好,也就是没有直接打分,我们只能通过用户的某些行为来推断他对商品的偏好。比如,在电视节目的推荐的问题中,对电视节目收看次数或时长,这时我们可以推测次数越多看的时间越长,用户的偏好程度越高,但是对于没有收看的节目,可能是用户不知道该节目,或者没有途径获取节目,我们不能确定的推测用户不喜欢该节目,ALS-WR通过置信度权重来解决这些问题:对于更确信用户偏好的项赋予较大的权重,对于没有反馈的项赋予较小的权重。

损失函数为:

NbM7ZrI.png!web

其中, $r_{ui}$表示原始量化值,比如观看电影的时间;α表示根据用户行为所增加的信任度

小结

在实际应用中,由于待分解的矩阵常常是非常稀疏的,与SVD相比,ALS能有效的解决过拟合问题。基于ALS的矩阵分解的协同过滤算法的可扩展性也优于SVD。与随机梯度下降的求解方式相比,一般情况下随机梯度下降比ALS速度快;但有两种情况ALS更优于随机梯度下降:

  • 当系统能够并行化时,ALS的扩展性优于随机梯度下降法。
  • ALS-WR能够有效的处理用户对商品的隐式反馈的数据

ALS算法的缺点在于:

  • 它是一个离线算法。
  • 无法准确评估新加入的用户或商品。这个问题也被称为冷启动问题。

参考链接:https://medium.com/@chih.sheng.huang821/%E7%9F%A9%E9%99%A3%E5%88%86%E8%A7%A3-matrix-factorization-%E4%BA%A4%E6%9B%BF%E6%9C%80%E5%B0%8F%E5%B9%B3%E6%96%B9%E6%B3%95-alternating-least-squares-2a71fd1393f7


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK