实验:
使用的数据集为天池新人赛中的,优惠券使用预测。利用FM/FFM做自动化特征工程,利用GBDT进行预测。
结论:
先说结论,用FM/FFM 来自动化特征工程的效果并不好,不如人工构建特征+GBDT
原因:
- 在GBDT模型下加入FM/FFM一阶特征,并没有起到提高AUC的作用,反而略微下降。因为新加入的特征本身就存在原来的特征中,为共线性的特征,产生了干扰。所以没有必要加入一阶特征,但是我们可以通过所获计算出来的一阶特征的权重,当特征过多时,对原始特征进行筛选,剔除没有必要的一阶特征。
2.在GBDT模型下加入FM/FFM二阶特征。AUC并没有产生变化。我认为,原因是GBDT新增的二阶特征基尼系数是相当低的导致的。如下表:
A | P(Ai) | B | P(Bi) |
A1 | 0.1 | B1 | 0.1 |
A2 | 0.2 | B2 | 0.2 |
A3 | 0.3 | B3 | 0.7 |
A4 | 0.2 |
|
|
A5 | 0.1 |
|
|
已知(A1,B1)为新构成的二阶交叉特征,则其值为1的概率为1%,为0的概率为99%。导致新增属性列的基尼系数非常低,大概率不会被选为切分特征,即不会用到该特征,故不会对结果产生影响。此时,我们需要对max_depth 进行调节。增加树的深度,将默认的值7改为9时,发现auc则会出现一定程度的提高,但是从结果看来,提高是有限的,并且会导致一定的过拟合问题。因此要想和gbdt模型融合好,不仅需要筛选出权重绝对值相对高的组合特征,而且还需要保证是出基尼系数相对较高。
3.该试验数据并非稀疏的数据,仅有3列分类变量,而FM/FFM较适用于稀疏数据。数据越稀疏,该组合模型的收益越大(没找到非常稀疏的数据验证,该结论来源于原论文)。
4.当分类变量的分类过多会影响模型的效果(上份报告提过,这次实验验证了)。对于有些分类变量如,先进行人工划分,构造特征,再进行组合效果会更好。如{周一,周二,.....,周日}。可以划分为{工作日:周一,......周五},{周末:周六,周日}。其原理与第二条所述有关,总而言之,存在越多分类变量,且每个分类变量拥有的更少的分类(最好为二分类量),就能构造出基尼系数更大的组合特征,则该组合模型效果越好。
5.本试验中,FM与FFM用来做特征工程的试验结果相差不大,但是FM计算速度方面存在明显的优势。
6.从实验结果来看,构造高阶特征性价比不高,因为所构造的高阶特征,往往其基尼系数更低,训练成本也高。
7.FM/FFM模型对连续性特征处理并不好,若能将连续值有效的划分为很少的几个类(最好是两个)是有效的,但是粗暴的划分,可能会带来信息损失。
8.FM/FFM与LR可能有更好的结合(待试验)
9.FM/FFM在训练优化过程中,是对正负样本的比例不敏感的,但是正负样本比例会对gbdt存在影响。