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算法之前,我们先回顾一下最常见的线性表达式:
image.png
其中[图片上传失败W0为初始权重值,或者理解为偏置项,Wi为每个特征 xi 对应的权重值,可以看到,这种线性表达式只描述了每个特征和输出的关系。
FM的表达式如下,可观察到,只是在线性表达式后面加入了新的交叉项特征及对应的权值。
image.png
5、FM交叉项的展开
1)寻找交叉项
FM表达式的求解核心在于对交叉项的求解。下面是很多人用来求解交叉项的展开式,对于第一次接触FM算法的人来说可能会有疑惑,不知道公式怎么展开的,接下来笔者会手动推导一遍。
image.png
设有3个变量(特征)x1,x2,x3,每个特征的隐变量分别为v1=(1,2,3)、v2=(4,5,6)、v3=(1,2,1)即:
image.png
设交叉项所组成的权矩阵W为对称矩阵,之所以设为对称矩阵是因为对称矩阵可以用向量乘以向量的转置代替的性质。
那么W=VVT ,即
所以:
image.png
实际上我们考虑的交叉项应该是排除自身组合的项,即对于x1x1,x2x2,x3x3不认为是交叉项,那么真正的交叉项为x1x2,x1x3,x2x1,x2x3,x3x1,x3x2。
去重后,交叉项即:x1x2,x1x3,x2x3。这也是出现1/2的原因
2)交叉项权值转换
对交叉项有了基本了解后,下面将进行公式的分解,还是以n=3为例,
image.png
3)交叉项展开式
上面的例子是对3个特征做的交叉项推导,因此对具有n个特征,FM的交叉项公式就可推广为:
image.png
我们还可以进一步分解:
image.png
所以FM算法的交叉项最终展开为:
image.png
6、权值求解
利用梯度下降法,通过求损失函数对特征(输入项)的导数计算出梯度,从而更新权值。设m为样本个数θ为权值。
如果是回归问题,损失函数一般是均方误差(MSE)即,最小二乘:
image.png
所以回归问题的损失函数对权值的梯度(导数)为:
image.png
如果是二分类问题,损失函数一般为logit loss:
image.png
其中,σ表示是阶跃函数sigmoid。
image.png
所以分类问题的损失函数对权值的梯度(导数)为:
image.png
相应的,对于常数项、一次项、交叉项的导数分为:
image.png