1. 集成学习(Ensemble Learning)原理

2. 集成学习(Ensemble Learning)Bagging

3. 集成学习(Ensemble Learning)随机森林(Random Forest)

4. 集成学习(Ensemble Learning)Adaboost

5. 集成学习(Ensemble Learning)GBDT

6. 集成学习(Ensemble Learning)算法比较

7. 集成学习(Ensemble Learning)Stacking

1. 前言

前面从整体的角度介绍了集成学习算法,集成学习算法分为Bagging、Boosting、Stacking。Bagging的特点是各个弱学习器之间没有依赖关系,Boosting的特点是各个弱学习器之间有依赖关系,Stacking的特点是在多个学习器的基础上再加一个机器学习算法进行预测。

2. Bagging原理

Bagging的原理可以通过下图清楚的看到。

Bagging的原理是随机采样,就是在我们的训练集里面采集固定个数的样本,但是每采集一个样本后,都将样本放回。所以之前采集到的样本在放回后有可能继续被采集到。对于我们的Bagging算法,得到的采样集和训练集样本的个数相同,但是样本内容不同。如果我们对有\(m\)个样本训练集做\(T\)次的随机采样,,则由于随机性,\(T\)个采样集各不相同。

这里还有一个有意思的地方,由于是随机采样,我们的所有样本中,有一些样本会一直没有采样到,这个样本的数量大约是所有样本的36.8%。我们称这部分数据为袋外数据(Out Of Bag,简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。有了OOB我们就不需要重新分离test集合,后面用OOB代替test集合进行验证。这样训练集的采样空间就是整个数据集,这样训练集的数据分布就更加接近真实的数据分布

Bagging的集合策略也比较简单,对于分类问题,使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。

由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用,即降低过拟合程度。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些

3. Bagging算法流程

本节就对Bagging算法的流程做一个总结。相对于Boosting系列的Adaboost和GBDT,Bagging算法要简单的多。

输入为样本集\(D={(x_1,y_1),(x_2,y_2),...(x_m,y_m)}\),弱学习器算法, 弱分类器迭代次数T。

输出为最终的强分类器f(x)

  1. 对于\(t=1,2...,T\):

    1. 对训练集进行第t次随机采样,共采集\(m\)次,得到包含\(m\)个样本的采样集\(D_t\)
    2. 用采样集\(D_t\)训练第\(t\)个弱学习器\(G_t(x)\)
  2. 如果是分类算法预测,则\(T\)个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,\(T\)个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

4. 总结

本文详细的介绍了下Bagging的一些细节,Bagging的思想是比较简单的,但是里面蕴含这巨大的力量,用了Bagging的算法能够有效的减少过拟合的程度,因为弱学习器之间没有依赖关系,所以可以并行训练,大幅度提升训练速度。下文介绍Bagging的优秀算法随机森林(Random Forest)。

2. 集成学习(Ensemble Learning)Bagging的更多相关文章

  1. 笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting

    本杂记摘录自文章<开发 | 为什么说集成学习模型是金融风控新的杀手锏?> 基本内容与分类见上述思维导图. . . 一.机器学习元算法 随机森林:决策树+bagging=随机森林 梯度提升树 ...

  2. 【Supervised Learning】 集成学习Ensemble Learning & Boosting 算法(python实现)

    零. Introduction 1.learn over a subset of data choose the subset uniformally randomly (均匀随机地选择子集) app ...

  3. 集成学习的不二法门bagging、boosting和三大法宝<结合策略>平均法,投票法和学习法(stacking)

    单个学习器要么容易欠拟合要么容易过拟合,为了获得泛化性能优良的学习器,可以训练多个个体学习器,通过一定的结合策略,最终形成一个强学习器.这种集成多个个体学习器的方法称为集成学习(ensemble le ...

  4. 集成学习(Ensembling Learning)

    集成学习(Ensembling Learning) 标签(空格分隔): 机器学习 Adabost 对于一些弱分类器来说,如何通过组合方法构成一个强分类器.一般的思路是:改变训练数据的概率分布(权值分布 ...

  5. 集成学习—boosting和bagging

    集成~bagging~权值~组合~抽样~样例~基本~并行 一.简介 集成学习通过构建并结合多个学习器来完成学习任务,常可获得比单一学习器显著优越的泛化性能 根据个体学习器的生成方式,目前的集成学习方法 ...

  6. 集成学习:以Bagging、Adaboosting为例

    集成学习是一大类模型融合策略和方法的统称,以下以bagging和boosting为例进行说明: 1.boosting boosting方法训练分类器采用串行的方式,每个弱分类器之间是相互依赖的,尤其后 ...

  7. 集成学习ensemble

    集成学习里面在不知道g的情况下边学习边融合有两大派:Bagging和Boosting,每一派都有其代表性算法,这里给出一个大纲. 先来说下Bagging和Boosting之间的相同点:都是不知道g,和 ...

  8. 集成学习—boosting和bagging异同

    集成学习 集成学习通过构建并结合多个学习器来完成学习任务.只包含同种类型的个体学习器,这样的集成是“同质”的:包含不同类型的个体学习器,这样的集成是“异质”的.集成学习通过将多个学习器进行结合,常可获 ...

  9. 集成学习(ensemble method)--基于树模型

    bagging方法(自举汇聚法 bootstrap aggregating) boosting分类:最流行的是AdaBoost(adaptive boosting) 随机森林(random fores ...

  10. 集成算法——Ensemble learning

    目的:让机器学习效果更好,单个不行,群殴啊! Bagging:训练多个分类器取平均 Boosting:从弱学习器开始加强,通过加权来进行训练 (加入一棵树,比原来要强) Stacking:聚合多个分类 ...

随机推荐

  1. SQL表之间复制数据、选出随机几条数据、删除重复数据、取得自增长列等操作

    --表之间数据复制 SELECT* INTO yozhu FROM yo --复制一份表 SELECT* INTO yozhu1 FROM yo where 1<>1 --只复制表结构,无 ...

  2. Win 7 IE11不能下载文件,右键另存为也不行

    在IE11中不能下载文件,右键另存为也无效. 发现 在IE11中点击“INTERNET选项”后,IE临时文件夹的地址没有显示,大小为0,修改只能让设置在8-8MB,注销再登录后,一切设置无效. 问题就 ...

  3. ORA-65179: cannot keep datafiles for a pluggable database that is not unplugged

    SQL> drop pluggable database pdb2; drop pluggable database pdb2 * ERROR at line : ORA-: cannot ke ...

  4. exp、Exploit、Exploit Pack、exp-gui、Payload、MetaSploit都是啥?

    对于走在安全路上的小菜来说,这几个exp.Exploit.Exploit Pack.exp-gui.Payload.MetaSploit名词着实把人转的不轻,以下给大家解释下: Exp,就是Explo ...

  5. 安卓listview滚动时背景变黑的解决方法

    ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉, 原因是,滚动时,列表里面的view重绘时,用的依 ...

  6. 比较@Resource、@Autowired

    @Resource @Resource默认按byName自动注入.既不指定name属性,也不指定type属性,则自动按byName方式进行查找.如果没有找到符合的bean,则回退为一个原始类型进行进行 ...

  7. AD提高动态的方法(附SNR计算)

    作者:桂. 时间:2017-10-10  23:36:40 链接:http://www.cnblogs.com/xingshansi/p/7648475.html 前言 主要分析AD的基本特性,以及动 ...

  8. Python 的黏包问题

    Client 端内的代码: #Author:BigBao #Date:2018/7/4 import socket import struct client=socket.socket(socket. ...

  9. php分享二十二:设计模式

    策略模式与观察者模式的区别: 策略是我现在方法有几个东西 我传入不同的参数就能拿到不同的东西,就像是spring中的populate,我传入不同的handler对象进来 返回的可以是javaBean或 ...

  10. Logcat + money 笔记

    如下命令:将过滤后的日志按照指定格式输出到指定的文件中 adb logcat -v time -s Test_Tag:v > logcat_local.txt A:其中 -v time 用来指定 ...