FM的原理https://zhuanlan.zhihu.com/p/37963267
原理
FM的表达式,包含常数项,一阶项,二阶项
正常情况下,
只有当
不为0的情况下,
才能被训练到
同样的,
只有当
都不为0的情况下,
才能被训练到,再加上数据稀疏,
不为0的情况非常少,所以
就很难被训练到。
解决办法
是矩阵计算出来的值,不再是单纯一个值。
是有下面矩阵计算出来的
这也是矩阵分解的结果。
最后经过一系列的化简
然后求偏导
为什么适用于稀疏
在优化的时候有
,同样的当
为0的时候,
还是不能训练到。
但是,此时交叉项的系数是有矩阵组成的,V1=[v12, v13, ..., v1k],只要有x不为全为0,偏导的结果就不为0,这个参数就能训练到。
此时有一个特征为空就不能训练---》变成了全部特征为空才能不训练,
也就是即使是稀疏数据的情况下,矩阵依然能够迭代,从而矩阵计算出的
也在迭代。