FM的论文可以参考 Factorization Machines
相对于直接做组合的二阶特征,FM在二阶交叉特征构造时,减少参数空间的大小,同时还能大大降低计算复杂度。
直接构造二阶特征时,其参数量为C(n,2)=n*(n-1)/2,因为没有项可以合并,所以时间复杂度同空间复杂度相同。在n量级很大的时候,其计算和存储都非常困难。(当然,实际对于大规模稀疏特征训练的实现中,其真实的参数量和计算复杂度经过工程优化,在某些场景下,也可能也可以远低于此。但是在数据充分,量级非常大的情况下,会逐渐接近其其理论复杂度,必会带来较大的性能问题)
反观FM,其思路其实也很简单:每个特征,都用一个k维的latent vector来表示其对应的二阶项的参数空间。
相较于直接组合的参数空间为n-1维,k维的latent vector相当于对原参数矩阵(nxn,实对称矩阵)做了个低秩的表达(rank=k)。从直觉上理解的话,在实际生活中,大部分特征可能都有很多相关性,所以在原特征组合的参数矩阵中,可能也有很多的线性相关在里面,所以作出低秩假设也在直觉上成立。
经过low-rank假设后,其参数空间为kn,计算复杂度也可以优化到kn
计算过程的化简如下: