RS推荐系统-FM因子分解机

MF回顾

在我前面的RS推荐系统文章中,讲到了矩阵分解的内容:所谓矩阵分解,就是将矩阵拆解为多个矩阵的乘积。

矩阵分解方法:

  • EVD(特征值分解)
  • SVD(奇异值分解)

求解近似矩阵分解的最优化问题:

  • ALS(交替最小二乘法):ALS-WR
  • SGD(随机梯度下降法):FunkSVD、BiasSVD、SVD++

Tips

  • 奇异值分解可以对矩阵无损分解
  • 在实际中,我们可以抽取前K个特征,对矩阵进行降维
  • SVD在降维中有效,抽取不同的K值(10%的特征包含99%的信息)
  • 在评分预测中使用funkSVD,只根据实际评分误差进行目标最优化
  • 在funkSVD的基础上,加入用户/商品偏好 => BiasSVD
  • 在BiasSVD的基础上,考虑用户的隐式反馈 => SVD++
  • 以上的MF,我们都只考虑user和item特征,但实际上一个预测问题包含的特征维度可能很多

MF的局限性
对于一个推荐系统,特征维度不仅仅只有userID和ItemID,还会有其他维度。
在这里插入图片描述在这里插入图片描述

  • 蓝色部分:当前评分用户信息
  • 红色部分:当前被评分电影
  • 黄色:当前评分用户,评分过的其他电影
  • 绿色:评分时间(按照2009年1月开始的间隔月数)
  • 棕色:用户评分过的上一部电影

FM算法

在普通的线性回归里,对于特征向量 X = ( x 1 , x 2 , . . . . . . , x n ) T X = (x_1,x_2,......,x_n)^T X=(x1,x2,......,xn)T,我们有目标预估函数:
y ^ ( x ) = w 0 + w 1 x 1 + w 2 x 2 + … w n x n = w 0 + ∑ i = 1 n w n x n \begin{aligned} \hat{y}(x) &=w_{0}+w_{1} x_{1}+w_{2} x_{2}+\ldots w_{n} x_{n} \\ &=w_{0}+\sum_{i=1}^{n} w_{n} x_{n} \end{aligned} y^(x)=w0+w1x1+w2x2+wnxn=w0+i=1nwnxn
Tips:这时候认为变量之间是相互独立的,没有考虑变量之间的相互关系,比如性别+年龄的组合

所以创造二阶的表达式:
y ^ ( x ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n w i j x i x j \hat{y}(x)=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n} w_{i j} x_{i} x_{j} y^(x)=w0+i=1nwixi+i=1nj=i+1nwijxixj
Tips:二阶特征组合:考虑了两个特征变量之间的交互影响,但是在二阶交叉的过程中,如果观察样本中没有出现过该交互的特征分量(稀疏向量),那么直接估计将为0

所以,对于 W i j W_{ij} Wij的估计,又变成矩阵分解MF问题。即将 W i j W_{ij} Wij的稀疏矩阵通过MF变得稠密。
在这里插入图片描述

y ^ ( x ) = w 0 + ∑ i = 1 n w n x n + ∑ i = 1 n ∑ j = i + 1 n w i j x i x j = w 0 + ∑ i = 1 n w n x n + ∑ i = 1 n ∑ j = i + 1 n ⟨ V i , V j ⟩ x i x j \begin{aligned} \widehat{y}(x)&=w_{0}+\sum_{i=1}^{n} w_{n} x_{n}+\sum_{i=1}^{n} \sum_{j=i+1}^{n} w_{i j} x_{i} x_{j}\\ &=w_{0}+\sum_{i=1}^{n} w_{n} x_{n}+\sum_{i=1}^{n} \sum_{j=i+1}^{n}\left\langle V_{i}, V_{j}\right\rangle x_{i} x_{j}\\ \end{aligned} y (x)=w0+i=1nwnxn+i=1nj=i+1nwijxixj=w0+i=1nwnxn+i=1nj=i+1nVi,Vjxixj
对于 ⟨ V i , V j ⟩ \left\langle V_{i}, V_{j}\right\rangle Vi,Vj,又有:
⟨ V i , V j ⟩ : = ∑ f = 1 k v i , f ⋅ v j , f ( n 是 特 征 个 数 , k 是 特 征 的 e m b e d d i n g s i z e ) \left\langle V_{i}, V_{j}\right\rangle:=\sum_{f=1}^{k} v_{i, f} \cdot v_{j, f}\\ (n是特征个数,k是特征的embedding size ) Vi,Vj:=f=1kvi,fvj,fnkembeddingsize

小结

FM矩阵将User和Item都进行了one-hot编码作为特征,使得特征维度非常巨大且稀疏,所以在计算二阶特征组合系数的时候,会产生稀疏且巨大的矩阵,这时候就需要引入MF矩阵分解,将这个稀疏矩阵通过SVD方法进行分解成两个稠密的矩阵,接着通过优化方法(SGD/ALS)进行估算出新的交叉矩阵,这时候矩阵不再稀疏。

  • FM引入了更多辅助信息(Side information)作为特征
  • 矩阵分解MF是FM的特例,即特征只有User ID 和Item ID的FM模型
  • 矩阵分解MF只适用于评分预测,进行简单的特征计算,无法利用其他特征
  • FM算法引入了特征交叉,是因为单纯的线性模型无法很好学习到特征之间的相关性。
  • 因为计算量的原因,一般FM采用2阶特征组合的方式
  • 实际上高阶/非线性的特征组合适合采用深度模型
  • w i j = ⟨ V i , V j ⟩ w_{i j}=\left\langle V_{i}, V_{j}\right\rangle wij=Vi,Vj是FM的核心思想,使得稀疏数据下学习不充分的问题也能得到充分解决
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr.Wiggles

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

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

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

打赏作者

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

抵扣说明:

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

余额充值