随机森林(Random Forest)就是通过集成学习的思想将多棵决策树集成的一种算法。基本单元是决策树。随机森林算法的提出也是为了改善决策树容易存在过拟合的情况。
随机森林初识
习惯上,我们将众多分类器(SVM、Logistic回归、决策树等)所组成的“总的分类器”,叫做随机森林。随机森林有两个关键词,一个是“随机”,一个是“森林”。森林就是成百上千棵树,体现了集成的思想,随机将会在下面总结到。
Bagging
Bagging策略(bootstrap aggregation)主要步骤如下:
(1) 从大小为$n$的样本集中有放回地重采样选出$n$个样本
(2) 在所有属性上,对这$n$个样本建立分类器($ID3$、$C4.5$、$CART$、$SVM$、$Logistic$回归等)
(3) 重复以上两步$m$次,即获得了$m$个分类器
(4) 将数据放在这$m$个分类器上,最后根据这$m$个分类器的投票结果,决定数据属于哪一类。
因为有放回地重采样$m$次,所以每一次采样注定有一部分数据是不能被选中,这些未被选中的数据叫做“袋外数据”(Out of Bag)。每一次被选中的样本大约占样本的多少呢?可以这样考虑。$n$个样本中每个样本每次被选用的概率为$\frac1n$,则每个样本每次未被选中的概率为$1-\frac1n$,则每一次采样,被选中的样本大约占样本的比例,可以用如下公式进行计算:
每一次采样总有$\frac1e$的机会不会被选中,不会出现在Bootstrap所采集的样本集合中。
随机森林的生成
随机森林(Random Forest)在Bagging基础上进行了修改。具体步骤可以总结如下:
(1)从训练样本集中采用Bootstrap的方法有放回地重采样选出$n$个样本,即每棵树的训练数据集都是不同的,里面包含重复的训练样本;
(2) 从所有属性中有选择地选出$K$个属性,选择最佳属性作为节点建立$CART$决策树;
(3) 重复以上步骤$m$次,即建立了$m$棵$CART$决策树
(4) 这$m$个$CART$形成随机森林,通过投票表决分类结果,决定数据是属于哪一类。
随机森林(Random Forest)的随机性主要体现在两方面,一方面是样本随机,另一方面是属性随机。样本随机的原因是如果样本不随机,每棵树的训练数据都一样,那么最终训练出的分类结果也是完全一样的。
投票策略
简单投票
(1)少数服从多数
(2)一票否决
(3)阈值表决,类似于去掉最低分、最高分这种投票策略。
贝叶斯投票
随机森林特点
优点
(1)在当前的算法中,具有极好的准确率
(2)能够运行在大数据上
(3)能够处理具有高维特征的输入样本,不需要降维
(4)能够计算各个特征的重要度
(5)能够计算样本之间的相似度
错误率因素
(1)森林中任意两个树的相关性:相关性越大,错误率越大
(2)森林中每棵树的分类能力:每棵树分类能力越强,错误率越低
减小特征选择个数$k$,树的相关性和分类能力也会相应的降低;增大$k$,两者也会随之增大。