Factorization Machine

本文深入探讨了因子分解机(FM)模型,一种由Steffen Rendle提出的基于矩阵分解的机器学习算法,尤其适用于稀疏数据集的学习。文章详细介绍了FM模型的构成,包括其线性部分和考虑特征交互的高阶部分,并讨论了其在回归和二元分类问题中的应用及求解方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很久很久没有更新这个博客了,最近想发点东西,先发点以前写的吧

简介

因子分解机(Factorization Machine, FM)是由Steffen Rendle提出的一种基于矩阵分解的机器学习算法。 对于因子分解机FM来说,最大的特点是对于稀疏的数据具有很好的学习能力。

模型

y ^ : = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n − 1 ∑ j = i + 1 n ⟨ v i , v j ⟩ x i x j \hat{y} := w_{0} + \sum_{i=1}^{n}w_{i}x_{i} + \sum_{i=1}^{n-1}\sum_{j=i+1}^{n}\langle v_{i}, v_{j} \rangle x_{i}x_{j} y^:=w0+i=1nwixi+i=1n1j=i+1nvi,vjxixj

其中,参数 w 0 ∈ R , W ∈ R n , V ∈ R n × k . ⟨ v i , v j ⟩ w_{0}\in \mathbb{R}, W\in\mathbb{R}^{n}, V\in\mathbb{R}^{n\times k}. \langle v_{i}, v_{j} \rangle w0R,WRn,VRn×k.vi,vj 表示的是两个长度为k额向量的> 点积:
⟨ v i , v j ⟩ : = ∑ f = 1 k ν i , f ⋅ ν j , f \langle v_{i}, v_{j} \rangle := \sum_{f=1}^{k}\nu_{i,f}\cdot\nu_{j,f} vi,vj:=f=1kνi,fνj,f
其中, v i v_{i} vi 表示的是系数矩阵 V 的第 i 维向量,且 v i = ( ν i , 1 , ν i , 2 , ⋯   , ν i , k ) , k ∈ N + v_{i} = (\nu_{i,1},\nu_{i,2},\cdots,\nu_{i,k}), k\in\mathbb{N}^{+} vi=(νi,1,νi,2,,νi,k),kN+ 称为超参数>。在因子分解机FM模型中,前面两部分是传统的线性模型,最后一部分将两个互异特征分量之间的相互关系考虑进来。
因子分解机FM也可以推广到高阶的形式,即将更多互异特征分量之间的相互关系考虑进来。

算法

Regression

在回归问题中,使用 y ^ \hat{y} y^ 作为预测结果,使用最小均方误差(the least square error)作为优化的标准:
l o s s R ( y ^ , y ) = 1 2 ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 loss^{R}(\hat{y}, y) = \frac{1}{2}\sum_{i=1}^{m}(\hat{y}^{(i)} - y^{(i)})^{2} lossR(y^,y)=21i=1m(y^(i)y(i))2

Binary Classification

与Logistic类似,使用logit loss作为优化标准:
l o s s C ( y ^ , y ) = ∑ i = 1 m − l n σ ( y ^ ( i ) y ( i ) ) loss^{C}(\hat{y}, y) = \sum_{i=1}^{m}-ln\sigma(\hat{y}^{(i)}y^{(i)}) lossC(y^,y)=i=1mlnσ(y^(i)y(i))
其中, σ \sigma σ 表示的是阶跃函数Sigmoid.

求解

对k值的限定,对FM的表达能力有一定的影响。
对模型最后一项可做如下替换:
∑ i = 1 n − 1 ∑ j = i + 1 n ⟨ v i , v j ⟩ x i x j \sum_{i=1}^{n-1}\sum_{j=i+1}^{n}\langle v_{i},v_{j} \rangle x_{i}x_{j} i=1n1j=i+1nvi,vjxixj

= 1 2 ∑ i = 1 n ∑ j = 1 n ⟨ v i , v j ⟩ x i x j − 1 2 ∑ i = 1 n ⟨ v i , v j ⟩ x i x j = \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\langle v_{i},v_{j} \rangle x_{i}x_{j} - \frac{1}{2}\sum_{i=1}^{n}\langle v_{i},v_{j}\rangle x_{i}x_{j} =21i=1nj=1nvi,vjxixj21i=1nvi,vjxixj

= 1 2 ( ∑ i = 1 n ∑ j = 1 n ∑ f = 1 k ν i , f ν j , f x i x j − ∑ i = 1 n ∑ f = 1 k ν i , f ν i , f x i x i ) = \frac{1}{2}(\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{f=1}^{k}\nu_{i,f}\nu_{j,f}x_{i}x_{j} - \sum_{i=1}^{n}\sum_{f=1}^{k}\nu_{i,f}\nu_{i,f}x_{i}x_{i}) =21(i=1nj=1nf=1kνi,fνj,fxixji=1nf=1kνi,fνi,fxixi)

= 1 2 ∑ f = 1 k ( ( ∑ i = 1 n ν i , f x i ) ( ∑ j = 1 n ν j , f x j ) − ∑ i = 1 n ν i , f 2 x i 2 ) = \frac{1}{2}\sum_{f=1}^{k}((\sum_{i=1}^{n}\nu_{i,f}x_{i})(\sum_{j=1}^{n}\nu_{j,f}x_{j}) - \sum_{i=1}^{n}\nu_{i,f}^{2}x_{i}^{2}) =21f=1k((i=1nνi,fxi)(j=1nνj,fxj)i=1nνi,f2xi2)

= 1 2 ∑ f = 1 k ( ( ∑ i = 1 n ν i , f x i ) 2 − ∑ i = 1 n ν i , f 2 x i 2 ) = \frac{1}{2}\sum_{f=1}^{k}((\sum_{i=1}^{n}\nu_{i,f}x_{i})^{2} - \sum_{i=1}^{n}\nu_{i,f}^{2}x_{i}^{2}) =21f=1k((i=1nνi,fxi)2i=1nνi,f2xi2)
使用SGD求解
在这里插入图片描述
对于回归问题

∂ l o s s R ( y ^ , y ) ∂ θ = 2 ( y ^ − y ) ∂ y ^ ∂ θ \frac{\partial loss^{R}(\hat{y},y)}{\partial\theta} = 2(\hat{y} - y)\frac{\partial\hat{y}}{\partial\theta} θlossR(y^,y)=2(y^y)θy^

对于二分类问题

∂ l o s s C ( y ^ , y ) ∂ θ = − 1 σ ( y ^ y ) σ ( y ^ y ) ⋅ [ 1 − σ ( y ^ y ) ] ⋅ y ⋅ ∂ y ^ ∂ θ \frac{\partial loss^{C}(\hat{y}, y)}{\partial\theta} = -\frac{1}{\sigma(\hat{y}y)}\sigma(\hat{y}y)\cdot[1 - \sigma(\hat{y}y)]\cdot y \cdot \frac{\partial\hat{y}}{\partial\theta} θlossC(y^,y)=σ(y^y)1σ(y^y)[1σ(y^y)]yθy^

= [ σ ( y ^ y ) − 1 ] ⋅ y ⋅ ∂ y ^ ∂ θ = [\sigma(\hat{y}y) -1]\cdot y \cdot \frac{\partial\hat{y}}{\partial\theta} =[σ(y^y)1]yθy^

∂ y ^ ∂ θ = { 1 i f θ = w 0 x i i f θ = w i x i ∑ j = 1 n ν j , f x j − ν i , f x i 2 i f θ = ν i , f \frac{\partial\hat{y}}{\partial\theta} = \begin{cases} 1& if \theta = w_{0}\\ x_{i}& if \theta = w_{i}\\ x_{i}\sum_{j=1}^{n}\nu_{j,f}x_{j} - \nu_{i,f}x_{i}^{2}& if \theta = \nu_{i,f} \end{cases} θy^=1xixij=1nνj,fxjνi,fxi2ifθ=w0ifθ=wiifθ=νi,f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值