矩阵分解之最小二乘法ALS

该博客介绍了矩阵分解的概念,特别是在推荐系统中的应用。通过最小二乘法和随机梯度下降解决矩阵分解的优化问题,详细阐述了最小二乘法的流程和核心点,并提供了Python实现。最后,强调了理论理解与实践操作相结合的重要性。
摘要由CSDN通过智能技术生成

矩阵分解

应用场景是:我们要把一个稀疏矩阵分解为两个低秩的矩阵相乘;两个低秩的矩阵除了降维之外,还分别代表不同的含义。
以推荐为例: 用户点击商品的关系矩阵R则是稀疏的,我们分解为两个低秩矩阵,分别代表用户特征矩阵U和商品特征矩阵I,这个特征则就是隐含的语义信息。
形式化的表述一下:
打分矩阵R是近似低秩的,即m*n的矩阵可以分解为:
U(m*k)和V(n*k)的乘积来近似:
其中U则是用户喜好特征矩阵;V则是产品特征矩阵。

RUVT,k<<m,n

那么如何求解U和V呢。解决这类问题,一般要先定义目标函数,有了目标函数,就可以用各种暴力搜索、启发式搜索、求导、梯度下降、二乘法等等来逼近。
那么我们的矩阵分解的损失函数(loss function)是:
矩阵分解的损失函数:
C=(i,j)[(RijuivTj)2+λ(u2i+v2j)]

我们的目标就是找到两个矩阵使得C最小。

求解方法

矩阵分解的损失函数:

C=(i,j)[(RijuivTj)2+λ(u2i+v2j)]

最小化损失函数的方法有:交替最小二乘法和随机梯度下降法;
交替最小二乘法,则是固定一个变量,通过求偏导得到优化另外一个变量的公式,不断的交替优化其中一个变量求极值,从而得到一个优化解。核心点有几个:

1. 两个变量,固定其中一个。对另外一个求极值。
2. 固定A,对B求偏导,利用导数为0求极值。从而继续优化。

最小二乘法的流程

损失函数如上,求矩阵U和V

1 初始化U,固定U
2 求导得到V的求解公式,然后得到V
3 固定V
4 求导得到U的求解方法,得到U
5 如此反复1-4,直到C达到条件或者step走完。

几个核心点

  1. 最小二乘法的loss function是平方损失函数,这也是回归学习最常用的损失函数。所谓回归,则是利用某个h来拟合数据。h可以是线性的或者非线性的。

    回归问题的损失函数如果是平方损失函数,,可以由最小二乘法(least squares)求解。

  2. 最小二乘法的算法原理,固定一个变量,通过求偏导得到公式后,求极值;同样的套路用于另外一个变量。这种思想值得学习。

矩阵分解应用

如果得到了U/V,那么通过U和V的乘积,就可以得到R的稀疏填充。当然,U本身也能用于计算用户相似度,从而用于用户聚类。同理V也可以类似操作,从而实现“人以群分,物以类聚”的目标。

推导过程

第一部分是方差,第二部分是规则化项,用了Ui和Vj
最小二乘法则是固定一个求解另一个,那么里面就2个变量,那么则求偏导得到极小值。

vj 求偏导:

d(c)d(vj)==[2(Rijuivj)(uTi)]+2λvj=0
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值