ALS算法理解

  ALS算法全称为交替最小二乘法(Alternating Least Squares),是一种基于协同过滤思想的矩阵分解算法。其亮点之一就在于优化参数时使用了交替最小二乘法,而非梯度下降算法,使得ALS算法可以进行分布式并行计算,因此其被收录于Spark的Mlib以及ML库中。下面将详细介绍这一算法:

一、核心思想

  通过隐含特征(latent factor)联系用户兴趣和物品(item), 基于用户的行为找出潜在的主题和分类, 然后对item进行自动聚类,划分到不同类别/主题(用户的兴趣)。
  本质是把协同过滤算法进行了一种延伸, 把用户的相似性和物品的相似性通过了一个叫做隐向量的方式进行表达
在这里插入图片描述
​  矩阵分解算法将 m × n m×n m×n 维的共现矩阵 R R R 分解成 m × k m×k m×k 维的用户矩阵 U U U k × n k×n k×n 维的物品矩阵 M M M 相乘的形式。 我们的目标就是填充共现矩阵中的空缺值,从而对用户的行为产生预测。
​​  其中 m m m 是用户数量, n n n 是物品数量, k k k 是隐向量维度, 也就是隐含特征个数, 只不过这里的隐含特征变得不可解释了, 即我们不知道具体含义了, 要模型自己去学。 k k k 的大小决定了隐向量表达能力的强弱, k k k 越大, 表达信息就越强, 理解起来就是把用户的兴趣和物品的分类划分的越具体。
​  每个用户和物品都有一个 k k k维的隐向量来表示,因此如果我们想计算某个用户对特定物品的评分或其他隐式行为 p i j p_{ij} pij,只需要计算对应向量的内积即可。

​​      ​​  ​  p i j = U i T M j = < u i , m j > p_{ij}=U_i^TM_j=<u_i,m_j> pij=UiTMj=<ui,mj>

二、代价函数

显示反馈代价函数
​​  对于有交互行为的用户和物品来说,其评分偏差就是 r − p r-p rp,我们采用平方损失函数,所以对于单个样本来说: L ( r , u , m ) = ( r − p ) 2 = ( r − < u , m > ) 2 L(r,u,m)=(r-p)^2=(r-<u,m>)^2 L(r,u,m)=(rp)2=(r<u,m>)2因此,整个样本上的损失函数为: L ( R , U , M ) = s u m ( i , j ) ∈ I L ( r i j , u i , m j ) L(R,U,M)=sum_{(i,j)\in I}L(r_{ij},u_i,m_j) L(R,U,M)=sum(i,j)IL(rij,ui,mj)其中 I I I 为用户和物品发生过交互行为的集合。

我们的目的是使得该损失函数最小,因此得到目标函数: ( U , M ) = a r g   min ⁡ ( U , M ) L ( R , U , M ) (U,M)=arg\ \min_{(U,M)}L(R,U,M) (U,M)=arg (U,M)minL(R,U,M)
​​  当我们隐向量维度 k k k 设置的较大时,有可能会造成模型的过拟合,因此我们需要加入正则项对模型的参数进行惩罚(原论文使用的为Tikhonov正则化,我们为了简化计算使用L2正则化),因此损失函数就变成了: L λ r e g ( R , U ,

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟炼丹师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值