传统的特征交叉是先手动再组合特征,再通过各种分析手段筛选特征的方法——低效。
Poly2模型
Degree-2 Polynomial Margin (Poly2)
Poly2模型总的参数数量为
相比LR模型,新增个交叉特征,任意两个参数都是独立的。
我们可以把所有的写成矩阵:
上面的矩阵是关于对角线对称的。
Poly2模型的缺陷
1、容易发现,要训练需要和同时不为0,而推荐系统中的共现矩阵是很稀疏的,因此你难以训练组合特征的参数。
2、参数量由LR的个直接上升到个,极大的增加了模型训练的复杂度。
FM模型 (因子分解机,Factorization Machine,FM)
因为是关于对角线对称的,所以可以分解成,其中是,也就是说矩阵有行,任意两行的内积一共有个值,那么假设函数为:
,是向量,对应矩阵的第行和第行。
此时参数量为。复杂度为,但是我们可以对上面的公式进行变换,使得复杂度降低为线性的,具体推导过程如下:
FFM模型
Field Factorization Machine,FFM
首先要理解什么是特征域(Field) ?
对于分类变量性别:[男,女,未知]
对于年龄分箱后:[x<=20,20<x<=40,40<x<=60,x>60]
对于一个33岁的女人,其one-hot编码为:0100100,前3个数字表示性别,后4个数字表示年龄,这7个特征对应两个特征域即性别和年龄。
在FM中没有特征域的概念,或者说所有的特征都属于1个特征域,即此时1个特征域对应1个矩阵,其大小为;
在FFM模型中,如果有个特征域,就有个矩阵。不同的Field变成one-hot编码后得到的sparse features数量书不同的,所以不同Field对应的矩阵的行长度是不同的,列长度为。当特征与特征交叉时,从对应的特征域矩阵(即一组向量)中选择第行向量;从对应的特征域矩阵中选择第行向量,那么就有假设函数:
显然FFM模型的参数量为。
FM模型的复杂度由可以降低为,但是FFM模型不具有FM模型的等价推导,所以其复杂度为。所以实际应用中,要在模型效果(FFM更好)和工程投入(FM投入小)之间做出权衡。
总结
不管是Poly2,FM还是FFM都可以由2阶(两两交叉)推广到多阶,但是带来的是复杂度的急剧增加,不具有实际工程应用条件。所以Poly2,FM和FFM都只适合两两特征组合!
https://tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html
https://blog.csdn.net/ddydavie/article/details/82667890
https://www.cnblogs.com/pinard/p/6370127.html