转自小象学院 邹博
学习笔记
Bootstraping
是一种有放回的抽样方法
Bagging的策略
bootstrap aggregation
从样本集中重采样(有重复)选出n个样本
在所有属性上,最这n个样本建立分类器(ID3,C4.5,CART,SVM,LR等)
重复上面两步m次,即获得了m个分类器
将数据放在这m个分类器上,最后根据这m个分类器的投票结果,决定数据属于哪一类
随机森林:
在Bagging基础上做了修改。
从样本集中用bootstrap采样选出n个样本;
从所有属性中随机选择k个属性,选择最佳分割属性作为节点建立CART决策树
重复以上两步m次,即建立了m棵CART决策树
这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类
应用实例实时人类动作识别
随机森林/Bagging和决策树的关系
使用决策树作为基本分类器
也可以使用SVM,LR等其他分类器,这些分类器组成的“总分类器”,仍然叫随机森林
举例:回归问题--离散点为臭氧(横轴)和温度(纵轴)的关系
试拟合变化曲线
---使用Bagging
记原始数据为D,长度为N(有N个离散点)
算法过程:
做100次bootstrap,每次得到的数据Di,Di的长度为N
对于每个Di,使用局部回归(LOESS)拟合一条曲线(拟合10条灰色曲线)
将这些曲线取平均,即得到红色的最终拟合曲线
显然红色的曲线更加稳定,并且过拟合明显减弱
投票机制:
简单投票机制
一票否决(一致表决)
少数服从多数(有效多数--加权)
阈值表决
贝叶斯投票机制
投票机制举例:
一种可能的方案:
样本不均衡常用处理方法
假定样本数目A类比B类多,且严重不平衡:
A类欠采样
-- 随机采样
-- A类分成若干子类,分别与B类进入ML模型
-- 基于聚类的A类分割
B类过采样
-- 避免欠采样造成信息丢失
B类数据合成
-- 随机插值得到新样本
--- SMOTE
代价敏感学习
--- 降低A类的权值,提供B类的权值
总结:
决策树/随机森林代码清晰、逻辑简单,在解决分类问题的同时,往往也可以作为对数据分布探索的首要尝试算法
随机森林的集成思想也可以用在其他分类器的设计中
如果正负样本数量差别很大,如何处理?
思考:在得到新的决策树后,对样本权值进行合理的调整---分类正确的则降低权值,分类错误的则增大权值,是否可行?
可行,这样的话,会增加错误样本的重视率
权值调整:AdaBoost算法提高了那些被上一轮分类器错误分类的样本权值,降低了正确分类的权值,这样使得上一轮被分类错误的在下一轮受到了更大的重视。
也是adaBoost的核心思想之一
随机森林为何可以提高正确率且降低过拟合?
降低过拟合主要依赖3个随机过程
即产生决策树的样本是随机生成,构建决策树的特征值是随机选取,树产生过程中裂变的时候是选择N个最佳方向中的随机一个裂变的。
最后思考为什么决策树可以作为分类标准?