当前位置: 首页 > news >正文

机器学习——集成学习

一、集成学习概念

集成学习:  (Ensemble Learning)是一种机器学习范式,它通过构建并结合多个模型来完成学习任务,获得更好的泛化性能。

核心思想:通过组合多个弱学习器来构建一个强学习器。

bagging思想:有放回的抽样;平权投票,多数表决方式决定预测结果;并行训练。

boosting思想:全部样本(重点关注上一训练器不足的地方训练);加权投票的方式;串行训练。

二、集成学习方法

核心对比:

方法训练方式预测方式适用场景
Bagging并行训练独立模型投票/平均

高方差模型

(如决策树)

Boosting顺序训练,调整样本权重加权投票/累加

高偏差模型

(如弱树)

Stacking两层模型(基模型+元模型)

元模型组合基模型预测

复杂任务,需模型融合

详细对比:

1.Bagging(如随机森林):

        训练时:通过"有放回"的自助采样(bootstrap)从训练集中生成多个子集,每个子集"独立"训练一个基学习器(如决策树)。

        预测时:所有基学习器对未知样本进行预测,最终结果通过 投票(分类) 或 平均(回归) 得到。

        API:sklearn.ensemble.RandomForestClassifier

2.Boosting(如AdaBoosting、GBDT、XGBoost):

        训练时:基学习器是顺序训练的,每个新模型都试图修正前一个模型的错误(如调整样本权重或拟合残差)。

        预测时:所有基学习器的预测结果进行加权组合(如AdaBoost)或累加(GBDT系列)。

        API:sklearn.ensemble.AdaBoostClassifier   /   sklearn.ensemble.GradientBoostingClassifier

3.Stacking:

        训练时:先训练多个不同类型的基学习器,再用它们的输出训练一个元学习器(meta-model)。

        预测时:基学习器先预测,然后元学习器基于它们的输出做最终预测。

三、底层详解

Bagging

概述:多个模型独立训练,投票决定结果(稳)

代表算法--随机森林算法 API:sklearn.ensemble.RandomForestClassifier

                 步骤:1.有放回的随机抽样产生训练集;2.随机挑选n个特征(n小于特征总数);3.训练弱学习器;4.重复1-3,训练n个弱学习器(决策树);5.预测结果:分类问题:多数表决;回归问题:计算平均值。

Boosting

概述:模型逐步改进,加权组合结果(准)

代表算法:

①Adaboost算法    API:sklearn.ensemble.AdaBoostClassifier

算法思想:通过逐步提高前一步分类错误的样本的权重来训练一个强分类器。

步骤:1.初始化数据权重,训练第一个学习器,根据预测结果找一个错误率最小的分裂点,然后重新计算样本权重,模型权重;

           2.根据新的样本权重,训练第二个学习器,根据结果找一个错误率最小的分裂点,然后再次更新样本权重,模型权重;

           3.重复以上过程,依次训练n个弱学习器.最终组合起来进行预测,结果大于0为正类,小于0为负类。

②GBDT    API:sklearn.ensemble.GradientBoostingClassifier

模型:f_{\left ( x \right )}=\sum_{t=1}^{T}f_{t}\left ( x \right )

残差:真实观测值-预测值

每一个新学习器,都是拟合真实值与之前所有基学习器共同预测的结果之间的残差来提升的。

对于回归问题,损失函数是平方损失,GBDT拟合的负梯度就是残差。

对于分类问题,损失函数变为 logloss,此时拟合的目标值就是该损失函数的负梯度值。

步骤:1.初始化弱学习器,将目标值的均值作为初始的预测值;

           2.迭代构建学习器,每一个新学习器拟合的是真实值与上一步模型(n-1个模型)预测结果之间的残差;

           3.达到指定的学习器个数停止;

           4.预测时,将所有弱学习器的输出结果组合起来作为强学习器的输出。

③XGBoost        API:import xgboost as xgb

模型:f_{\left ( x \right )}=\sum_{t=1}^{T}f_{t}\left ( x \right )

http://www.xdnf.cn/news/770923.html

相关文章:

  • STM32入门教程——GPIO输入
  • 使用Mathematica观察多形式根的分布随参数的变化
  • mysql数据库实现分库分表,读写分离中间件sharding-sphere
  • 数据库MySQL集群MGR
  • NiceGUI 是一个基于 Python 的现代 Web 应用框架
  • PyTorch——卷积层(3)
  • MapReduce(期末速成版)
  • 检索器组件深入学习与使用技巧 VectorStoreRetriever 检索器
  • android binder(二)应用层编程实例
  • 基于 Android 和 JBox2D 的简单小游戏
  • 【短距离通信】【WiFi】精讲WLAN 驱动结构
  • Android Studio 之基础代码解析
  • wow Warlock shushia [Dreadsteed]
  • 【Java EE初阶 --- 多线程(初阶)】多线程的实现案例
  • 《Effective Python》第六章 推导式和生成器——使用 yield from 组合多个生成器
  • 嵌入式学习笔记 - FreeRTOS关于vApplicationGetIdleTaskMemory
  • AI书签管理工具开发全记录(九):用户端页面集成与展示
  • opencv 可视化函数
  • 苹果电脑深度清理,让老旧Mac重焕新生
  • MySQL 全量 增量备份与恢复
  • 揭秘 NextJS Script 组件
  • HealthBench医疗AI评估基准:技术路径与核心价值深度分析(上)
  • Redis-6.2.9 cluster集群部署和扩容缩容
  • Flask中secret_key设置解析
  • Spring Boot Starter 自动装配原理全解析:从概念到实践
  • 通用优势估计函数(GAE,Generalized Advantage Estimation)详解
  • unity开发棋牌游戏
  • 力扣第452场周赛
  • Matlab绘图
  • odoo17 windows server布署错误分析