梯度提升树 GradientBoosting

参考:https://blog.csdn.net/qq_16000815/article/details/81063320

scikit-learn基于梯度提升树算法提供了两个模型:

  1. GradientBoostingClassifier即GBDT(Gradient Boosting Decision Tree)梯度提升决策树,用于分类问题
  2. GradientBoostingRegressor即GBRT(Gradient Boost Regression Tree)渐进梯度回归树,用于回归问题

梯度提升决策树

from sklearn.ensemble import GradientBoostingClassifier
 
GradientBoostingClassifier(loss='deviance', learning_rate=0.1, n_estimators=100,
                 subsample=1.0, criterion='friedman_mse', min_samples_split=2,
                 min_samples_leaf=1, min_weight_fraction_leaf=0.,
                 max_depth=3, min_impurity_decrease=0.,
                 min_impurity_split=None, init=None,
                 random_state=None, max_features=None, verbose=0,
                 max_leaf_nodes=None, warm_start=False,
                 presort='auto')

参数含义:

1、loss:损失函数

  • loss='deviance',默认值,此时的损失函数与逻辑回归的损失函数相同,为对数损失:L(Y,P(Y|X))=-logP(Y|X)。
  • loss='exponential',损失函数为指数损失函数。

2、learning_rate:float, optional (default=0.1)。学习率,在learning_rate和n_estimators之间需要权衡。通常学习率越小,需要的基本分类器就越多,因此在learning_rate和n_estimators之间要有所折中。

3、n_estimators:int (default=100),指定基本决策树的数量。梯度提升对过拟合有很好的鲁棒性,因此该值越大,性能越好。

4、subsample:float, optional (default=1.0)

  • 用于拟合个体基本学习器的样本数量。如果小于1.0,模型将会变成随机梯度提升决策树。
  • 如果subsample<1.0,此时会减少方差,提高偏差

5、criterion:string, optional (default="friedman_mse"),评估节点分裂的质量指标。

6、min_samplses_split:int, float, optional (default=2),表示分裂一个内部节点需要的最少样本数。

  • 如果为整数,则min_samples_split就是最少样本数。
  • 如果为浮点数(0到1之间),则每次分裂最少样本数为ceil(min_samples_split * n_samples)

7、min_samples_leaf:int, float, optional (default=1),叶子节点最少样本数

  • 如果为整数,则min_samples_split就是最少样本数。
  • 如果为浮点数(0到1之间),则每个叶子节点最少样本数为ceil(min_samples_leaf * n_samples)

8、min_weight_fraction_leaf:float, optional (default=0.),指定叶子节点中样本的最小权重。

9、max_depth:integer, optional (default=3),指定每个基本决策树的最大深度。最大深度限制了决策树中的节点数量。调整这个参数可以获得更好的性能。

10、min_impurity_decrease:float, optional (default=0.)

 如果节点的分裂导致不纯度的减少(分裂后样本比分裂前更加纯净)大于或等于min_impurity_decrease,则分裂该节点。
 个人理解这个参数应该是针对分类问题时才有意义。这里的不纯度应该是指基尼指数。
 回归生成树采用的是平方误差最小化策略。分类生成树采用的是基尼指数最小化策略。

11、min_impurity_split:树生长过程中停止的阈值。如果当前节点的不纯度高于阈值,节点将分裂,否则它是叶子节点。这个参数已经被弃用。用min_impurity_decrease代替了min_impurity_split。

12、init:BaseEstimator, None, optional (default=None),一个基本分类器对象或者None,该分类器对象用于执行初始的预测。如果为None,则使用loss.init_estimator

13、random_state:int, RandomState instance or None, optional (default=None)

  • 如果为整数,则它指定了随机数生成器的种子。
  • 如果为RandomState实例,则指定了随机数生成器。
  • 如果为None,则使用默认的随机数生成器。

14、max_features:int, float, string or None, optional (default=None)
 搜寻最佳划分的时候考虑的特征数量。

  1. 如果为整数,每次分裂只考虑max_features个特征。
  2. 如果为浮点数(0到1之间),每次切分只考虑int(max_features * n_features)个特征。
  3. 如果为'auto'或者'sqrt',则每次切分只考虑sqrt(n_features)个特征
  4. 如果为'log2',则每次切分只考虑log2(n_features)个特征。
  5. 如果为None,则每次切分考虑n_features个特征。
  6. 如果已经考虑了max_features个特征,但还是没有找到一个有效的切分,那么还会继续寻找下一个特征,直到找到一个有效的切分为止。
  7. 如果max_features < n_features,则会减少方差,增加偏差。

15、verbose:int, default: 0,如果为0则不输出日志信息,如果为1则每隔一段时间打印一次日志信息。

16、max_leaf_nodes:int or None, optional (default=None),指定每颗决策树的叶子节点的最大数量。

  • 如果为None,则叶子节点数量不限。
  • 如果不为None,则max_depth被忽略。

17、warm_start:bool, default: False,当为True时,则继续使用上一次训练的结果,增加更多的estimators来集成。

18、presort:bool or 'auto', optional (default='auto'),在训练过程中,是否预排序数据加速寻找最佳划分。


属性:

  1. feature_importances_:数组,给出每个特征的重要性。
  2. oob_improvement_:array, shape = [n_estimators],数组,给出了每增加一颗基本决策树,在包外估计(即测试集上)的损失函数的改善情况(相对于上一轮迭代),即损失函数的减少值。
  3. train_score_:数组,给出每增加一颗基本决策树,在训练集上的损失函数的值。
  4. init:初始预测使用的分类器。
  5. estimators_:数组,给出每棵基础决策树。

方法:

  1. fit():训练模型
  2. predict():模型预测
  3. predict_log_proba():数组,预测各个类别的概率对数值。
  4. predict_proba():数组,预测各个类别的概率值。

渐进梯度回归树

from sklearn.ensemble import GradientBoostingRegressor
GradientBoostingRegressor(loss='ls', learning_rate=0.1, n_estimators=100,
                 subsample=1.0, criterion='friedman_mse', min_samples_split=2,
                 min_samples_leaf=1, min_weight_fraction_leaf=0.,
                 max_depth=3, min_impurity_decrease=0.,
                 min_impurity_split=None, init=None, random_state=None,
                 max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None,
                 warm_start=False, presort='auto')

参数含义:

1、loss:{'ls', 'lad', 'huber', 'quantile'}, optional (default='ls'),指定优化的损失函数。

  • loss='ls':损失函数是平方损失函数
  • loss='lad':损失函数为绝对值损失函数
  • loss='huber':损失函数是上边两种损失函数的结合。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值