本文简要介绍python语言中 sklearn.ensemble.GradientBoostingClassifier
的用法。
用法:
class sklearn.ensemble.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.0, max_depth=3, min_impurity_decrease=0.0, init=None, random_state=None, max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, validation_fraction=0.1, n_iter_no_change=None, tol=0.0001, ccp_alpha=0.0)
用于分类的梯度提升。
GB 以正向stage-wise 方式构建加法模型;它允许优化任意可微损失函数。在每个阶段
n_classes_
回归树都适合二项式或多项式偏差损失函数的负梯度。二元分类是一种特殊情况,其中只引入了一个回归树。在用户指南中阅读更多信息。
- loss:{‘deviance’, ‘exponential’},默认='偏差'
要优化的损失函数。 ‘deviance’ 指的是带有概率输出的分类的偏差(=逻辑回归)。对于损失‘exponential’梯度提升恢复AdaBoost算法。
- learning_rate:浮点数,默认=0.1
学习率将每棵树的贡献缩小
learning_rate
。 learning_rate 和 n_estimators 之间存在权衡。- n_estimators:整数,默认=100
要执行的升压级数。梯度提升对于过度拟合相当稳健,因此大量通常会带来更好的性能。
- subsample:浮点数,默认=1.0
用于拟合各个基础学习器的样本分数。如果小于 1.0,则会导致随机梯度提升。
subsample
与参数n_estimators
交互。选择subsample < 1.0
会导致方差减少和偏差增加。- criterion:{‘friedman_mse’, ‘squared_error’, ‘mse’, ‘mae’},默认='friedman_mse'
测量分割质量的函数。支持的标准是均方误差的‘friedman_mse’,Friedman 的改进分数,均方误差的‘squared_error’,平均绝对误差的‘mae’。 ‘friedman_mse’ 的默认值通常是最好的,因为它在某些情况下可以提供更好的近似值。
- min_samples_split:int 或浮点数,默认=2
拆分内部节点所需的最小样本数:
- 如果是 int,则将
min_samples_split
视为最小数字。 - 如果是浮点数,那么
min_samples_split
是一个分数,而ceil(min_samples_split * n_samples)
是每个拆分的最小样本数。
- 如果是 int,则将
- min_samples_leaf:int 或浮点数,默认=1
叶节点所需的最小样本数。只有在左右分支中的每个分支中至少留下
min_samples_leaf
训练样本时,才会考虑任何深度的分割点。这可能具有平滑模型的效果,尤其是在回归中。- 如果是 int,则将
min_samples_leaf
视为最小数字。 - 如果是浮点数,那么
min_samples_leaf
是分数,而ceil(min_samples_leaf * n_samples)
是每个节点的最小样本数。
- 如果是 int,则将
- min_weight_fraction_leaf:浮点数,默认=0.0
需要在叶节点处的权重总和(所有输入样本的)的最小加权分数。当未提供sample_weight 时,样本具有相同的权重。
- max_depth:整数,默认=3
单个回归估计器的最大深度。最大深度限制了树中的节点数。调整此参数以获得最佳性能;最佳值取决于输入变量的相互作用。
- min_impurity_decrease:浮点数,默认=0.0
如果该分裂导致杂质减少大于或等于该值,则该节点将被分裂。
加权杂质减少方程如下:
N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)
其中
N
是样本总数,N_t
是当前节点的样本数,N_t_L
是左孩子的样本数,N_t_R
是右孩子的样本数.N
,N_t
,N_t_R
和N_t_L
都是指加权和,如果通过了sample_weight
。- init:估计器或‘zero’,默认=无
用于计算初始预测的估计器对象。
init
必须提供fit
和predict_proba
。如果‘zero’,则初始原始预测设置为零。默认情况下,使用DummyEstimator
预测类先验。- random_state:int、RandomState 实例或无,默认=无
控制在每次提升迭代中给予每个树估计器的随机种子。此外,它还控制每次拆分时特征的随机排列(有关详细信息,请参阅注释)。如果
n_iter_no_change
不是None,它还控制训练数据的随机拆分以获得验证集。传递 int 以获得跨多个函数调用的可重现输出。请参阅词汇表。- max_features:{‘auto’, ‘sqrt’, ‘log2’}, int 或浮点数,默认=无
寻找最佳分割时要考虑的特征数量:
- 如果是 int,则在每次拆分时考虑
max_features
特征。 - 如果是浮点数,那么
max_features
是一个分数,并且在每次拆分时都会考虑int(max_features * n_features)
特征。 - 如果 ‘auto’,那么
max_features=sqrt(n_features)
。 - 如果 ‘sqrt’,那么
max_features=sqrt(n_features)
。 - 如果 ‘log2’,那么
max_features=log2(n_features)
。 - 如果没有,那么
max_features=n_features
。
选择
max_features < n_features
会导致方差减少和偏差增加。注意:在找到至少一个节点样本的有效分区之前,对拆分的搜索不会停止,即使它需要有效地检查超过
max_features
的特征。- 如果是 int,则在每次拆分时考虑
- verbose:整数,默认=0
启用详细输出。如果为 1,那么它会不时打印进度和性能(树越多,频率越低)。如果大于 1,那么它会打印每棵树的进度和性能。
- max_leaf_nodes:整数,默认=无
以best-first 方式用
max_leaf_nodes
种植树。最佳节点定义为杂质的相对减少。如果 None 则无限数量的叶节点。- warm_start:布尔,默认=假
当设置为
True
时,重用前一个调用的解决方案以适应并向集成添加更多估计器,否则,只需删除前一个解决方案。请参阅词汇表。- validation_fraction:浮点数,默认=0.1
留出作为提前停止验证集的训练数据的比例。必须介于 0 和 1 之间。仅在
n_iter_no_change
设置为整数时使用。- n_iter_no_change:整数,默认=无
n_iter_no_change
用于决定当验证分数没有提高时是否使用提前停止来终止训练。默认情况下,它设置为 None 以禁用提前停止。如果设置为一个数字,它将留出validation_fraction
大小的训练数据作为验证,并在验证分数在之前的所有n_iter_no_change
迭代次数中都没有提高时终止训练。分裂是分层的。- tol:浮点数,默认=1e-4
提前停止的公差。当
n_iter_no_change
迭代(如果设置为数字)的损失至少没有改善 tol 时,训练停止。- ccp_alpha:非负浮点数,默认=0.0
用于最小Cost-Complexity 修剪的复杂度参数。将选择具有最大成本复杂度且小于
ccp_alpha
的子树。默认情况下,不进行剪枝。有关详细信息,请参阅最小 Cost-Complexity 修剪。
- n_estimators_:int
通过提前停止选择的估计器数量(如果指定了
n_iter_no_change
)。否则设置为n_estimators
。feature_importances_
ndarray 形状 (n_features,)基于杂质的特征重要性。
- oob_improvement_:ndarray 形状(n_estimators,)
out-of-bag 样本相对于前一次迭代的损失(=偏差)的改进。
oob_improvement_[0]
是第一阶段损失相对于init
估计器的改进。仅在subsample < 1.0
时可用- train_score_:ndarray 形状(n_estimators,)
i-th 分数
train_score_[i]
是模型在 in-bag 样本上迭代i
时的偏差(= 损失)。如果subsample == 1
这是训练数据的偏差。- loss_:LossFunction
具体的
LossFunction
对象。- init_:估计器
提供初始预测的估计器。通过
init
参数或loss.init_estimator
设置。- estimators_:ndarray of DecisionTreeRegressor of shape (n_estimators,
loss_.K
) 拟合sub-estimators 的集合。
loss_.K
为 1 表示二进制分类,否则为 n_classes。- classes_:ndarray 形状 (n_classes,)
类标签。
n_features_
int已弃用:属性
n_features_
在版本 1.0 中已弃用,并将在 1.2 中删除。- n_features_in_:int
拟合期间看到的特征数。
- feature_names_in_:ndarray 形状(
n_features_in_
,) 拟合期间看到的特征名称。仅当
X
具有全为字符串的函数名称时才定义。- n_classes_:int
类的数量。
- max_features_:int
max_features 的推断值。
参数:
属性:
注意:
每次拆分时,特征总是随机排列。因此,即使在相同的训练数据和
max_features=n_features
的情况下,如果在搜索最佳拆分期间枚举的几个拆分的标准改进相同,则找到的最佳拆分可能会有所不同。要在拟合期间获得确定性行为,必须修复random_state
。参考:
J. Friedman,贪心函数逼近:梯度提升机,统计年鉴,卷。 2001 年第 29 期,第 5 期。
弗里德曼,随机梯度提升,1999
T. Hastie、R. Tibshirani 和 J. Friedman。统计学习的要素。 2,施普林格,2009 年。
例子:
以下示例显示了如何将具有 100 个决策树桩的梯度提升分类器拟合为弱学习器。
>>> from sklearn.datasets import make_hastie_10_2 >>> from sklearn.ensemble import GradientBoostingClassifier
>>> X, y = make_hastie_10_2(random_state=0) >>> X_train, X_test = X[:2000], X[2000:] >>> y_train, y_test = y[:2000], y[2000:]
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, ... max_depth=1, random_state=0).fit(X_train, y_train) >>> clf.score(X_test, y_test) 0.913...
相关用法
- Python sklearn GradientBoostingRegressor用法及代码示例
- Python sklearn GraphicalLassoCV用法及代码示例
- Python sklearn GraphicalLasso用法及代码示例
- Python sklearn GridSearchCV用法及代码示例
- Python sklearn GroupShuffleSplit用法及代码示例
- Python sklearn GroupKFold用法及代码示例
- Python sklearn GaussianProcessClassifier用法及代码示例
- Python sklearn GammaRegressor用法及代码示例
- Python sklearn GenericUnivariateSelect用法及代码示例
- Python sklearn GaussianNB用法及代码示例
- Python sklearn GaussianRandomProjection用法及代码示例
- Python sklearn GaussianProcessRegressor用法及代码示例
- Python sklearn GaussianMixture用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
- Python sklearn VotingRegressor用法及代码示例
- Python sklearn gen_batches用法及代码示例
- Python sklearn ExpSineSquared用法及代码示例
- Python sklearn MDS用法及代码示例
- Python sklearn adjusted_rand_score用法及代码示例
- Python sklearn MLPClassifier用法及代码示例
- Python sklearn train_test_split用法及代码示例
- Python sklearn RandomTreesEmbedding用法及代码示例
- Python sklearn log_loss用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.ensemble.GradientBoostingClassifier。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。