首页 > 其他分享 >【机器学习】集成学习——提升模型准确度的秘密武器

【机器学习】集成学习——提升模型准确度的秘密武器

时间:2024-10-05 13:50:10浏览次数:12  
标签:集成 秘密武器 模型 学习 准确度 train test model

【机器学习】集成学习——提升模型准确度的秘密武器

1. 引言

集成学习(Ensemble Learning)是一种通过结合多个弱模型来提升整体预测准确性的技术。通过将多个模型的预测结果进行组合,集成学习在复杂任务中展现了极强的泛化能力。本文将探讨集成学习的主要方法,并通过代码示例演示如何应用这些方法来提升模型表现。

在这里插入图片描述

2. 什么是集成学习?

集成学习的核心思想是将多个模型(弱学习器)组合成一个更强大的模型。常见的集成学习方法包括:

  • Bagging(袋装法)
  • Boosting(提升法)
  • Stacking(堆叠法)

这些方法通过不同的策略组合模型,降低单个模型的误差,提高准确性和鲁棒性。

3. Bagging(袋装法)

3.1 Bagging 的原理

Bagging 通过对数据集进行多次有放回采样,训练多个模型,并将这些模型的预测结果进行平均或投票。它可以有效减少过拟合,特别适用于高方差模型,如决策树。

在这里插入图片描述

3.2 随机森林(Random Forest)

随机森林是 Bagging 的一种典型实现,它通过构建多个决策树,并结合它们的结果来进行预测。

python复制代码from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

# 加载数据
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42)

# 创建随机森林模型
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)

# 预测与评估
y_pred = rf_model.predict(X_test)
print(f"随机森林准确率: {accuracy_score(y_test, y_pred)}")

4. Boosting(提升法)

4.1 Boosting 的原理

Boosting 的核心思想是通过迭代地训练多个弱学习器,每次调整上一次模型中错误分类的样本权重,从而提升模型的整体性能。与 Bagging 不同,Boosting 强调模型之间的顺序性。

4.2 梯度提升决策树(Gradient Boosting)

梯度提升决策树(GBDT)是一种流行的 Boosting 方法,适用于回归和分类任务。它通过最小化损失函数来优化模型。

python复制代码from sklearn.ensemble import GradientBoostingClassifier

# 创建梯度提升模型
gb_model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=42)
gb_model.fit(X_train, y_train)

# 预测与评估
y_pred = gb_model.predict(X_test)
print(f"梯度提升准确率: {accuracy_score(y_test, y_pred)}")

在这里插入图片描述

4.3 XGBoost

XGBoost 是一种优化版的梯度提升算法,具有更快的计算速度和更高的预测精度。

python复制代码import xgboost as xgb
from sklearn.metrics import accuracy_score

# 转换数据格式为 DMatrix
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

# 设置模型参数
params = {'objective': 'multi:softmax', 'num_class': 3, 'max_depth': 3, 'learning_rate': 0.1}
num_round = 100

# 训练模型
xgb_model = xgb.train(params, dtrain, num_round)

# 预测与评估
y_pred = xgb_model.predict(dtest)
print(f"XGBoost 准确率: {accuracy_score(y_test, y_pred)}")

5. Stacking(堆叠法)

5.1 Stacking 的原理

Stacking 通过将多个不同的模型组合在一起,通常会使用一个**元学习器(Meta-Learner)**来整合各个基础模型的预测结果。与 Bagging 和 Boosting 不同,Stacking 不要求模型类型相同,因此可以通过组合不同类型的模型(如决策树、逻辑回归、支持向量机等)来增强表现。

5.2 Stacking 示例

下面是使用 Stacking 的示例,通过将决策树、逻辑回归和支持向量机的预测结果结合在一起进行最终预测。

python复制代码from sklearn.ensemble import StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier

# 创建基础模型
estimators = [
    ('dt', DecisionTreeClassifier()),
    ('svc', SVC(probability=True))
]

# 创建堆叠模型,使用逻辑回归作为元学习器
stacking_model = StackingClassifier(estimators=estimators, final_estimator=LogisticRegression())
stacking_model.fit(X_train, y_train)

# 预测与评估
y_pred = stacking_model.predict(X_test)
print(f"Stacking 准确率: {accuracy_score(y_test, y_pred)}")

在这里插入图片描述

6. 集成学习的优势

集成学习相比单一模型有以下几个优势:

  • 降低方差:通过结合多个模型,集成学习可以减少单一模型的方差,提升泛化能力。
  • 提高准确性:集成学习往往比单一模型具有更高的预测准确率。
  • 增强鲁棒性:集成模型对异常数据点的敏感性较低,更加稳健。

7. 集成学习的挑战

尽管集成学习有诸多优势,但它也有一些挑战:

  • 计算开销:集成学习涉及多个模型的训练,计算资源消耗较大。
  • 模型复杂性:集成学习的模型更加复杂,难以解释和调试。

在这里插入图片描述

8. 总结

集成学习是一种强大的技术,通过结合多个弱模型来提升整体预测准确性。本文介绍了三种常见的集成学习方法:Bagging、Boosting 和 Stacking,并通过代码示例展示了如何应用这些方法。在实际项目中,集成学习能有效提高模型的性能,特别是在数据复杂、模型表现有限的情况下。

9. 参考资料

使用机器学习技术分析CSDN热榜

在这里插入图片描述

  • 机器学习上热榜太难了,最难的部分在于要找机器学习的图片,然后变成博客封面。建议CSDN减少对机器学习上热榜难度,只要标题是机器学习,不需要内容也能上热榜。
    img

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner

标签:集成,秘密武器,模型,学习,准确度,train,test,model
From: https://blog.csdn.net/qq_61654952/article/details/142691722

相关文章

  • 1.2 监督学习
    前言:我往后看了看这本书,发现很多机器学习的术语定义出现,我推测这门课是机器学习的先修课程,有趣的是我们学校在上机器学习之前没有上过这门课,怪不得看的时候云里雾里,因此我觉得改变计划,把接下来的重心放到统计学习方法上来。1.2监督学习在统计学习中,学习方法主要包括监......
  • 「分数规划」学习笔记及做题记录
    「分数规划」学习笔记及做题记录做题时发现不会分数规划,赶紧来学一下。分数规划用于求解下面一类问题:有\(n\)个物品,第\(i\)个物品的价值为\(a_i\),费用为\(b_i\)。从中选择若干个物品,使得价值与费用的比值\(\dfrac{\suma}{\sumb}\)最大/最小。另一种更严谨的表示方......
  • 机器学习专业词汇:“Lookahead horizon” 可以翻译为“前瞻视距”或“预见范围”
    “Lookaheadhorizon”可以翻译为“前瞻视距”或“预见范围”。在不同领域中,它可能具有稍微不同的含义:在机器学习和人工智能中,尤其是强化学习领域,“lookaheadhorizon”是指一个智能体在决策时考虑未来多少步的可能结果。换句话说,就是在进行某个操作之前,智能体会评估多少步之......
  • 【AI学习】Mamba学习(二):线性注意力
    上一篇《Mamba学习(一):总体架构》提到,Transformer模型的主要缺点是:自注意力机制的计算量会随着上下文长度的增加呈平方级增长。所以,许多次二次时间架构(指一个函数或算法的增长速度小于二次函数,但大于线性函数),如线性注意力、门控卷积和循环模型,以及结构化状态空间模型(SSM)被......
  • 《深度学习》OpenCV 背景建模 原理及案例解析
    目录一、背景建模1、什么是背景建模2、背景建模的方法    1)帧差法(backgroundSubtractor)    2)基于K近邻的背景/前景分割算法BackgroundSubtractorKNN    3)基于高斯混合的背景/前景分割算法BackgroundSubtractorMOG23、步骤    1)初始......
  • 《深度学习》OpenCV 指纹验证、识别
    目录一、指纹验证1、什么是指纹验证2、步骤1)图像采集2)图像预处理3)特征提取4)特征匹配5)相似度比较6)结果输出二、案例实现1、完整代码2、实现结果调试模式:三、指纹识别案例1、展示指纹库图片2、待验证指纹图3、看完整代码运行结果:一、指纹验证1、什么是指纹......
  • Indexing, Selecting & Assigning(pandas学习二)
    Nativeaccessors(原生访问器)原生Python对象为索引数据提供了很好的方法。Pandas继承了所有这些方法,这有助于轻松上手。考虑这个DataFramereviews输出如下(未截全):在Python中,我们可以通过将对象作为属性访问来访问它的属性。例如,book对象可能有一个title属性,我们可......
  • JVM学习【一】
    前言以下内容是经过我记忆并添加自己理解所写,可能会出现概念上的错误或者用词不当,请各位大佬批评指正。什么是JVMJVM是Java VirtualMachine,译为java虚拟机,是一台虚构出来的计算机,是一种规范。所以这也意味着JVM不止一种,只要满足JVM规范,任何企业,组织和个人都可以开发自己专......
  • 学习笔记 - log
    目录1.定义2.性质3.计算公式本人实力不济,如有错误或建议及补充,请指出(评论或私信都行)1.定义如果\(x^n=a\),那么\(n\)叫作以\(x\)为底\(a\)的对数。记作\(n=\log_xa(x>0\text{且}x\neq1)\)。2.性质\(\log_aa^x=x\)(定义)\(\log_a1=0(a^0=1)\)\(\log_aa=1(a^1=a)\)负数......
  • Markdown学习
    一、学习Markdown格式掌握内容:使用#来表示不同级别的标题;使用数字加点标记有序列表;使用|和-创建表格;使用三个或以上的-或*标记水平线未掌握内容:使用-,*,或+标记无序列表;使用*或_进行斜体或粗体;使用语法添加图片;使用`(单个反引号)表示行内代码,使用三个反引号表示代......