Scikit-Learn -集成学习:boosting(3万字详解)
在公众号「python风控模型」里回复关键字:学习资料
QQ学习群:1026993837 领学习资料

目录¶
介绍
GradientBoostingRegressor
GradientBossting分类器
AdaBoost 回归器
AdaBoost分类器
参考
介绍¶
Boosting 是一种集成学习,我们按顺序训练估计器,而不是并行训练所有估计器。我们尝试创建一些快速简单(弱但比随机猜测更好)的模型,然后结合所有弱估计器的结果来做出最终预测。我们已经在bagging & random forests教程中讨论了另一种集成学习方法。如果您想了解它,请随时浏览它。
Scikit-learn 为分类和回归问题提供了两种不同的增强算法:
梯度树提升(梯度提升决策树) - 它迭代地构建学习器,弱学习器在预测错误的样本错误上进行训练。它最初从一个学习者开始,然后迭代地添加学习者。它试图通过迭代地添加新树来最小化损失。它使用决策树是弱估计器。Scikit-learn 提供了两个类,用于实现
Gradient Tree Boosting
分类和回归问题。梯度提升分类器GradientBoostingClassifier
梯度提升回归器GradientBoostingRegressor
Adaptive Boost - 它在修改后的数据上迭代地拟合弱估计器列表。然后它根据加权投票组合所有估计器的结果以生成最终结果。在每次迭代中,将高权重分配给在前一次迭代中预测错误的样本,并为那些在前一次迭代中预测正确的样本减少权重。这使模型能够专注于出错的样本。最初,所有样本都被分配相同的权重(1/ n_samples)。它让我们指定用于该过程的估计器。Scikit-learn 提供了两个类,用于实现
Adaptive Boosting
分类和回归问题。AdaBoost分类器
AdaBoost 回归器
这结束了我们对 Boosting 过程的简短介绍。我们现在将从编码部分开始。
我们将从导入必要的库开始。
加载数据集¶
为了我们的目的,我们将加载下面提到的两个。
数字数据集:我们将使用具有数字大小图像的数字数据
8x8
集0-9
。我们将在下面的分类任务中使用数字数据。波士顿住房数据集:我们将使用波士顿住房数据集,其中包含有关各种房屋属性的信息,例如平均房间数量、城镇人均犯罪率等。我们将使用它进行回归任务。
Sklearn 提供这两个数据集作为datasets
模块的一部分。我们可以通过调用load_digits()
和load_boston()
方法来加载它们。它返回类似字典的对象BUNCH
,可用于检索特征和目标。
GradientBoostingRegressor¶
可GradientBoostingRegressor
作为ensemble
sklearn 模块的一部分使用。我们将使用波士顿住房数据训练默认模型,然后通过尝试各种超参数设置来调整模型以提高其性能。我们还将它与其他回归估计器进行比较,以检查其相对于其他机器学习模型的性能。
GradientBoostingRegressor
的重要属性
以下是一些重要属性,GradientBoostingRegressor
一旦模型经过训练,这些属性就可以提供重要信息。
feature_importances_
- 它返回一个浮点数组,表示数据集中每个特征的重要性。estimators_
- 它返回训练有素的估计器。oob_improvement_
- 它返回大小数组 (n_estimators,)。数组中的每个值都表示袋外样本相对于前一次迭代的损失有所改善。loss_
- 它返回损失函数作为对象。
通过对各种超参数进行网格搜索来微调模型¶
以下是需要调整以获得最适合我们数据的常见超参数列表。我们将尝试对训练/测试数据的各种拆分进行各种超参数设置,以找出最佳拟合,这对于训练和测试数据集具有几乎相同的精度,或者在精度之间的差异非常小。
learning_rate - 它缩小了每棵树的贡献。learning_rate 和 n_estimatros 之间存在权衡。
n_estimators - 其结果将被组合以产生最终预测的基本估计器的数量。
default=100
max_depth - 单个树的最大深度。我们需要找到最佳价值。
default=3
min_samples_split - 拆分内部节点所需的样本数。它接受
int(0-n_samples)
,float(0.0-0.5]
值。Float 采用 ceil(min_samples_split * n_samples) 特征。default=2
min_samples_leaf - 叶节点所需的最小样本数。它接受
int(0-n_samples)
,float(0.0-0.5]
值。Float 采用 ceil(min_samples_leaf * n_samples) 特征。default=1
标准- 我们算法试图最小化的成本函数。目前它支持 mse(均方误差)和 mae(平均绝对误差)。
default=friedman_mse
max_features - 进行拆分时要考虑的特征数。它接受
int(0-n_features)
,float(0.0-0.5]
,string(sqrt, log2, auto) or None
作为值。default=None
None - 如果提供 None,则 n_features 用作值。
sqrt - sqrt(n_features) 特征用于分割。
auto - sqrt(n_features) 特征用于分割。
log2 - log2(n_features) 特征用于分割。
validation_fraction - 它是指用于早期停止验证的训练数据的比例。它接受
float(0.0,1.0)
default=0.1
我们将在下面尝试上述超参数的各种值,通过对数据进行 3 折交叉验证来找到我们数据集的最佳估计器。
输出前几个交叉验证结果¶

比较梯度提升与 Bagging、随机森林、额外树、决策树和额外树的性能
GradientBossting分类器
可GradientBosstingClassifier
作为ensemble
sklearn 模块的一部分使用。我们将使用数字数据训练默认模型,然后通过尝试各种超参数设置来调整模型以提高其性能。我们还将它与其他分类估计器进行比较,以检查其相对于其他机器学习模型的性能。
GradientBoostingClassifier
重要属性
GradientBoostingClassifier
具有与 相同的属性集GradientBoostingRegressor
。
通过对各种超参数进行网格搜索来微调模型¶
GradientBoostingClassifier
几乎所有参数都与GradientBoostingRegressor
输出前几个交叉验证结果¶

比较梯度提升与 Bagging、随机森林、额外树、决策树和额外树的性能¶
AdaBoost 回归器¶
可AdaBoostRegressor
作为ensemble
sklearn 模块的一部分使用。我们将使用波士顿住房数据训练默认模型,然后通过尝试各种超参数设置来调整模型以提高其性能。我们还将它与其他回归估计器进行比较,以检查其相对于其他机器学习模型的性能。
AdaBoostRegressor的重要属性
以下是一些重要属性,AdaBoostRegressor
一旦模型经过训练,这些属性就可以提供重要信息。
base_estimator_
- 它返回基估计器,从中创建由弱估计器组成的整个强估计器。feature_importances_
- 它返回一个浮点数组,表示数据集中每个特征的重要性。estimators_
- 它返回训练有素的估计器。
通过对各种超参数进行网格搜索来微调模型¶
以下是需要调整以最适合我们的数据的常见超参数列表。我们将对训练/测试数据的各种拆分尝试各种超参数设置,以找出最佳拟合,这对于训练和测试数据集具有几乎相同的准确度,或者准确度之间的差异非常小。
base_estimator - 它让我们指定将创建集成的基本估计器。它可以是任何其他机器学习估计器,例如 KNearestNeighbors、DecisionTree 等。默认是最大深度为 3 的决策树。
learning_rate - 它缩小了每棵树的贡献。learning_rate 和 n_estimatros 之间存在权衡。
n_estimators - 其结果将被组合以产生最终预测的基本估计器的数量。
default=100
我们将在下面尝试上述超参数的各种值,通过对数据进行 3 折交叉验证来找到我们数据集的最佳估计器。
输出前几个交叉验证结果¶

比较 Ada Boost 与 Gradient Boosting、Bagging、随机森林、额外树、决策树和额外树的性能¶
AdaBoost分类器¶
AdaBoostClassifier
可作为ensemble
sklearn 模块的一部分使用。我们将使用数字数据训练默认模型,然后通过尝试各种超参数设置来调整模型以提高其性能。我们还将它与其他分类估计器进行比较,以检查其相对于其他机器学习模型的性能。
AdaBoostClassifier
的重要属性
AdaBoostClassifier
所有属性都与 AdaBoostRegressor相同
。
通过对各种超参数进行网格搜索来微调模型¶
AdaBoostClassifier
几乎所有参数都与AdaBoostRegressor
输出前几个交叉验证结果¶

比较 Ada Boost 与 Gradient Boosting、Bagging、随机森林、额外树、决策树和额外树的性能¶
欢迎关注《python金融风控评分卡模型和数据分析(加强版)》,学习评分卡,集成树,神经网络算法等系统化风控建模内容。
入口1(推荐)
https://ke.qq.com/course/package/43071
入口2
https://study.163.com/series/1202915601.htm?share=2&shareId=400000000398149
