集成学习 - 随机森林
Bootstraping抽样
☞ 一种有放回的抽样方法
Bootstraping的名称来自于成语"pull up your own bootstraps",意为依靠你自己的资源(自助法).bootstrap指靴子后边向上拉的小环,带子."通过拉靴子让自己上升”,意思是“不可能发生的事情”。后来意思发生了转变,隐喻“不需要外界帮助,仅依靠自身力量让自己变得更好” 。
Bagging 策略
- bootstrap aggregation
- 从样本集中重采样(有重复的)选出n个样本
- 在所有属性上,对这n个样本建立分类器(ID3、C4.5、CART、SVM、Logistic回归等)
- 重复以上两步m次,即获得了m个分类器
- 将数据放在这m个分类器上,最后根据这m个分类器的投票结果,决定数据属于哪一类
- 除了分类任务,也可以用于回归任务.
随机森林
随机森林是流行的一种集成方法(ensemble learning),它能够将多个较弱的模型组合成一个强大的模型. 由 Leo Breiman 和 Adele Cutler 提出.
随机森林是在bagging基础上做了修改,过程类似:
- 从样本集中用Bootstrap采样选出n个样本.(行采样,有放回)
- 从所有属性中随机选择k个属性,选择最佳分割属性作为节点建立CART决策树;属性的选取是按照一定比例随机地无放回抽样.(列采样,无放回)
- 重复以上两步m次,即建立了m棵CART决策树.
- 这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)
本文源自http://www.cnblogs.com/makefile/