- 从样本集 中有放回随机采样选出 个样本
- 从所有 个特征中随机选择 个特征,独立选出的 个样本利用这 个特征建立决策树。重复以上两步 次,生成 棵决策树(生成的决策树通常不剪枝),形成随机森林。
- 对于新数据,经过每棵决策树投票分类。
- 样本有放回随机抽取固定数目
- 构建决策树时,特征随机抽取
这是因为两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有良好的抗噪能力。
- 森林中任意两棵树的相关性:相关性越大,错误率越大
- 森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低
特征选择个数参数 控制了随机性的引入程度:减少特征选择个数 ,树的相关性和分类能力也会相应地降低;增大 ,两者也会随之增大
- 若令 ,则基决策树的构建与传统决策树相同
- 若令 ,则是随机选择一个属性用于划分
- 一般情况下,推荐值
定义「袋外错误率」(out-of-bag error,oob error),在构建每棵树时,我们对训练集使用了不同的 bootstrap sample (随机且有放回地抽取)。所以对于每棵树而言,大约有 1/3 的训练实例没有参与第 棵树的生成,它们称为第 棵树的 oob 样本。
- 对于每个样本,计算它作为 oob 样本的树它的分类情况
- 然后以简单多数投票作为该样本的分类结果
- 最后用误分类个数占样本总数的比率作为随机森林的 oob 误分率
oob 误分率是随机森林泛化性能误差的一个无偏估计,它的结果近似于需要大量计算的交叉验证法
选取不同的 ,计算对应的 oob error,找出 oob error 最小时所对应的 值
优点
- 训练可以高度平行化,对于大数据时代的大样本训练速度有优势
- 由于可以随机选择决策树结点划分特征,这样在维度特征维度很考的时候,仍然能高效地训练模型
- 在训练后,可以给出各个特征对于输出的重要性
- 由于采用了随机采样,训练出的模型的方差小,泛化能力强
- 相对于Boosting 算法 系列的AdaBoost 和 GBDT 等,RF 实现比较简单
- 对部分特征的缺失不敏感
缺点
- 在某些噪音比较大的样本集上,RF 模型容易陷入过拟合
- 在取值划分比较多的特征容易对 RF 的决策产生更大的影响,从而影响拟合的模型的效果