集成学习思想

2023-11-06

一、集成学习(Ensemble Learning)

集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新的学习器。

集成学习的主要思想:
1、Bagging:代表算法是随机森林(Random Forest)
2、Boosting:代表算法是AdaBoost、GBDT
3、Stacking:由于深度学习的发展,现已基本不用

为什么要用集成学习?

  • 弱学习器之间存在一定差异,这会导致分类边界不同,将多个弱分类器合并后,可以得到更加合理的边界,减少整体错误率,实现更好的效果。
  • 对于数据集过大或者过小,可分别通过划分有放回抽样产生不同的子数据集,然后使用子数据集进行训练,产生不同的分类器,最终合并成为一个大的分类器。
  • 如果数据的划分边界过于复杂,使用线性模型很难描述,那么可以训练多个模型,再进行模型的融合。
  • 对于多个异构的特征集,很难进行融合,则可以考虑每个数据集训练一个分类模型,然后将多个模型融合。
    在这里插入图片描述

二、Bagging思想

Bagging 方法又称为自举汇聚法(Bootstrap Aggregating),其思想是:在m 个原始数据集上通过有放回抽样的方式,重新选出m 个数据进行训练,得到一个分类器;重复上述操作n 次,得到n 个分类器。

Bagging 方法用于分类模型 – 多数投票;
Bagging 方法用于回归模型 – 求均值

Bagging 方法的弱学习器可以是基本的算法模型,如:Linear、Ridge、Lasso、Logistic、Softmax、ID3、CART、C4.5、SVM、KNN等。

Bagging 方法是有放回的抽样,且每个子集的样本数量必须有原始数据集一致,所以子集中是存在重复数据的,但是在模型训练过程中会将重复数据删除,即最终用于训练模型的数据集样本数和原始样本数是不一致的。
在这里插入图片描述
在这里插入图片描述

三、随机森林(Random Forest)

在Bagging策略的基础上修改后的一种算法

  • 从原始样本集(n个样本)中用Bootstrap(有放回重采样)方法选出n 个样本;
    (注意:真正用于训练模型的是n 个样本去重后的样本集!)
  • 使用去重后的子数据集训练决策树:从所有特征属性中随机选择k 个属性,从这k 个属性中选择最佳分割属性作为节点来迭代的创建决策树;
    (最终用于划分的特征属性是局部最优的)
  • 重复以上两步m 次,创建m 个决策树;
  • 这m 个决策树形成随机森林,通过投票表决结果来决定数据属于哪一类。

决策树:从当前节点的所有特征属性中选择最优划分属性,用于划分的特征属性是全局最优的;
随机森林:对于决策树的每一个节点,都是从当前节点的所有特征属性中随机选择k 个属性,然后从这k 个属性中选择最佳划分特征属性,用于划分的特征属性是局部最优的。
在这里插入图片描述

四、RF API

sklearn库中随机森林分类器RandomForestClassifer API:

sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', 
max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, 
max_features='auto', max_leaf_nodes=None, min_impurity_split=1e-07, bootstrap=True, 
oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)

参数说明:

  • n_estimators:森林中决策树的数量,即子模型的数量,值过小会导致欠拟合,过大会导致过拟合,一般选择50~100,默认为10。
  • criterion:分类方法,可选值为’gini’和信息增益’entropy’,默认为’gini’。
  • max_depth:树的最大深度,默认为None,表示一直扩展到叶子节点足够纯或者样本数小于min_samples_slpit。
  • max_features:指定选择最优划分属性的时候,从多少个特征属性中选择,即k。默认为’auto’:max_features=sqrt(n_features),一般不改动。
  • min_samples_split:分割叶子节点所需的最少样本数量,默认为2。
  • min_smaples_leaf:叶子节点所需的最少样本数量,默认为1。
  • bootstrap:是否进行有放回重采样,默认为True。

五、总结

RF 的主要优点:

1、训练可以并行化,对于大规模样本的训练具有速度优势。

2、由于进行随机选择决策树划分特征列表,这样当样本维度较高(特征属性较多)时,仍然具有较高的训练性能。

3、可以给出各个特征的重要性列表。

4、由于存在随机抽样,训练出来的模型方差小,泛化能力强。

5、实现简单。

6、对于部分特征的缺失不敏感。

RF 的主要缺点:

1、在某些噪音比较大的特征上,模型容易陷入过拟合。

2、取值较多的划分特征对RF的决策会产生更大影响,从而有可能影响模型效果。

RF scikit-learn 相关参数

参数 RandomForestClassifer RandomForestRegressor
criterion 划分标准,默认为’gini’,可选gini和entropy 划分标准,可选mse 和mae,默认mse
loss 不支持 损失函数,可选’linear’、‘square’、‘exponential’,默认为linear,一般不改动
n_estimators 最大迭代次数,即随机森林中决策树的个数,值过小会导致欠拟合,过大会导致过拟合。一般取50~100,默认为10. 同左
max_features 给定选择最佳划分特征时,选择多少个特征属性进行考虑,默认为’auto’:max_features=sqrt(n_features) 同左
max_depth 决策树的最大深度,默认为None,表示一直扩展到叶子节点足够纯或者样本数小于min_samples_split 同左
min_samples_split 分割节点所需的最少样本数量,默认为2. 同左
min_samples_leaf 叶子节点中最少样本数量,默认为1. 同左
bootstrap 是否进行有放回重采样,默认为True。 同左
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

集成学习思想 的相关文章

随机推荐

  • JS简单实现tab滚动切换

    今天稍微查了一下类似的 要么写得很多 要不代码补全 这个东西哪有那么复杂 滚动切换的逻辑其实特别简单 只要看懂了这个做一些较复杂的功能也可以举一反三了 直接上代码
  • CSS:实现动态流光线条效果/动态流光线条颜色渐变效果

    文章目录 需求描述 思路 参考代码 HTML CSS 在线运行 补充 流光plus HTML CSS JAVASCRIPT 参考文档 需求描述 需要实现类似下图中的动态流光线条效果 思路 提到这种动态绘制矢量图形的需求 一般会想到使用can
  • 联想服务器安装2019系统,联想支持的Win10 2019年10月更新(1909版本)的机型

    操作步骤 安装或升级系统太麻烦 没有时间 联想专家一对一重装系统服务 通过远程的方式重装系统 让电脑重新恢复活力 速度更快 相关阅读 本文档给出了联想测试过的支持从Windows 10历史版本 1607 build 14393 1703 b
  • linux(十二)——sudo命令

    这里写目录标题 1 sudo介绍 2 语法 3 测试案例一 3 测试案例二 配置别名 1 sudo介绍 sudo是linux下常用的允许普通用户使用超级用户权限的工具 允许系统管理员让普通用户执行一些或者全部的root命令 如halt re
  • js优化条件判断语句

    js优化条件查询语句 优化前的条件判断 优化前 function printAnimalDetails animal let result null if animal if animal type if animal name if an
  • Qt D、Q 指针学习和二进制兼容

    文章目录 Qt 中 D Q 指针的实现 Qt 中 D Q 指针的实现 Qt 中 D Q 指针机制的实现是通过宏定义 实现代码在 qtbase gt src gt corelib gt qglobal h 和 qobject h qobjec
  • mybatis-plus 自动代码生成

    最新mybatis plus 代码自动生成工具 创建一个springboot 项目 引入如下依赖
  • ReentrantLock源码解析

    ReentrantLock简介 重入锁ReetrantLock 实现了Lock接口 作用与synchronized关键字相当 但比synchronized更加灵活 ReetrantLock本身也是一种支持重进入的锁 即该锁可以支持一个线程对
  • 微电网两阶段鲁棒优化经济调度方法(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码实现 1 概述 Matlab代码版本 这个博主有总结 微电
  • Uncaught (in promise)Error: ### Error updating database. Cause :java.sql.SQLException:

    Uncaught in promise Error Error updating database Cause java sql SQLException Field XXXX XX doesn t have a default value
  • Qt学习笔记(1)

    目录 一 pro文件解析 二 源文件解析 三 常用快捷键 四 重要的数据类型 1 字符串类 1 QByteArray 2 QString 2 container容器类 1 QList类 QLinkedList类以及QVector类 2 QM
  • lv4 嵌入式开发-6 格式化输入输出

    目录 1 标准I O 格式化输出 2 标准I O 格式化输入 3 小结 4 标准I O 思考和练习 1 标准I O 格式化输出 include
  • 提升Python函数调用灵活性:参数传递类型详解

    前言 在Python编程中 函数参数起着非常重要的作用 函数参数允许我们向函数传递数据 并在函数内部使用这些值 Python提供了多种参数传递类型 包括位置参数 关键字参数 默认参数 可变数量的位置参数 可变数量的关键字参数 这些不同的参数
  • 谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解

    SOA 维基百科解释 SOA 面向服务的软件架构 Service Oriented Architecture 是一种计算机软件的设计模式 主要应用于不通应用组件中通过某种协议来互操作 例如典型的通过网络协议 因此SOA是独立于任何厂商 产品
  • 可扩展的Blender插件开发汇总

    成熟的 Blender 3D 插件是令人惊奇的事情 作为 Python 和 Blender 的新手 我经常发现自己被社区中的人们创造的强大的东西弄得目瞪口呆 坦率地说 其中一些包看起来有点神奇 当自我怀疑或冒名顶替综合症的唠叨声音被打破时
  • Stream live media (HTTP) -- using FMS

    http help adobe com en US flashmediaserver devguide WSd391de4d9c7bd609 52e437a812a3725dfa0 8000 html Prerequisites for l
  • mysql查询缓存打开、设置、参数查询、性能变量意思

    一般 我们会把 query cache type 设置为 ON 默认情况下应该是ONmysql gt select query cache type query cache type ON user name from users wher
  • 我是怎么做到副业月入过万的「全程干货」

    如果你们每天有3 4个小时的空余时间 选择一个好的副业 月入再多一万是没有问题的 当然 选择副业 避坑很重要 我们先来看下选择副业的几个标准 1 低成本 不能有太多的金钱投入 2 低风险 不能有赌博心理 千万不能随便放弃主业 3 受众广 有
  • 不登录,不用任何技术,一分钟下载网易云音乐

    最近在写 Python 爬虫 想爬取网易云的歌曲并下载或者保存 Url 到 MongoDB 发现了一个可以快速下载网易云歌曲的方式 不需要登录 也不需要什么技术 简单几步就可以网易云上的音乐 因此分享给你 希望对你有帮助 如果你有其他的方法
  • 集成学习思想

    一 集成学习 Ensemble Learning 集成学习的思想是将若干个学习器 分类器 回归器 组合之后产生一个新的学习器 集成学习的主要思想 1 Bagging 代表算法是随机森林 Random Forest 2 Boosting 代表