梯度提升机:数据科学家的利器

机器学习算法彻底改变了处理各个领域复杂问题的方式。从预测股票价格到诊断疾病,这些算法都扮演着至关重要的角色。本文将深入探讨使用Python强大的scikit-learn库进行回归分析。尽管scikit-learn提供了大量的预构建模型,但对于任何有抱负的数据科学家或机器学习爱好者来说,从头开始理解这些算法的工作原理是至关重要的。在这些算法中,回归技术因其能够基于输入特征预测连续结果而脱颖而出。

其中一种回归技术是自适应提升算法,通常称为AdaBoost。AdaBoost是一种提升技术,它通过为错误分类的数据点分配更高的权重来迭代纠正之前模型的错误。通过顺序训练这些加权数据点上的弱学习器,AdaBoost构建了一个强大的集成模型,能够进行准确的预测。本文不仅探讨了AdaBoost的理论基础,还提供了使用Pythonscikit-learn库的实践实现。此外,还讨论了超参数调整在优化AdaBoost性能中的重要性,展示了基础估计器和学习率等变化如何影响模型准确性。通过这种全面的探索,读者将对AdaBoost及其在现实世界场景中的实践应用有更深入的理解。

注意:如果对以视听格式学习概念更感兴趣,有整个文章的视频解释。如果不感兴趣,可以继续阅读。

AdaBoost算法

在AdaBoost的情况下,错误分类或由前一个模型错误预测的数据点将被赋予更高的权重。这意味着每个连续的模型将获得加权输入。让通过一个例子来理解这是如何完成的。假设这是全部数据。在这里,有蓝色的正例和红色的负例。现在第一步是构建一个模型来分类这些数据。

假设第一个模型给出了以下结果,它能够正确分类左侧的两个蓝色点和所有的红色点。但该模型也错误分类了这里的三个蓝色点。

现在,这些错误分类的数据点将被赋予更高的权重。因此,这三个蓝色正例将在下一次迭代中被赋予更高的权重。为了表示,权重更高的点在图像中比其他点更大。给这些点赋予更高的权重意味着模型将更多地关注这些值。现在将构建一个新模型。

在第二个模型中,将看到模型边界已经向右移动,以便正确分类权重更高的点。尽管如此,它仍然不是一个完美的模型。会注意到三个红色负例被模型2错误分类。

现在,这些错误分类的红色点将获得更高的权重。再次构建另一个模型并进行预测。第三个模型的任务是关注这三个红色负例。因此,决策边界将如下所示。

这个新模型再次错误预测了一些数据点。此时,可以说所有这些单独的模型都不足以正确分类点,通常被称为弱学习器。

集成

接下来该怎么做?需要聚合这些模型。一种方式可能是取个别弱学习器的加权平均值。因此,最终模型将是各个模型的加权平均值。

经过多次迭代后,将能够在所有之前的弱学习器的帮助下创建正确的决策边界。如所见,最终模型能够正确分类所有点。这个最终模型被称为强学习器。

让再次看看AdaBoost所采取的所有步骤。构建模型并进行预测。为错误分类的点分配更高的权重。构建下一个模型。重复步骤3和4。使用各个模型的加权平均值制作最终模型。

实现

现在将看到AdaBoost算法在泰坦尼克号数据集上的实现。首先,导入所需的库pandas和NumPy,并从CSV文件中读取数据到pandas数据框中。

import pandas as pd import numpy as np data = pd.read_csv('titanic.csv') print(data.head())

在这里,使用的是预处理过的数据。因此,可以看到这是一个分类问题,生存者被分类为1,未生存者被标记为0。

x = data.drop('Survived', axis=1) y = data['Survived'] from sklearn.model_selection import train_test_split train_x, test_x, train_y, test_y = train_test_split(x, y, stratify=y)

现在将导入scikit-learn.ensemble中的AdaBoostClassifier,并创建一个实例。设置了随机状态值为96,以重现结果。然后使用train_x和train_y来训练模型。

from sklearn.ensemble import AdaBoostClassifier model = AdaBoostClassifier(random_state=96) model.fit(train_x, train_y)

现在让检查训练数据的得分,大约是0.84。现在将对测试数据做同样的操作,结果是0.79。

超参数调整

让看看AdaBoost模型的超参数。超参数是在开始建模过程之前给模型的值。让看看它们。

base_estimator: 集成模型,默认是决策树。 n_estimators: 要构建的模型数量。 learning_rate: 通过这个值缩小每个分类器的贡献。 random_state: 随机数种子,以便每次都生成相同的随机数。

为了尝试超参数,这次将base_estimator设置为RandomForestClassifier。使用100个估计器和学习率为0.01。现在使用train_x和train_y来训练模型,就像之前一样。接下来是检查新模型的得分。

model = AdaBoostClassifier(base_estimator=RandomForestClassifier(), n_estimators=100, learning_rate=0.01, random_state=96) model.fit(train_x, train_y)
Q1. 什么是AdaBoost算法?
AdaBoost算法,全称自适应提升,是一种用于分类任务的集成方法。它通过顺序训练一系列弱学习器来工作,每个后续学习器更关注前一个学习器错误分类的数据点。通过调整这些数据点的权重,AdaBoost旨在最小化整体错误率。最终,所有弱学习器的预测通过加权和形成最终预测。与像装袋或随机森林这样的方法不同,AdaBoost优先考虑最具挑战性的实例,提高其性能指标,使其成为与神经网络和xgboost一样强大的工具。
Q2. AdaBoost分类器如何工作?
对于初学者来说,理解AdaBoost的实现,首先导入numpy和pandas等必要库。接下来,利用x_train和y_train数据,AdaBoost顺序训练一系列弱分类器,通常像逻辑回归这样的简单模型,以优化给定数据集的性能,例如鸢尾花。通过根据错误分类调整权重,AdaBoost减轻了过拟合,同时提高了准确性。通过这种迭代过程,AdaBoost将多个弱分类器的预测组合成一个强大的集成模型,展示了其在提高各种分类任务的机器学习模型中的有效性。
Q3.机器学习中的AutoML是什么?
AutoML,全称自动化机器学习,通过自动化包括导入numpy和pandas等必要库、初始化SVM和DecisionTreeClassifier等不同算法以及实现逻辑回归等技术在内的各个阶段,简化了模型开发过程。通过样本权重和优化,AutoML微调模型参数以提高数据集的性能。利用多数投票,AutoML结合了多个模型的预测以提高准确性。此外,AutoML促进了与GitHub仓库的无缝集成,并为初学者提供了教程,以便快速掌握其功能,使其成为自动化机器学习工作流程的全面解决方案,特别是在实现AdaBoost和在x_test数据上评估模型等任务中尤为明显。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485