Bagging流派的机器学习, 其学习器之间没有没有依赖关系, 这意味着可以并行计算, Bagging的弱学习器之间没有boosting那样的联系, 它的特点在于随机采样, 这个采样是有放回的采样
对于某个样本, 它在含有个样本的数据中, 每次被采集到的概率是, 那么不被采样到的概率是, 如果样本经过次采样都没有被采到, 那么这个概率是, 当时, , 也就是说, bagging每轮随机采样中, 大约有36.8%的样本没有被采集到, 这部分数据通常被称作袋外数据(Out-Of-Bag, OOB), 这些数据没有参与训练模型, 可以被用来检测模型的泛化能力
Bagging 算法的流程
- 输入样本T, m个样本
- 对于迭代次数 :
- 对训练集进行随机采样, 得到包含 m个样本的数据集
- 训练一个分类器
- 回归/分类算法结束
随机森林
- 首先,RF使用了CART决策树作为弱学习器
- RF对决策树的建立做了改进,RF通过随机选择节点上的一部分样本特征,这个数字小于n,假设为,然后在这些随机选择的个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。
如果,则此时RF的CART决策树和普通的CART决策树没有区别。
越小,则模型越健壮,当然此时对于训练集的拟合程度会变差。也就是说
越小,模型的方差会减小,但是偏差会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的的值.
为什么会出现这样的情况呢? 变小, 相当于模型使用的数据变小了, 那么对应得方差变化区间受到限制, 但预测准确性则变低
RF的算法原理也终于讲完了,作为一个可以高度并行化的算法,RF在大数据时候大有可为。 这里也对常规的随机森林算法的优缺点做一个总结。
RF的主要优点有:
训练可以高度并行化,速度快
由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
随机, 这个做法,在统计里, 是一个非常重要的概念, 比较抽象, 有时候,能增强模型的泛化能力
在训练后,可以给出各个特征对于输出的重要性:
之所以能给出特征的重要性, 是因为有OOB的存在, 对于生成的每一个弱分类器, 计算它的OOB, 之后对这些树使用的feature加入噪声, 再次计算OOB误差, 看两次的OOB, 如果变化不大, 证明这些(个)feature是重要的由于采用了随机采样,训练出的模型的方差小,泛化能力强。
相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
对部分特征缺失不敏感。
RF的主要缺点有:在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。