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

  统计/机器学习 监督式学习 特征选择 开放问题
13

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


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


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

谢谢!


 

可爱多   2017-10-28 13:37



   4个回答 
9

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


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


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


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


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


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


Nagozi   2017-11-08 00:08

6

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

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

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


阳春面   2017-10-30 09:23

6

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

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


雷猴   2017-11-09 12:05

3

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


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


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


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


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


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



可爱多   2017-11-07 22:43



相关问题

为啥Xgboost比GradientBoost好那么多?   4回答

既然xgboost那么好,线性回归还有存在的价值吗?   3回答

xgboost是怎么做到regularization的?   1回答

xgboost怎么调参?   6回答

xgboost中的参数min_child_weight是什么意思?   1回答

stack多个xgboost效果并不理想   2回答

xgboost可以做回归预测吗?   2回答

XGBClassifier设置random_state报错   1回答

xgboost中的决策树的复杂度是怎么定义的?   1回答

在分类问题中,有什么方法可以得到特征的重要性?   2回答

xgboost可以用sklearn里的GridSearchCV吗?   2回答

为什么LASSO可以做特征选择,而Ridge却不行?   0回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!