集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器。虽然从理论上来说使用弱学习器集成足以获得好的性能,但在实践中出于种种考虑,例如希望使用较少的个体学习器,或是重用关于常见学习器的一些经验等,人们往往会使用比较强的学习器。当然,还得看实践的结果,有时也不一定集成相对强的学习器效果就会有多好。

bagging的策略

1)bootstrap aggregation

2)从样本中重采样选出n个样本

3)在所有属性上,对这n个样本建立分类器(ID3、C4.5、CART、SVM、Logistic回归等)

4)重复以上两步m次,即获得了m个分类器

5)将数据放在这m个分类器上,最后根据这m个分类器的投票结果,决定数据属于哪一类

可以发现,Bootstrap每次越有36.8%的样本不会出现在Bootstrap所采集的样本集合中,将未参与模型训练的数据称为袋外数据。它可以用于取代测试集用于误差估计。

这里的36.7%是如何得到的呢?

假设有N个样本,每个样本被选中的概率为1/N,未被选中的概率为(1-1/N),总的未被选中的概率为

(1-1/N)N,当N-->∞时(1-1/N)N≈1/e约为36.8%,

1)Breiman以经验性实践的形式证明袋外数据误差估计与同训练集一样大小的测试集精度相同

2)得到的模型参数是无偏估计

随机森林

随机森林在bagging基础上做了修改

  1)从样本集中用Bootstrap采样选出n个样本;

  2)从所有属性中随机选择k个属性,选择最佳分割属性作为结点建立CART;

  3)重复以上两步m次,即建立了m课CART决策树

  4)这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类

  5)但也可以使用SVM、Logistic回归等其它分类器,习惯上,这些分类器组成的“总分类器”,仍然叫做随机森林。

投票机制

首先转载https://blog.csdn.net/PythonstartL/article/details/83010928博文的几个问题与答案

1.投票法的流程?
 投票法的流程是寻找几个基分类器,然后基于分类器的超过半数的结果作为最终的预测分类。

2.投票法如何选择特征 ?
投票法不寻找特征,寻找特征是各个基分类器要干的事情。

3.投票法 如何构建特征 ?
同第二问

4.投票法如何用于分类或回归?
如果是分类,投票法把超过半数以上的投票结果作为要预测的分类,投票法处理回归问题,是将各个基分类器的回归结果简单求平均

5.投票法通过什么方式减少误差 ?
通过上文给的证明可以看出,在基分类器的个数足够多且相互独立,即使他们之比什么都不干好一点点,也能指数级减少误差。

6.投票法的效果相比于传统的LR,SVM效果为什么好一些 ?
事实上如果基分类器都是这些传统模型且相互独立,投票法确实从上文中要比传统的方法的要好一些。但是呢,周志华老师给了一个非常精彩的例子在机器学习172页,当基分类器差不多时,投票法反而效果下降了

投票法 如何加速训练?
投票法的参数有哪些,如何调参 ?
投票法实战当中遇到的一些问题 ?
投票法的优缺点 ?
该集成学习算法与其他集成方法的不同

这几个问题 一起回答,加速训练即加速基分类器的训练就好,调参是基分类器的参数,投票法的优缺点主要看基分类的独立性,如果是决策树、SVM这几种完全不同的思路的基分类器,可能效果会好些。如果都是树模型说不定会取得比较差的结果。
投票法分为绝对多数投票法,相对多数投票法,加权投票法,具体公式参照周志华的机器学习p182~183

样本不均衡常用处理方法

假定样本数目A类比B类多,且严重不平衡:

  A类欠采样:

    1)随机欠采样

    2)A类分成若干子类,分别与B类进入ML模型

    3)基于聚类的A类分割(用某种聚类办法聚类成若干个簇,再从簇中选择有代表性的样本)

  B类过采样

    避免欠采样造成的信息丢失

  B类数据合成

    1)随机插值得到新样本

    2)SMOTE(Synthetic Minority Over-sampling Technique)

  代价敏感学习Cost Sensitive Learning

    降低A类权值,提高B类权值

使用随机森林建立计算样本间的相似度

1)原理:若两样本同时出现在相同叶结点的次数越多,则二者越相似

2)记样本个数为N,初始化NN的零矩阵S,S[i,j]表示样本i和样本j的相似度

3)对于m个决策树形成的随机森林,遍历所有决策树的所有叶子节点:

  记该叶节点包含的样本为sample[1,2,...,k],则S[i][j]累加1

    样本i、j∈sample[1,2,...,k]

    样本i、j出现在相同叶结点的次数增加一次

4)遍历结束,则S为样本间相似度矩阵

使用随机森林计算特征重要度

随机森林是常用的衡量特征重要性的方法。

  计算正例经过的结点,使用经过结点的数目、经过结点的基尼指数和等指标。或者,随机替换一列数据,重新建立决策树,计算新模型的正确率变化,从而考虑这一列特征的重要性。

总结

决策树、随机森林的代码清晰、逻辑简单,在胜任分类问题的同时,往往也可以作为对数据分布探索的首要尝试算法

随机森林的继承思想也可用在其它分类器的设计中

如何通过随机森林做样本的异常检测?

答:统计样本间位于相同决策树的叶结点的个数,形成样本相似度矩阵。

      

机器学习之Bagging与随机森林笔记的更多相关文章

  1. 机器学习回顾篇(12):集成学习之Bagging与随机森林

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  2. 机器学习 —— 决策树及其集成算法(Bagging、随机森林、Boosting)

    本文为senlie原创,转载请保留此地址:http://www.cnblogs.com/senlie/ 决策树--------------------------------------------- ...

  3. 机器学习总结(二)bagging与随机森林

    一:Bagging与随机森林 与Boosting族算法不同的是,Bagging和随机森林的个体学习器之间不存在强的依赖关系,可同时生成并行化的方法. Bagging算法 bagging的算法过程如下: ...

  4. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  5. Bagging与随机森林(RF)算法原理总结

    Bagging与随机森林算法原理总结 在集成学习原理小结中,我们学习到了两个流派,一个是Boosting,它的特点是各个弱学习器之间存在依赖和关系,另一个是Bagging,它的特点是各个弱学习器之间没 ...

  6. 机器学习相关知识整理系列之二:Bagging及随机森林

    1. Bagging的策略 从样本集中重采样(有放回)选出\(n\)个样本,定义子样本集为\(D\): 基于子样本集\(D\),所有属性上建立分类器,(ID3,C4.5,CART,SVM等): 重复以 ...

  7. 机器学习——Bagging与随机森林算法及其变种

    Bagging算法:  凡解:给定M个数据集,有放回的随机抽取M个数据,假设如此抽取3组,3组数据一定是有重复的,所以先去重.去重后得到3组数据,每组数据量分别是s1,s2,s3,然后三组分别训练组合 ...

  8. bootstrap && bagging && 决策树 && 随机森林

    看了一篇介绍这几个概念的文章,整理一点点笔记在这里,原文链接: https://machinelearningmastery.com/bagging-and-random-forest-ensembl ...

  9. Bagging之随机森林

    随机森林(Random Forest)是一种Bagging(Bootstrap Aggregating)集成算法,在样本随机(样本扰动)的基础上,进一步运用特征随机(属性扰动)的机制,得到比一般的Ba ...

随机推荐

  1. 第K个幸运数(京东2017秋招真题)

    题目 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字.前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第K个幸 ...

  2. Docs-.NET-C#-指南-语言参考-关键字-值类型:enum

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:enum 1.返回顶部 1. enum(C# 参考) 2015/07/20 enum 关键字用于声明枚举,一种包含一组被称为枚 ...

  3. Flutter 图片、圆形头像、圆角图片....各种形状

    图片 1. 本地图片 Image.asset 加载项目资源包的图片 //先将图片拷贝到项目 images 目录中,然后在 pubspec.yaml文件配置文件相对路径到 assets Image.as ...

  4. 0.9.0.RELEASE版本的spring cloud alibaba sentinel限流、降级处理实例

    先看服务提供方的,我们在原来的sentinel实例(参见0.9.0.RELEASE版本的spring cloud alibaba sentinel实例)上加上限流.降级处理,三板斧只需在最后那一斧co ...

  5. k8s记录-etcd集群部署(三)

    https://blog.csdn.net/fy_long/article/details/86542872 1)程序准备tar xvf etcd-v3.3.11-linux-amd64.tar.gz ...

  6. android多图选择器 图片/视频 单选or多选,以及视频录制。

    PictureSelector 最近项目中用到多图选择上传的需求,考虑到android机型众多问题就自己花时间写了一个,测试了大概60款机型,出现过一些问题也都一一修复了,基本上稳定了特分享出来,界面 ...

  7. 【443】Tweets Analysis Q&A

        [Question 01] When converting Tweets info to csv file, commas in the middle of data (i.e. locati ...

  8. JDK1.7 和JDK1.8同时存在设置默认的JDK

    最近学习SpringCloud需要安装JDK1.8 但是自己的项目在1.8的环境中运行不了 无论怎么修改使用cmd  中命令的java -version 都显示是jdk 1.8 将java home  ...

  9. Django中的ModelForm与Form

    django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm. 关于django中的表单系统有两种: 基于django.forms.Form 基于dj ...

  10. SharpGL学习笔记(一) 平台构建与Opengl的hello World (转)

    (一)平台构建与Opengl的hello World OpenGL就是3d绘图的API,微软针和它竞争推出D3D,也就是玩游戏时最常见的DirectorX组件中的3d功能. 所以不要指望windows ...