【ML基础】从特征组合及其权重的角度对常用模型做统一解释 - 2022H1
总思路
如果把机器学习理解为对输入X
的组合空间的表征,那该表征主要包括「特征组合方式」和「其对应权重(weight)」两个核心要素。另外,表示特征方式包括:原始特征值(
常用模型的统一解释
基于上述两个核心要素的算法对比:
-
树模型/gbdt
:每棵树的leaf node对应的预测结果(response),可以理解为从根节点到该leaf node的路径上所有特征的交叉的weight。 -
mlp/lr
:不具有直接原始特征值交叉的能力(所以需要人工交叉),但可以理解为通过线性加权(weight)的方式做全部特征的“弱”交叉,需要使用非线性激活函数来解决非线性问题。 -
fm/ffm
:直接的二阶原始特征值交叉(* ),weight为 ,即由特征向量embvec内积得到,和self-attention一样( )。 fm
也可称为二阶特征向量embvec的交叉(, 一般为1,可忽略)。 -
transformer 或 self-attention
:token/特征的交互方式为 。与fm相比都是基于特征向量,但 transformer
除了有和fm
一样的,又做了 softmax
归一化和对v_i
的weighted sum
(fm
没有做softmax
且换成了 * );而且 transformer
是多层+FFN
(获取更深、泛化性更好的交互),fm
为一层。- 适用场景:组合空间大 且 链接稠密(共现性高)、数据多且质量高
- 一层
transformer
也是二阶交叉,多层则“变相”实现了多阶交叉。cnn
、gnn
也类似,rnn
相当于横向多层 - 替换统计特征的难点:1.模型训练batch小,而统计特征是基于全局的统计。2.一些组合特征的共现性低(比如个性化特征),容易过拟合,并会被共现性高的特征影响,而用统计的方式很容易做
-
cnn
:image每个pixel/特征的embvec为feature map的channel维(即, )。filter卷积操作即为weighted sum 和 (而self-attention的weight来自 ,且 cnn
非全局而是local的)。 -
ViT
:因为做pixel级embvec的计算量和存储太大,改为一个patch做为一个embvec,然后用self-attention。 -
lstm
(假设激活函数为relu
和不考虑bias):和 的交叉部分可简化为 和 , 为 forget gate
参数,为 input gate
参数,为 的参数。 -
gat/gnn
:类似cnn
的filter的field,基于特定node
()的 neighbor nodes
做。 -
DCN
:construct all the cross terms( 次幂原始特征值的交叉,非特征向量或embvec交叉) with degree | |>2。理论上基于泰勒公式的幂级数可以拟合任何数据分布或函数,该方法理论基础很好。
讨论环节
问题1:fm
是有效的?
- 对特征
在样本中出现的频次做过滤,保证每个embvec均可训练。 - 只会通过 样本中出现的特征组合 对 相关的特征表征embvec做BP训练。(如果样本存在模式坍塌或非完备的特征组合分布,会容易过拟合,所以这类方法对样本量的要求远大于基于原始特征值的方案,如lr等)。
- 特征表征交叉的方式需要训练的参数量远小于「原始特征值笛卡尔积交叉」的方式,从N^2降到N*k,N为特征field的个数。
欢迎补充。希望基于这种串联加深对各算法的理解和作为平时算法选型的参考。