目录
目前实现过的特征交叉模型,离线在线准确率结果如下:
Criteo数据集 | 个推池500万短视频数据集 | 在embedding候选集中的线上点击率 | |
FM | 0.7801 | 0.8845 | 18% |
Wide&Deep | 0.7817 | 0.9585 | / |
DeepFM | 0.7900 | 0.9627 | 21.33% |
DCN | 0.7817 | 0.9566 | 23.22% |
DCNv2 | 0.7943 | 0.9704 | 24.32% |
DeepCrossing | 0.7840 | 0.9455 | / |
xDeepFM | 0.7371 | 0.9314 | / |
PNN | 0.7862 | 0.9585 | / |
FFM | 0.6078 | 0.8649 | / |
NFM | 0.7910 | 0.9385 | / |
AFM | 0.7543 | 0.8499 | / |
目前基于特征交互的模型可以大致分为三类:
-
Aggregation based方法:聚合用户的历史行为序列来获得CTR预估的判别表示;
-
Graph based方法: 将特征作为节点, 通过有向和无向图的方式连接, 在这种情况下,特征协同作用作为信息沿边缘传播的边缘权重;
-
Combinatorial embedding方法:直接明显的组合特征的embedding;
以下为截至2020年,发表过的特征交叉相关的论文:
1.LR:WWW 2007
Predicting Clicks Estimating the Click-Through Rate for New Ads
数学形式:
本质:特征的加权线性组合;
优点:数学理论支撑;符合直觉,可解释性;工程化的需要(2012年GPU尚未流行);
缺点:线性模型,无法拟合非线性关系;
2.Poly2:2010
Training and Testing Low-degree Polynomial Data Mappings via Linear SVM
数学形式:
本质:特征的暴力组合;
优点:解决LR无法利用高维特征的问题;
缺点:权重参数由n变为n*n,训练复杂度太高;无选择的特征交叉方式会让one-hot格式的稀疏数据变得更加稀疏,导致大部分权重缺少训练数据,无法收敛;
3.FM:ICDM 2010
Factorization Machines
数学形式:
简化第三项:
本质:用两个向量的内积代替了两个特征的权重参数,实现为每个特征学习到一个隐向量;
优点:引入隐向量使得待训练权重数量由n*n减小为n*dim(隐向量的维度),降低训练开销,使得稀疏数据获得稠密表达;
缺点:只组合了二阶特征;
核心代码:
def call(self, inputs):
dense_inputs, sparse_inputs = inputs
sparse_inputs = tf.concat([tf.one_hot(sparse_inputs[:, i], \
depth=self.feat_num[i] for i in range(sparse_inputs.shape[1])], axis=1)
stack = tf.concat(dense_inputs, sparse_inputs], axis=1)
first_order = self.w0 + tf.matmul(stack, self.w)
second_order = 0.5*tf.reduce_sum(tf.pow(tf.matmul(stack, tf.transpose(self.V)), 2)-
tf.matmul(tf.pow(stack, 2), tf.pow(tf.transpose(self.V), 2)), axis=1, keepdims=True)
outputs = tf.nn.sigmoid(first_order + second_order)
链接:https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf
4.PairwiseFM:CIKM2013
Exploiting ranking factorization machines for microblog retrieval
本质:LTR中的pairwise是挑选一个正负样本对作为一个新的样本,即 。如果 ,则就是PairWise FM。如果,则就是很有名的RankSvm。
5.GBDT+LR:Facebook 2014
本质:利用GBDT自动进行特征筛选和组合,生成新的离散特征向量,再将向量输入LR模型进行预估;
优点:每棵树生成的过程是一棵标准的回归树生成过程,因此每个节点的分裂是一个自然的特征选择的过程,而多层节点的结构自然进行了有效的特征组合,也就非常高效的解决了过去非常棘手的特征选择和特征组合的问题;
缺点:GBDT容易产生过拟合;GBDT这种特征转换方式实际上丢失了大量特征的数值信息;