fm算法 c语言,推荐算法之—FM

1、什么是FM算法

FM即Factor Machine,因子分解机

2、为什么需要FM

1)、特征组合是许多机器学习建模过程中遇到的问题,如果对特征直接建模,很有可能忽略掉特征与特征之间的关联信息,一次可以通过构建新的交叉特征这一特征组合方式提高模型的效果。

2)、高维的稀疏矩阵是实际工程中常见的问题,并且直接导致计算量过大,特征权值更新缓慢。试想一个10000100的表,每一列都有8中元素,经过one-hot编码之后,会产生一个10000800的表。因此表中每一元素只有100个值为1,700个值为0

而FM的优势就在于对这两方面问题的处理。首先是特征组合,通过两两特征组合,引入交叉项特征(二阶特征),提高模型得分;其次是高维灾难,通过引入隐向量(对参数矩阵进行分解),完成特征参数的估计

3、FM 用在哪

我们已经知道FM可以解决特征组合以及高维稀疏矩阵问题,而实际业务场景中,电商、豆瓣等推荐系统的场景是使用最广泛的领域,打个比方,小王只在豆瓣上浏览过20部电影,而豆瓣上面有20000部电影,如果构建一个基于小王的电影矩阵,毫无疑问,里面讲有199980个元素全为0.而类似这样的问题就可以通过FM来解决

4、FM长什么样

在展示FM算法之前,我们先回顾一下最常见的线性表达式:

40c7358040c9

image.png

其中[图片上传失败W0为初始权重值,或者理解为偏置项,Wi为每个特征 xi 对应的权重值,可以看到,这种线性表达式只描述了每个特征和输出的关系。

FM的表达式如下,可观察到,只是在线性表达式后面加入了新的交叉项特征及对应的权值。

40c7358040c9

image.png

5、FM交叉项的展开

1)寻找交叉项

FM表达式的求解核心在于对交叉项的求解。下面是很多人用来求解交叉项的展开式,对于第一次接触FM算法的人来说可能会有疑惑,不知道公式怎么展开的,接下来笔者会手动推导一遍。

40c7358040c9

image.png

设有3个变量(特征)x1,x2,x3,每个特征的隐变量分别为v1=(1,2,3)、v2=(4,5,6)、v3=(1,2,1)即:

40c7358040c9

image.png

设交叉项所组成的权矩阵W为对称矩阵,之所以设为对称矩阵是因为对称矩阵可以用向量乘以向量的转置代替的性质。

那么W=VVT ,即

40c7358040c9

所以:

40c7358040c9

image.png

实际上我们考虑的交叉项应该是排除自身组合的项,即对于x1x1,x2x2,x3x3不认为是交叉项,那么真正的交叉项为x1x2,x1x3,x2x1,x2x3,x3x1,x3x2。

去重后,交叉项即:x1x2,x1x3,x2x3。这也是出现1/2的原因

2)交叉项权值转换

对交叉项有了基本了解后,下面将进行公式的分解,还是以n=3为例,

40c7358040c9

image.png

3)交叉项展开式

上面的例子是对3个特征做的交叉项推导,因此对具有n个特征,FM的交叉项公式就可推广为:

40c7358040c9

image.png

我们还可以进一步分解:

40c7358040c9

image.png

所以FM算法的交叉项最终展开为:

40c7358040c9

image.png

6、权值求解

利用梯度下降法,通过求损失函数对特征(输入项)的导数计算出梯度,从而更新权值。设m为样本个数θ为权值。

如果是回归问题,损失函数一般是均方误差(MSE)即,最小二乘:

40c7358040c9

image.png

所以回归问题的损失函数对权值的梯度(导数)为:

40c7358040c9

image.png

如果是二分类问题,损失函数一般为logit loss:

40c7358040c9

image.png

其中,σ表示是阶跃函数sigmoid。

40c7358040c9

image.png

所以分类问题的损失函数对权值的梯度(导数)为:

40c7358040c9

image.png

相应的,对于常数项、一次项、交叉项的导数分为:

40c7358040c9

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值