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

机器学习——集成学习

一、个体与集成

  集成学习通过构建并结合多个学习器来完成学习任务。
在这里插入图片描述
  集成学习的一般结构:
  先产生一组“个体学习器”,再用某种策略将它们结合起来,个体学习器通常由一个现有的学习算法从训练数据产生。若集成中只包含同种类型的个体学习器,例如:“决策树集成”中全是决策树,“神经网络集成”中全是神经网络,则称这样的集成是同质的。
  同质集成中的个体学习器也称为“基学习器”,相应的学习算法称为“基学习算法”。
  同时包含不同类型的个体学习器的集成是“异质”的,异质集成中的个体学习器由不同的学习算法生成,这时就不再有基学习算法;相应的,个体学习器一般不称为基学习器,常称为“组件学习器”。

二、集成个体应该“好而不同”

举例
  在一个二分类任务中,假定三个分类器在三个测试样本上的表现如上图所示,其中√表示分类正确,×表示分类错误,集成学习的结果通过投票法产生,即“少数服从多数”。图(a)中,每个分类器都只有66.6%的精度,但集成学习却达到了100%的精度;图(b)中,三个分类器的性能没有差别,集成之后性能也没有提高;图©中,每个分类器的精度都只有33.3%,集成学习的结果变得更差。

要获得好的集成,个体学习器应“好而不同” ,即个体学习器要有一定的“准确性”,即学习器不能太差,并且要有“多样性”,即学习器 间具有差异

事实上,个体学习器的“准确性”和“多样性”本身就存在冲突,一般的,各个学习器准确性很高之后,学习器之间存在很大的相似性,要增加多样性就需要牺牲准确性。

  根据个体学习器的生成方式,目前的集成学习方法大致可分为两个大类。
个体学习器间存在强依赖关系,必须串行生成的序列化方法 { A d a B o o s t G r a d i e n t B o o s t L P B o o s t ⋯ } B o o s t i n g 族 个体学习器间存在强依赖关系,必须串行生成的序列化方法 \left. \begin{cases} AdaBoost \\ GradientBoost\\ LPBoost\\ \cdots \end{cases} \right\} Boosting族 个体学习器间存在强依赖关系,必须串行生成的序列化方法 AdaBoostGradientBoostLPBoost Boosting
个体学习器间不存在强依赖关系,可同时生成的并行化方法 { B a g g i n g 随机森林 R a n d o m F o r e s t R a n d o m s u b s p a c e ⋯ 个体学习器间不存在强依赖关系,可同时生成的并行化方法 \begin{cases} Bagging \\ 随机森林 Random&Forest\\ Random&subspace\\ \cdots \end{cases} 个体学习器间不存在强依赖关系,可同时生成的并行化方法 Bagging随机森林RandomRandomForestsubspace

三、Boosting

  Boosting是一族可将弱学习器提升为强学习器的算法。
  工作机制:
  先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续收到更多的关注,然后基于调整后的训练样本分布来训练下一个基学习器,如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行 加权结合
  Boosting算法要求基学习器能对特定的数据分布进行学习,可通过“重赋权法”实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重,对无法接受带权样本的基学习算法,则可通过“重采样法”来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样得到的样本集对基学习器进行训练。

Boosting主要关注降低偏差

四、Bagging

  Bagging是并行式集成学习算法,主要是基于“自助采样法”。
  给定包含m个样本的数据集,先随机取出一个放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m个随机操作,得到包含m个样本的采样集,初始训练集中约有63.2%的样本出现在采样集中。


http://www.kler.cn/news/288339.html

相关文章:

  • 9.2C++
  • 【LeetCode】温度转换 最小偶倍数 二叉树判断根节点
  • 演示:基于WPF的DrawingVisual和谷歌地图瓦片开发的地图(完全独立不依赖第三方库)
  • 2024最受欢迎的蓝牙耳机是?百元价不输千元机的开放式耳机推荐
  • 深入解析 MapStruct Plus 的 @AutoMapper 注解及其对象映射机制
  • 【零知识证明】MiMC哈希函数电路
  • DOM树和CSS树解读
  • 【Spring Boot 实战】统一数据返回格式的最佳实践:构建稳定的RESTful API(实战篇)
  • 【时时三省】c语言例题----华为机试题<密码强度等级>
  • 【数据库|第10期】SQL Server、Access和Sqlite 的表别名详解
  • 如何交叉编译 Linux v4l-utils 依赖库?
  • ubuntu设置为自己需要的屏幕分辨率
  • RabbitMQ练习(Topics)
  • P7958 [COCI2014-2015#6] NEO
  • 如何处理海量数据
  • 事半功倍:利用增强现实提高工作效率
  • [AcWing]-完全背包问题-动态规划
  • RabbitMQ的TLL
  • Mac OS X 如何升级系统自带的 Ruby
  • 教程:使用显卡MX250做YOLO目标检测(定位)滑块缺口,包括获取数据集,对数据集手动标注,训练的代码,推理的代码,超多细节,你的第一次YOLO绝佳体验!
  • 微信小程序认证和备案
  • 比特币详解
  • (大三上_游戏开发设计模式_上课_1)多态练习_计算机
  • CUDA编程08 - 并行编程思维
  • 【React 简化路由的生成的方式
  • kafka3.7.1 单节点 KRaft部署测试发送和接收消息
  • 深入解析FPGA在SOC设计中的核心作用
  • 深入探讨Java中的分布式事务管理:实现、挑战与最佳实践
  • 超声波的应用
  • 【python计算机视觉编程——4.照相机模型与增强现实】