机器学习之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为样本间相似度矩阵
使用随机森林计算特征重要度
随机森林是常用的衡量特征重要性的方法。
计算正例经过的结点,使用经过结点的数目、经过结点的基尼指数和等指标。或者,随机替换一列数据,重新建立决策树,计算新模型的正确率变化,从而考虑这一列特征的重要性。
总结
决策树、随机森林的代码清晰、逻辑简单,在胜任分类问题的同时,往往也可以作为对数据分布探索的首要尝试算法
随机森林的继承思想也可用在其它分类器的设计中
如何通过随机森林做样本的异常检测?
答:统计样本间位于相同决策树的叶结点的个数,形成样本相似度矩阵。