LR,gbdt,libfm这三种模型分别适合处理什么类型的特征,为了取得较好效果他们对特征有何要求?

关注者
1,019
被浏览
133,525

13 个回答

LR, FM都比较适用于高维稀疏特征, gbdt不适合. FM能够得到特征分量之间的关系(通常是两两特征), LR常用于线性问题,对于非线性问题需要定义非线性函数对特征进行映射, GBDT对线性/非线性问题基本上都通吃..而且效果很好. 取得好的效果嘛..建议gbdt+LR或者gbdt+FM啦, 即gbdt的输出作为LR或者FM的输入, 原始特征经过gbdt转变成高维稀疏特征, 简单来说, gbdt的输出相当于对原始特征进行了特征组合得到高阶属性或者说是非线性映射.

说点其他的。

前面的都说了高维稀疏特征的时候,lr 的效果会比 gbdt 好,但是都没明确的说出为什么。这个问题我也是思考了好久,在平时的项目中也遇到了不少 case,确实高维稀疏特征的时候,使用 gbdt 很容易过拟合。但是还是不知道为啥,后来深入思考了一下模型的特点,发现了一些有趣的地方。


首先讲讲我遇到的一个 case 是这样的:

假设有1w 个样本, y类别0和1,100维特征,其中10个样本都是类别1,而特征 f1的值为0,1,且刚好这10个样本的 f1特征值都为1,其余9990样本都为0(在高维稀疏的情况下这种情况很常见),我们都知道这种情况在树模型的时候,很容易优化出含一个使用 f1为分裂节点的树直接将数据划分的很好,但是当测试的时候,却会发现效果很差,因为这个特征只是刚好偶然间跟 y拟合到了这个规律,这也是我们常说的过拟合。但是当时我还是不太懂为什么线性模型就能对这种 case 处理的好?照理说 线性模型在优化之后不也会产生这样一个式子:y = W1*f1 + Wi*fi+....,其中 W1特别大以拟合这十个样本吗,因为反正 f1的值只有0和1,W1过大对其他9990样本不会有任何影响。

后来思考后发现原因是因为现在的模型普遍都会带着正则项,而 lr 等线性模型的正则项是对权重的惩罚,也就是 W1一旦过大,惩罚就会很大,进一步压缩 W1的值,使他不至于过大,而树模型则不一样,树模型的惩罚项通常为叶子节点数和深度等,而我们都知道,对于上面这种 case,树只需要一个节点就可以完美分割9990和10个样本,惩罚项极其之小,这也就是为什么在高维稀疏特征的时候,线性模型会比非线性模型好的原因了:带正则化的线性模型比较不容易对稀疏特征过拟合。


公众号:IT妖猪,欢迎关注!