GBDT算法

sklearn中,分类是GradientBoostingClassifier,回归是GradientBoostingRegressor。两者的参数基本相同,主要分为两类:一类是Boosting框架的重要参数,第二类是弱学习器即CART决策树的重要参数。关于决策树的重要参数看随机森林的后3个参数。

from sklearn.ensemble import GradientBoostingClassifier,GradientBoostingRegressor

参数:

n_estimators:弱学习器个数,默认是100,一般与下面的参数learning_rate一起调参。

learning_rate:每个弱学习器的权重缩小系数v,范围(0,1],默认是1,较小的v意味着更多的弱学习器个数。一般将v设为0.1,调增n_estimators的取值。

③subsample:子采样,范围(0,1],默认是1。如果取值小于1,表示只有一部分样本会去做GBDT的决策树拟合,这样可以抑制过拟合,但也会增大偏差,所以取值不能太低,推荐[0.5,0.8]之间。为1表示不使用子采样。

④init:初始化的弱学习器,一般对数据没有先验知识时,不用管。

⑤loss:选择的损失函数。分类:对数似然损失函数"deviance"和指数损失函数"exponential",默认的"deviance"就行,"exponential"是回到Adaboost分类算法。回归:均方差"ls", 绝对损失"lad", Huber损失"huber"和分位数损失“quantile”。默认是均方差"ls"。一般来说,如果数据的噪音点不多,用默认的均方差"ls"。如果是噪音点较多,则推荐用抗噪音的损失函数"huber"。而如果我们需要对训练集进行分段预测的时候,则采用“quantile”。

⑥alpha:这个参数只有GradientBoostingRegressor有,当我们使用Huber损失"huber"和分位数损失“quantile”时,需要指定分位数的值。默认是0.9,如果噪音点较多,可以适当降低这个分位数的值。

调参的顺序:

一般先对Boosting框架的重要参数进行调参,确定下来后,再对决策树的参数进行调参。

比如:

①先对n_estimators和learning_rate调参,其他都是默认值。

②得到n_estimators和learning_rate最优值后,固定,再对max_depth调参。

③最后是min_samples_split和min_samples_leaf一起调参。

results matching ""

    No results matching ""