前言部分
FM模型其实属于LR模型的升级版,再其基础上增加了二元特征交叉,解决了LR关于特征无关性假设问题。
FM模型的基础表达方式为:
xi是所有的样本数据经过onehot编码后的统一特征表示形式。其中的w0,wi,wij都是模型参数
从公式来看,模型前半部分就是普通的LR线性组合,后半部分的交叉项即特征的组合。其中组合的特征个数为n*(n-1)/2个。由于onehot编码的稀疏性特征,当n达到1000w级别时,对应的模型参数量就是百亿级别;同时由于稀疏性,对于每一个wij对应的xi和xj非零样本过少,容易导致训练的不充分。
二次项参数的训练问题
进而FM模型的表达方式改变为:
计算进一步化简处理如下(图片来源推荐算法(一)——FM因式分解(原理+代码) - 知乎 (zhihu.com)):
化简之后,FM的复杂度从O(kn*n)降到了O(kn)
优缺点比较: