传统上来说,机器学习建模的第一步就是进行特征工程。但是似乎对于xgboost算法,特征工程显得没有那么举足轻重了(吗?)。
就拿公共自行车使用量预测这个题目来说,我做了特征工程和不做特征工程相比,结果并没有明显提高,很多时候甚至还是下降的。然而对于线性回归模型来说,是否做特征工程,效果则非常明显。
不知针对这个例子,我想讨论的是,对于xgboost来说,特征工程是否还是那么必要吗?
谢谢!
3个回答
特征工程是个很广的概念,包括特征筛选、特征变换、特征合成、特征提取等等。
对于xgboost,它能够很好地做到特征选择,所以这一点不用我们去操心太多。
至于特征变换(离散化、归一化、标准化、取log等等),我们也不需要做太多,因为xgboost是基于决策树,决策树自然能够解决这些。相比较来说,线性模型则需要做离散化或者取log处理。因为xgboost(树类模型)不依赖于线性假设。但是对于分类特征,xgboost需要对其进行独热编码,否则无法训练模型。
xgboost也可以免于一部分特征合成的工作,比如线性回归中的交互项a:b,在树类模型中都可以自动完成。但是对于加法a+b,减法a-b,除法a-b这类合成的特征,则需要手动完成。
绝大部分模型都无法自动完成的一步就是特征提取。很多nlp的问题或者图象的问题,没有现成的特征,你需要自己去提取这些特征,这些是我们需要人工完成的。
综上来说,xgboost的确比线性模型要省去很多特征工程的步骤。但是特征工程依然是非常必要的。
相对于线性模型来说,特征工程不是那么重要吧
线性模型有时候还需要做interaction term
决策树或者boosting都是模型自己在做interaction的。
请问怎么理解决策树是模型自己在做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