ML算法推导细节05—随机森林RF

探究算法细节,深入了解算法原理

1. 套袋法Bagging

(1)从原始样本集中有放回随机抽取n个训练样本,独立进行k轮抽取,得到k个训练集
(2)独立训练k个模型(基学习器可以是:决策树,ANN等)
(3)分类问题:投票产生分类结果; 回归问题:取k个模型预测结果的均值
(4)预测函数可以并行生成

1.1 袋外数据

  • 对于一个样本,在m个样本的训练集的随机采样中,每次被采集到的概率是 1 m \frac{1}{m} m1,不被采集到的概率是 1 − 1 m 1−\frac{1}{m} 1m1。如果m次采样,都没有被采集中的概率是 ( 1 − 1 m ) m (1−\frac{1}{m})^{m} (1m1)m
  • m → ∞ m→∞ m时, ( 1 − 1 m ) m → 1 e ≃ 0.368 (1−\frac{1}{m})^m→\frac{1}{e}≃0.368 (1m1)me10.368。也就是说,在bagging的每轮随机采样中,训练集中大约有36.8%的数据没有被采集中。
  • 对于这部分大约36.8%的没有被采样到的数据,我们常常称之为袋外数据(Out Of Bag, OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。

1.2 bagging减小方差增加偏差

  • 由于Bagging算法每次都进行随机采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。

2. 随机森林算法

bagging + 决策树 = 随机森林

  • 划分属性的选择:先随机选择一部分划分点( n s u b 个 n_{sub}个 nsub),再从中选择最优的划分点,能增强模型泛化能力。
  • n s u b n_{sub} nsub越小,模型越健壮,太小容易欠拟合,通过交叉验证获取。
  • 每棵子树均是二叉CART树
  • 能实现高度并行化

3. sklearn.ensemble.RandomForest

class sklearn.ensemble.RandomForestClassifier(n_estimators=’warn’, 
criterion=’gini’, max_depth=None, min_samples_split=2, min_samples_leaf=1, 
min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True,
oob_score=False, n_jobs=None, random_state=None, verbose=0,
warm_start=False, class_weight=None)

class sklearn.ensemble.RandomForestRegressor(n_estimators=’warn’,
criterion=’mse’, max_depth=None, min_samples_split=2, min_samples_leaf=1,
min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True,
oob_score=False, n_jobs=None, random_state=None, verbose=0,
warm_start=False)
  • n_estimators:基学习器的个数,默认100
  • oob_score :是否采用袋外样本来评估模型的好坏。推荐设置为True,能反应模型的泛化能力。

重要的参数:n_estimators, max_depth, max_features, min_samples_split, min_samples_leaf

袋外分数 属性:rf.oob_score_,使用袋外样本估计模型的准确度

参考博客
1. 机器学习总结(lecture 15)算法:随机森林Random Forest(RF)
2. Bagging与随机森林算法原理小结
3. scikit-learn随机森林调参小结
4. sklearn随机森林文档
5. sklearn随机森林源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值