【ML基础】从特征组合及其权重的角度对常用模型做统一解释 - 2022H1

总思路

如果把机器学习理解为对输入X的组合空间的表征,那该表征主要包括「特征组合方式」和「其对应权重(weight)」两个核心要素。另外,表示特征方式包括:原始特征值(xi, xj)和特征向量embvec(ei, ej),eiej表示eiej的dot-product。

常用模型的统一解释

基于上述两个核心要素的算法对比:

  1. 树模型/gbdt:每棵树的leaf node对应的预测结果(response),可以理解为从根节点到该leaf node的路径上所有特征的交叉的weight。

  2. mlp/lr:不具有直接原始特征值交叉的能力(所以需要人工交叉),但可以理解为通过线性加权(weight)的方式做全部特征的“弱”交叉,需要使用非线性激活函数来解决非线性问题。

  3. fm/ffm:直接的二阶原始特征值交叉(xi*xj),weight为eiej,即由特征向量embvec内积得到,和self-attention一样(qikj)。fm也可称为二阶特征向量embvec的交叉(xi, xj一般为1,可忽略)。

  4. transformer 或 self-attention:token/特征ei的交互方式为softmax(WqeiWke1n)Wve1n。与fm相比都是基于特征向量,但transformer除了有和fm一样的qikj,又做了softmax归一化和对v_iweighted sumfm没有做softmaxvj换成了xi*xj);而且transformer是多层+FFN(获取更深、泛化性更好的交互),fm为一层。

    1. 适用场景:组合空间大 且 链接稠密(共现性高)、数据多且质量高
    2. 一层transformer也是二阶交叉,多层则“变相”实现了多阶交叉。cnngnn也类似,rnn相当于横向多层
    3. 替换统计特征的难点:1.模型训练batch小,而统计特征是基于全局的统计。2.一些组合特征的共现性低(比如个性化特征),容易过拟合,并会被共现性高的特征影响,而用统计的方式很容易做
  5. cnn:image每个pixel/特征的embvec为feature map的channel维(即ei, ej)。filter卷积操作即为weighted sum eiej(而self-attention的weight来自eiej,且cnn非全局而是local的)。

  6. ViT:因为做pixel级embvec的计算量和存储太大,改为一个patch做为一个embvec,然后用self-attention。

  7. lstm(假设激活函数为relu和不考虑bias):etet1的交叉部分可简化为WfWietet1WiWhetet1Wfforget gate参数,Wiinput gate参数,Whht的参数。

  8. gat/gnn:类似cnn的filter的field,基于特定nodeei)的neighbor nodes1nWiei

  9. DCN:construct all the cross terms x1α1x2α2...xdαdα次幂原始特征值的交叉,非特征向量或embvec交叉) with degree |α|>2。理论上基于泰勒公式的幂级数可以拟合任何数据分布或函数,该方法理论基础很好。

讨论环节

问题1:xixj的组合空间很稀疏,为什么fm是有效的?

  1. 对特征xi在样本中出现的频次做过滤,保证每个embvec均可训练。
  2. 只会通过 样本中出现的特征组合 对 相关的特征表征embvec做BP训练。(如果样本存在模式坍塌或非完备的特征组合分布,会容易过拟合,所以这类方法对样本量的要求远大于基于原始特征值的方案,如lr等)。
  3. 特征表征交叉的方式需要训练的参数量远小于「原始特征值笛卡尔积交叉」的方式,从N^2降到N*k,N为特征field的个数。

欢迎补充。希望基于这种串联加深对各算法的理解和作为平时算法选型的参考。