参考:
scikit-learn基于梯度提升树算法提供了两个模型:
- GradientBoostingClassifier即GBDT(Gradient Boosting Decision Tree)梯度提升决策树,用于分类问题
- GradientBoostingRegressor即GBRT(Gradient Boost Regression Tree)渐进梯度回归树,用于回归问题
梯度提升决策树
参数含义:
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.)
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,则使用默认的随机数生成器。
- 如果为整数,每次分裂只考虑max_features个特征。
- 如果为浮点数(0到1之间),每次切分只考虑int(max_features * n_features)个特征。
- 如果为'auto'或者'sqrt',则每次切分只考虑sqrt(n_features)个特征
- 如果为'log2',则每次切分只考虑log2(n_features)个特征。
- 如果为None,则每次切分考虑n_features个特征。
- 如果已经考虑了max_features个特征,但还是没有找到一个有效的切分,那么还会继续寻找下一个特征,直到找到一个有效的切分为止。
- 如果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'),在训练过程中,是否预排序数据加速寻找最佳划分。
属性:
- feature_importances_:数组,给出每个特征的重要性。
- oob_improvement_:array, shape = [n_estimators],数组,给出了每增加一颗基本决策树,在包外估计(即测试集上)的损失函数的改善情况(相对于上一轮迭代),即损失函数的减少值。
- train_score_:数组,给出每增加一颗基本决策树,在训练集上的损失函数的值。
- init:初始预测使用的分类器。
- estimators_:数组,给出每棵基础决策树。
方法:
- fit():训练模型
- predict():模型预测
- predict_log_proba():数组,预测各个类别的概率对数值。
- predict_proba():数组,预测各个类别的概率值。
渐进梯度回归树
参数含义:
1、loss:{'ls', 'lad', 'huber', 'quantile'}, optional (default='ls'),指定优化的损失函数。
- loss='ls':损失函数是平方损失函数
- loss='lad':损失函数为绝对值损失函数
- loss='huber':损失函数是上边两种损失函数的结合。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-jnts/17807.html