对于xgboost,还有必要做很多特征工程吗?

  统计/机器学习 监督式学习 特征选择 开放问题    浏览次数:25874        分享
15

传统上来说,机器学习建模的第一步就是进行特征工程。但是似乎对于xgboost算法,特征工程显得没有那么举足轻重了(吗?)。


就拿公共自行车使用量预测这个题目来说,我做了特征工程和不做特征工程相比,结果并没有明显提高,很多时候甚至还是下降的。然而对于线性回归模型来说,是否做特征工程,效果则非常明显。


不知针对这个例子,我想讨论的是,对于xgboost来说,特征工程是否还是那么必要吗?

谢谢!


 

可爱多   2017-10-28 13:37



   3个回答 
21

特征工程是个很广的概念,包括特征筛选、特征变换、特征合成、特征提取等等。


对于xgboost,它能够很好地做到特征选择,所以这一点不用我们去操心太多。


至于特征变换(离散化、归一化、标准化、取log等等),我们也不需要做太多,因为xgboost是基于决策树,决策树自然能够解决这些。相比较来说,线性模型则需要做离散化或者取log处理。因为xgboost(树类模型)不依赖于线性假设。但是对于分类特征,xgboost需要对其进行独热编码,否则无法训练模型。


xgboost也可以免于一部分特征合成的工作,比如线性回归中的交互项a:b,在树类模型中都可以自动完成。但是对于加法a+b,减法a-b,除法a-b这类合成的特征,则需要手动完成。


绝大部分模型都无法自动完成的一步就是特征提取。很多nlp的问题或者图象的问题,没有现成的特征,你需要自己去提取这些特征,这些是我们需要人工完成的。


综上来说,xgboost的确比线性模型要省去很多特征工程的步骤。但是特征工程依然是非常必要的。


SofaSofa数据科学社区DS面试题库 DS面经

Nagozi   2017-11-08 00:08

9

相对于线性模型来说,特征工程不是那么重要吧

线性模型有时候还需要做interaction term

决策树或者boosting都是模型自己在做interaction的。


SofaSofa数据科学社区DS面试题库 DS面经

阳春面   2017-10-30 09:23

请问怎么理解决策树是模型自己在做interaction? - dzzxjl   2018-03-06 19:12
同好奇 - dsjobhunter   2018-03-07 03:10
这里很多人看不到,我单独发问题了 - dsjobhunter   2018-03-08 14:08
看到了 希望有大神解答 - dzzxjl   2018-03-08 14:55
9

从特征多重共线性的角度来说,xgboost可以省去很多特征工程的工程。

至于原因可以参考决策树、随机森林中的多重共线性问题


SofaSofa数据科学社区DS面试题库 DS面经

雷猴   2017-11-09 12:05



  相关讨论

如果用xgboost模型,那么还需要先做feature selection吗?

Tree Shap value for xgboost

XGBoost中get_score中的cover是什么意思

在random forest和xgboost这类集成树模型中是如何计算_feature_importance的

怎么利用permutation importance来解释xgboost模型的特征?

为啥Xgboost比GradientBoost好那么多?

stack多个xgboost效果并不理想

GBDT和XGBoost使用的都是回归树,原理上是怎么支持解决分类问题的?

到底什么时候用lightgbm什么时候用xgb

xgboost是怎么做到regularization的?

  随便看看

sklearn可以用gpu加速吗?

为什么自然常数e等于阶乘的倒数的和?

神经网络里为什么隐藏层越多越好?

鞍点的数学定义是什么?

二维numpy.array转为一维的numpy.array或者list