机器学习之Bagging与随机森林笔记
集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器。虽然从理论上来说使用弱学习器集成足以获得好的性能,但在实践中出于种种考虑,例如希望使用较少的个体学习器,或是重用关于常见学习器的一些经验等,人们往往会使用比较强的学习器。当然,还得看实践的结果,有时也不一定集成相对强的学习器效果就会有多好。
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与随机森林笔记的更多相关文章
- 机器学习回顾篇(12):集成学习之Bagging与随机森林
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- 机器学习 —— 决策树及其集成算法(Bagging、随机森林、Boosting)
本文为senlie原创,转载请保留此地址:http://www.cnblogs.com/senlie/ 决策树--------------------------------------------- ...
- 机器学习总结(二)bagging与随机森林
一:Bagging与随机森林 与Boosting族算法不同的是,Bagging和随机森林的个体学习器之间不存在强的依赖关系,可同时生成并行化的方法. Bagging算法 bagging的算法过程如下: ...
- Bagging与随机森林算法原理小结
在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...
- Bagging与随机森林(RF)算法原理总结
Bagging与随机森林算法原理总结 在集成学习原理小结中,我们学习到了两个流派,一个是Boosting,它的特点是各个弱学习器之间存在依赖和关系,另一个是Bagging,它的特点是各个弱学习器之间没 ...
- 机器学习相关知识整理系列之二:Bagging及随机森林
1. Bagging的策略 从样本集中重采样(有放回)选出\(n\)个样本,定义子样本集为\(D\): 基于子样本集\(D\),所有属性上建立分类器,(ID3,C4.5,CART,SVM等): 重复以 ...
- 机器学习——Bagging与随机森林算法及其变种
Bagging算法: 凡解:给定M个数据集,有放回的随机抽取M个数据,假设如此抽取3组,3组数据一定是有重复的,所以先去重.去重后得到3组数据,每组数据量分别是s1,s2,s3,然后三组分别训练组合 ...
- bootstrap && bagging && 决策树 && 随机森林
看了一篇介绍这几个概念的文章,整理一点点笔记在这里,原文链接: https://machinelearningmastery.com/bagging-and-random-forest-ensembl ...
- Bagging之随机森林
随机森林(Random Forest)是一种Bagging(Bootstrap Aggregating)集成算法,在样本随机(样本扰动)的基础上,进一步运用特征随机(属性扰动)的机制,得到比一般的Ba ...
随机推荐
- PostgreSQL中定时job执行(pgAgent)
PostgreSQL中定时job执行 业务分析 近期项目需要定期清理数据库中的多余数据,即每月1号删除指定表中一年以上的数据. 初步分析这种定时job可以使用一下两种技术实现: Linux的cront ...
- Cesium 禁止相机进入地底下[转]
原文:https://blog.csdn.net/thor027/article/details/82455649 viewer.clock.onTick.addEventListener(funct ...
- OGC open geospatial consortium标准服务
数据共享作为GIS行业的基础,是每一位从事GIS相关领域人员必须要了解的知识,而OGC服务作为行业标准,已经被各大GIS厂商广泛应用.究竟什么是OGC呢? OGC全称——开放地理空间信息联盟(Open ...
- Windows10安装NTP服务器
步骤1:打开注册表 步骤2:打开注册表中[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFla ...
- java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】
一.概述 三款框架的功能对比 Mybatis-generator 通用Mapper Mybatis-Plus 代码生成器 支持自动生成Model,Mapper,Mapper XML文件 生成方式不够灵 ...
- dapperHelper
public class DapperHelper { /// 数据库连接名 private static string _connection = string.Empty; /// 获取连接名 p ...
- Linux记录-批量安装LNMP(转载)
#!/bin/bash # Describe: This is a one - button installation service script # 提示:使用此脚本时,尽量先选择第一项配置Yum ...
- LeetCode_204. Count Primes
204. Count Primes Easy Count the number of prime numbers less than a non-negative number, n. Example ...
- 【计算机视觉】OpenCV篇(9) - 轮廓(寻找/绘制轮廓)
什么是轮廓? 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形. 轮廓与边缘好像挺像的? 是的,确实挺像,那么区别是什么呢?简而言之,轮廓是连续的,而边缘并不全都连续(见下图示例).其实边缘主要是 ...
- Windows2008R2+iis7.5环境下的dz论坛X3版伪静态设置教程
Windows2008R2+iis7.5环境下的dz论坛X3版伪静态设置教程 因为2008R2不是那么的普及,加上X3版新出不久,所以伪静态的设置教程比较少,今天搞出来了,其实很简单,那么下面给大家简 ...