【Python机器学习专栏】集成学习中的Bagging与Boosting

简介: 【4月更文挑战第30天】本文介绍了集成学习中的两种主要策略:Bagging和Boosting。Bagging通过自助采样构建多个基学习器并以投票或平均法集成,降低模型方差,增强稳定性。在Python中可使用`BaggingClassifier`实现。而Boosting是串行学习,不断调整基学习器权重以优化拟合,适合弱学习器。Python中可利用`AdaBoostClassifier`等实现。示例代码展示了如何在实践中运用这两种方法。

在机器学习的领域中,集成学习是一种强大的技术,它通过构建并组合多个学习器(或称为“基学习器”)来完成学习任务。集成学习的主要目标是提高学习系统的泛化能力,即模型在新数据上的表现。其中,Bagging和Boosting是两种最流行的集成学习策略。本文将详细介绍这两种策略的原理、特点及其在Python中的应用。

一、Bagging

Bagging,即装袋法,是一种并行式的集成学习策略。它的基本思想是通过对原始数据集进行自助采样(Bootstrap Sampling),得到若干个不同的子集,并在每个子集上训练一个基学习器。由于采样是随机的,因此每个子集都会有所不同,这会导致每个基学习器学习到不同的知识。最后,通过投票法或平均法将这些基学习器的预测结果进行组合,得到最终的预测结果。

Bagging的主要优点包括:

能够降低模型的方差,提高模型的稳定性。由于每个基学习器都是在不同的数据集上训练的,因此它们之间的相关性较低,通过组合可以降低整体模型的方差。
对噪声和异常值具有较好的鲁棒性。由于每个基学习器都是在不同的数据集上训练的,因此即使某些数据集包含噪声或异常值,也不会对整个模型的性能产生太大影响。
在Python中,可以使用sklearn库中的BaggingClassifier或BaggingRegressor类来实现Bagging策略。以下是一个简单的示例:

python
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

加载数据集

iris = load_iris()
X, y = iris.data, iris.target

划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

定义基学习器(这里使用决策树)

base_estimator = DecisionTreeClassifier(random_state=42)

使用BaggingClassifier进行集成

bagging_clf = BaggingClassifier(base_estimator=base_estimator, n_estimators=10, random_state=42)

训练模型

bagging_clf.fit(X_train, y_train)

预测测试集并计算准确率

y_pred = bagging_clf.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))
二、Boosting

Boosting,即提升法,是一种串行式的集成学习策略。它的基本思想是通过迭代的方式,不断从错误中学习并调整每个基学习器的权重,以使得整个集成学习器能够更好地拟合训练数据。在Boosting中,每个基学习器都是基于前一个基学习器的预测结果进行训练的,因此它们之间存在依赖关系。

Boosting的主要优点包括:

能够提高模型的泛化能力。通过不断从错误中学习并调整基学习器的权重,Boosting能够使得整个集成学习器更好地拟合训练数据,从而提高模型的泛化能力。
对弱学习器具有较好的适应性。Boosting并不要求每个基学习器都具有很强的学习能力,只要它们能够在一定程度上正确分类样本,就可以通过Boosting的方式组合成一个强学习器。
在Python中,sklearn库提供了多种Boosting算法的实现,如AdaBoostClassifier、GradientBoostingClassifier等。以下是一个使用AdaBoostClassifier的示例:

python
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

加载数据集

iris = load_iris()
X, y = iris.data, iris.target

划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

定义基学习器(这里使用决策树)

base_estimator = DecisionTreeClassifier(max_depth=1, random_state=42)

使用AdaBoostClassifier进行集成

ada_clf = AdaBoostClassifier(base_estimator=base_estimator, n_estimators=50, random_state=42)

训练模型

ada_clf.fit(X_train, y_train)

相关文章
|
17天前
|
测试技术
软件质量保护与测试(第2版)学习总结第十三章 集成测试
本文是《软件质量保护与测试》(第2版)第十三章的学习总结,介绍了集成测试的概念、主要任务、测试层次与原则,以及集成测试的不同策略,包括非渐增式集成和渐增式集成(自顶向下和自底向上),并通过图示详细解释了集成测试的过程。
37 1
软件质量保护与测试(第2版)学习总结第十三章 集成测试
|
9天前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
25 1
|
9天前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
42 0
|
9天前
|
机器学习/深度学习 算法 前端开发
集成学习任务七和八、投票法与bagging学习
集成学习任务七和八、投票法与bagging学习
8 0
|
16天前
|
机器学习/深度学习 算法
【机器学习】迅速了解什么是集成学习
【机器学习】迅速了解什么是集成学习
|
1月前
|
机器学习/深度学习 人工智能 搜索推荐
如何让你的Uno Platform应用秒变AI大神?从零开始,轻松集成机器学习功能,让应用智能起来,用户惊呼太神奇!
【9月更文挑战第8天】随着技术的发展,人工智能与机器学习已融入日常生活,特别是在移动应用开发中。Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 开发跨平台应用(涵盖 Windows、macOS、iOS、Android 和 Web)。本文探讨如何在 Uno Platform 中集成机器学习功能,通过示例代码展示从模型选择、训练到应用集成的全过程,并介绍如何利用 Onnx Runtime 等库实现在 Uno 平台上的模型运行,最终提升应用智能化水平和用户体验。
44 1
|
1月前
|
机器学习/深度学习 存储 数据采集
Elasticsearch 与机器学习的集成
【9月更文第3天】Elasticsearch 不仅仅是一个强大的分布式搜索和分析引擎,它还是一个完整的数据平台,通过与 Kibana、Logstash 等工具结合使用,能够提供从数据采集、存储到分析的一站式解决方案。特别是,Elasticsearch 集成了机器学习(ML)功能,使得在实时数据流中进行异常检测和趋势预测成为可能。本文将详细介绍如何利用 Elasticsearch 的 ML 功能来检测异常行为或预测趋势。
40 4
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
8天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
22 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
16天前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能