Sklearn 集合

2025年3月17日 | 阅读 7 分钟

集成学习使用多种机器学习算法,旨在提高数据集上的正确预测率。使用数据集来训练一系列机器学习模型,每个模型在数据集上进行预测所得的独特预测构成了集成学习模型的基础。然后,集成模型会将不同模型预测的结果结合起来,得出最终结果。

每个模型都有其优缺点。通过整合不同的独立模型,集成模型可以有效地弥补特定模型的缺陷。

通常,集成技术可分为两大类:

Boosting

通过将弱学习模型转化为强学习模型,Boosting机器学习集成模型通过此方法降低数据集的偏差和方差。数据集按顺序输入给弱机器学习模型。第一步是创建一个初步模型,并将其拟合到创建的训练数据集中。

然后,拟合第二个模型,该模型旨在纠正前一个模型的缺陷。以下是完整过程的详细步骤:

  • 从原始数据集中构建一个子集。
  • 使用此子数据集创建一个初步模型。
  • 使用此初步模型对整个数据集进行预测。
  • 利用模型做出的预测和这些特征的真实值计算准确率得分。
  • 给错误预测赋予更高的权重。
  • 构建第二个模型,该模型优于前一个模型,并试图纠正前一个模型的缺陷。
  • 使用这个新的、更好的模型,通过输入完整数据集进行预测。
  • 创建多个不同的模型;每个模型都应旨在修复前一个模型所犯的错误。

我们可以通过对每个模型的平均值加权来确定最终模型。

示例:AdaBoost, Gradient Tree Boosting

Averaging (平均法)

在平均法中,最终输出是所有预测的平均值。这适用于回归问题。例如,在随机森林回归中,最终结果是个体决策树预测的平均值。

让我们以三个回归模型预测某商品价格为例:

回归器 1?200

回归器 2?300

回归器 3?400

最终预测将是 200、300 和 400 的平均值。

示例:Bagging 方法, 随机树森林

一些 Sklearn 集成方法

方法描述
ensemble.AdaBoostClassifier([ ... ])此函数实现 AdaBoost 分类器。
ensemble.AdaBoostRegressor([ base_estimator, ...])实现 AdaBoost 回归器的函数。
ensemble.BaggingClassifier([ base_estimator, ...])应用 Bagging 分类器。
ensemble.BaggingRegressor([ base_estimator, ...])Bagging 回归器函数。
ensemble.ExtraTreesClassifier([ ... ])此函数实现 Extra-Trees 分类器。
ensemble.ExtraTreesRegressor([ n_estimators, ...])此函数应用 Extra-Trees 回归器。
ensemble.GradientBoostingClassifier( *[, ...])Gradient Boosting 用于分类。
ensemble.GradientBoostingRegressor( *[, ...])Gradient Boosting 用于回归。
ensemble.IsolationForest( *[, n_estimators, ...])Isolation Forest 算法的函数。
ensemble.RandomForestClassifier([ ... ])实现随机森林分类器的函数。
ensemble.RandomForestRegressor([ ... ])实现随机森林回归器的函数。
ensemble.RandomTreesEmbedding([ ... ])随机树的集成。
ensemble.StackingClassifier( estimators[, ...])此函数使用具有最佳分类器的估计器堆栈。
ensemble.StackingRegressor(estimators[, ...])此函数使用具有最佳回归器的估计器堆栈。
ensemble.VotingClassifier(estimators, *[, ...])投票规则分类器,尤其用于未拟合的估计器。
ensemble.VotingRegressor(estimators, *[, ...])投票回归器做出的预测,尤其用于未拟合的估计器。
ensemble.HistGradientBoostingRegressor([...])使用直方图实现梯度提升回归树。
ensemble.HistGradientBoostingClassifier([...])使用直方图实现梯度提升分类树。

AdaBoost

平均法的 결과는 각기 다른 모델이 내놓은 예측값들의 평균값이다. 이는 회귀 문제에 사용된다. 예를 들어, 랜덤 포레스트 회귀의 최종 결과는 개별 결정 트리들의 예측값들을 평균낸 것이다.

3개의 회귀 모델이 상품의 가격을 예측하는 예시를 살펴보자.

회귀기 1 : 100

회귀기 2 : 300

회귀기 3 : 400

  • 최종 결과는 이들의 예측값들의 평균이 될 것이다.
  • 데이터셋의 각 관측치에 부여되는 가중치는 처음에는 모두 동일하다.
  • 전체 데이터의 부분집합을 사용하여 초기 모델을 구성한다.
  • 이 초기 모델을 사용하여 전체 데이터셋에 대한 예측을 생성한다.
  • 관측치의 예측값과 실제값을 평가하여 정확도 점수를 계산한다.
  • 이 모델이 부정확하게 예측한 데이터 값들은 다음 모델을 구축할 때 더 높은 가중치를 받는다.
  • 오차 값을 기반으로 가중치를 계산할 수 있다. 예를 들어, 오차의 크기가 클수록 관측치에 부여되는 가중치가 증가한다.
  • 정의된 오차 함수가 변하지 않거나 일정해지거나, 최적의 추정치 개수에 도달할 때까지 이 전체 과정을 반복한다.

AdaBoost 分类器示例

代码

输出

0.0989747095010253

AdaBoost Regressor 示例

代码

输出

The mean of the cross-validation scores:  0.7728539924062154
The average Score of KFold CV:  0.7966820925398042
The Mean Squared Error:  14.201356518866593
The Root Mean Squared Error:  3.768468723349922
Sklearn Ensemble

Bagging

Bagging 是一种集成构建技术,也称为 Bootstrap Aggregation。Bootstrap 是 Bagging 技术的基础。Bootstrap 是一种抽样技术,我们从“n”个观测值的总体中选择“n”个观测值。但选择是完全随机的,即在 Bootstrap 过程的每次迭代中,每个观测值都可以从原始总体中被选中,因此每个观测值被选中的可能性是均等的。在形成 Bootstrap 样本后,使用 Bootstrap 样本训练单独的模型。在实际实验中,Bootstrap 样本从训练集中抽取,子模型使用测试集进行测试。最终的输出预测是通过所有子模型的预测进行组合得到的。

Bagging Classifier 示例

代码

输出

0.9179254955570745

Bagging Regressor 示例

代码

输出

Mean score and standard deviation:  -114.10792855309286 5.633321726584775