集成学习 - 随机森林

Bootstraping抽样

☞ 一种有放回的抽样方法

Bootstraping的名称来自于成语"pull up your own bootstraps",意为依靠你自己的资源(自助法).bootstrap指靴子后边向上拉的小环,带子."通过拉靴子让自己上升”,意思是“不可能发生的事情”。后来意思发生了转变,隐喻“不需要外界帮助,仅依靠自身力量让自己变得更好” 。

Bagging 策略

  1. bootstrap aggregation
  2. 从样本集中重采样(有重复的)选出n个样本
  3. 在所有属性上,对这n个样本建立分类器(ID3、C4.5、CART、SVM、Logistic回归等)
  4. 重复以上两步m次,即获得了m个分类器
  5. 将数据放在这m个分类器上,最后根据这m个分类器的投票结果,决定数据属于哪一类
  6. 除了分类任务,也可以用于回归任务.

随机森林

随机森林是流行的一种集成方法(ensemble learning),它能够将多个较弱的模型组合成一个强大的模型. 由 Leo Breiman 和 Adele Cutler 提出.
随机森林是在bagging基础上做了修改,过程类似:

  1. 从样本集中用Bootstrap采样选出n个样本.(行采样,有放回)
  2. 从所有属性中随机选择k个属性,选择最佳分割属性作为节点建立CART决策树;属性的选取是按照一定比例随机地无放回抽样.(列采样,无放回)
  3. 重复以上两步m次,即建立了m棵CART决策树.
  4. 这m个CART形成随机森林,如果是分类任务,通过投票表决结果,决定数据属于哪一类;如果是回归任务,取平均值.

特点:

  • 当分类数据集不平衡时,随机森林可以平衡误差.
  • 在大数据集上表现良好.
  • 能够评估各个特征的重要程度.
  • 不用剪枝

分类性能影响因素: 树之间的相关性越大,错误率越大;每棵树的分类能力越强,整个森林的错误率越低.

代码示例[1]

随机森林的基分类器不限于决策树,也可以是SVM,Logistic回归等. 所以不要认为随机森林是专用于集成决策树的算法.

from sklearn.ensemble import RandomForestClassifier
# n_estimators 是森林中的树的数目
clf = RandomForestClassifier(n_estimators=10)
# 开始训练
clf.fit(x_train, y_train)
# 得到预测结果
prediction = clf.predict(x_test)

  1. https://www.joinquant.com/post/1571 ↩︎

posted @ 2018-07-26 22:52  康行天下  阅读(598)  评论(0编辑  收藏  举报