分解机FM是大阪大学Steffen Rendle将MF、SVD++、PITF和FPMC归纳出针对高稀疏数据的因子机,这个模型对于回归预测任务有着较好的泛化能力。
函数如下
(1.1)
FM常用于回归预测任务,也就是通过学习出一个函数
来将一个n维的实值特征向量映射到一个目标域T。
最经典的线性回归模型函数可表示为
(1.2)
显然在这一个模型中并没有包含特征变量之间的关系,仅仅学习了单个特征变量对于预测结果的影响。
因此在线性回归模型的基础上,考虑两个互异特征的影响
(1.3)
但是此时作为系数在数据稀疏较高的情况下会使得无法学习到对应的系数。
因此我们将整体作为一个矩阵来考虑,使用MF(矩阵分解)将其分解
(1.4)
(1.5)
最后我们获得了一个新的模型
(1.6)
这是一个典型的2路或者说2阶FM,我们可以将其推广到d阶
(1.7)
这种形式下特征变量相互关系较为复杂,所以以下皆讨论2阶FM
由于线性回归模型和线性不可分SVM与FM具有类似的形式。
所以我们将这两种模型拿来与FM进行比较
线性回归模型的缺陷在(1.2)(1.3)中已经阐述过了。
然后对于SVM,我们先回想一下,SVM分为线性可分、线性和线性不可分三大类:
线性可分支持向量机:简单的来说就是通过最大化margin(间隔)从而确定唯一能够确定二分类的超平面,如下图
分类函数为 (2.1)
(2.2) 能够表示点x到距离超平面的远近
通过对构造出的拉格朗日函数求间隔最大即求最小,将其转换为对偶问题
为拉格朗日乘子 (2.3)
解得
(2.4)
带回得
(2.5)
得出乘子带回W中,算出超平面的W和b
实际上就是将分类函数变为了
(2.6)
此处表示对于测试集的新划分点,只需计算其与训练数据点的内积
当问题变为线性不可分时,
我们考虑将其映射到高维
(3.1)
(3.2)
当核函数为简单的线性核 时,
SVM与一阶FM形式完全一样 (3.3)
而当核函数为多项式核 时, (3.4)
此时就像(1.3)(1.4)(1.5)提到过的一样在数据稀疏的情况下无法学习到。
与线性回归模型一样与FM相比SVM同样不够优秀
与此同时,我们可以来计算一下FM的时间开销,我们直接通过公式计算
(4.1)
时间开销看起来要比线性回归模型和SVM要大得多
但是我们可以对第二个花括号所对应的进行优化
(4.2)
因此FM的计算复杂度变为 (4.3)
优化问题:优化目标为模型的整体损失函数
(5.1)
对于回归问题损失函数取平方误差 (5.2)
对于二分类问题损失函数取logit函数 (5.3)
(5.4)
加入L2正则项防止过拟合
(5.5)
学习方法:
随机梯度下降SGD
(5.6)
根据凸函数的梯度计算下降到的最小值也就是 理想的参数
FM和其他的分解模型比较
MF
MF较为简单,FM将输入数据调整为
FM函数变为
SVD++
首先从SVD讲起。SVD将(用户评分矩阵)矩阵分解如下
事实上在实际运用传统SVD来求得三个分解矩阵时效率很差,所以就提出了FunkSVD 或者说LFM
我们希望能像MF一样分解成
通过最小化这个式子
当然要优化的正式目标函数是这个
导数为
通过梯度下降法得到迭代公式
最终得出任意一矩阵存在其分解如下
对于某一预测评分有
这一评分预测完全基于已知评分理所当然地会出现过拟合的情况,因此我们对于评分和损失函数加上惩罚项。由于不清楚哪个变量对于过拟合影响较大,因此将所有变量都进行惩罚
用户对于的商品打分或许还会基于用户和商品独有的性质(当然带有偏置的SVD也可以加入惩罚项)
因此有
而SVD++ 就是将Pu用户评分矩阵替换为用户行为记录(评分+浏览以及评过分的商品集合)即
而FM可以将公式中的输入数据x调整为
其中一部分就是SVD++
PITF
FPMC
参考资料:CSDN博客 https://www.cnblogs.com/pinard/p/6370127.html
https://blog.csdn.net/zhongkejingwang/article/details/43053513
https://blog.csdn.net/liugan528/article/details/79448379
https://blog.csdn.net/v_JULY_v/article/details/7624837
知乎 https://zhuanlan.zhihu.com/p/50426292
李航 统计学习方法
论文大阪大学Steffen Rendle https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf