素手烹茶|「小白学ML」随机森林 大全解

【前言】:文章来自微信公众号【机器学习炼丹术】
全文3155字 , 预计阅读时间10min
文章目录:

  • 1 随机森林
  • 2 bagging
  • 3 神秘的63.2%
  • 4 随机森林 vs bagging
  • 5 投票策略
  • 6 随机森林的特点
    • 6.1 优点
    • 6.2 bias 与 variance
    • 6.3 随机森林降低偏差证明
为什么现在还要学习随机森林?
随机森林中仍有两个未解之谜(对我来说) 。 随机森林采用的bagging思想中怎么得到的62.3% 以及 随机森林和bagging的方法是否有区别 。
随机森林(Random Forest)就是通过集成学习的思想将多棵决策树集成的一种算法 。 基本单元是决策树 。 随机森林算法的提出也是为了改善决策树容易存在过拟合的情况 。
1 随机森林习惯上 , 我们将众多分类器(SVM、Logistic回归、决策树等)所组成的“总的分类器” , 叫做随机森林 。 随机森林有两个关键词 , 一个是“随机” , 一个是“森林” 。 森林就是成百上千棵树 , 体现了集成的思想 , 随机将会在下面总结到 。
2 baggingBagging , 其实就是bootstrap aggregating的缩写, 两者是等价的 , 其核心就是有放回抽样 。
【bagging具体步骤】
  1. 从大小为n的样本集中有放回地重采样选出n个样本;(没错就是n个样本抽取n个)
  2. 在所有属性上 , 对这n个样本建立分类器(ID3信息增益、C4.5信息增益率、CART基尼系数、SVM、Logistic回归等)
  3. 重复以上两步m次 , 即获得了m个分类器;
  4. 将预测数据放在这m个分类器上 , 最后根据这m个分类器的投票结果 , 决定数据属于哪一类 。
3 神秘的63.2%一般被大家知晓的是:随机森林中每一次采样的比例是63.2% 。这个比例到底是怎么确定的呢?
在某手的面试中 , 我被问到了这个相关的问题 , 奈何学艺不精 , 哎 。 后来苦苦研究15分钟 , 终于得到答案 , 现在分享给大家 。
bagging的最初的说法其实是:n个样本从中有放回抽样n次 , 这种条件下 , 势必会有抽取到相同样本的可能性 , 那么抽取到不同样本的期望值是多少呢?其实大家心里可能会有答案了 , 没错就是0.632n 。
我们假设表示第k次抽样抽取到不同样本的概率 。 那么则表示第k-1次抽样抽取到不同样本的概率 。
  • 第k-1次抽样到不同样本的概率:
  • 第k-1次抽样时 , 有个样本还没有被抽取
  • 第k次抽样时 , 还有的样本没有抽取
  • 因此
  • ,第一次抽样的数据一定不会重复
因此k次放回抽样的不同样本的期望值为:
利用等比数列的性质 , 得到:
当n足够大 , 并且k=n的情况下 , 上面的公式等于
所以证明完毕 , 每一次bagging采样重复抽取n次其实只有63.2%的样本会被采样到 。
4 随机森林 vs bagging随机森林(Random Forest)在Bagging基础上进行了修改 。具体步骤可以总结如下:
  1. 从训练样本集中采用Bootstrap的方法有放回地重采样选出n个样本 , 即每棵树的训练数据集都是不同的, 里面包含重复的训练样本(这意味着随机森林并不是按照bagging的0.632比例采样 );
  2. 从所有属性中有选择地选出K个属性 , 选择最佳属性作为节点建立CART决策树;
  3. 重复以上步骤m次 , 即建立了m棵CART决策树
  4. 这m个CART形成随机森林 , 通过投票表决分类结果 , 决定数据是属于哪一类 。
随机森林(Random Forest)的随机性主要体现在两方面 , 一方面是样本随机 , 另一方面是属性随机 。 样本随机的原因是如果样本不随机 , 每棵树的训练数据都一样 , 那么最终训练出的分类结果也是完全一样的 。
5 投票策略
  1. 少数服从多数
  2. 一票否决
  3. 听说还有贝叶斯平均的方法 。 但是我没有过多了解 。 一般还是用少数服从多数的吧 。


    推荐阅读