ALS(Alternating Least Squares)

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

1.矩阵分解

这里的矩阵分解可以理解为,将一个m×n的矩阵A分解为一个m×k的矩阵U和n×k的矩阵V的转置的乘积的近似值,即

Am×nUm×k×VTn×k A m × n ≈ U m × k × V n × k T

将这个公式放到推荐系统中,则 Am×n A m × n 表示用户对产品的偏好评分矩阵, Um×k U m × k 代表用户对隐含特征的偏好矩阵, Vn×k V n × k 表示产品所包含的隐含特征矩阵。
为了使矩阵U和V转置的乘积尽可能接近A,我们使用用户喜好特征矩阵U(m∗k)中的第i个用户的特征向量 ui u i ,和产品特征矩阵V(n∗k)第j个产品的特征向量 vj v j 预测打分矩阵A(m∗n)中的 aij a i j ,需要最小化平方误差损失函数:
C=i,jR[(aijuivTj)2+λ(u2i+v2j)] C = ∑ i , j ∈ R [ ( a i j − u i v j T ) 2 + λ ( u i 2 + v j 2 ) ]

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

2.交替最小二乘法(ALS)

在开始的时候,随机初始化一个 ui u i 的值,因此上式就变成了一个关于 vj v j 的函数,问题转化为最小二乘问题,用最小二乘法求 vj v j 的最优解:
这里写图片描述

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

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NEU_SML

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值