机器学习之Bagging 与 随机森林算法

在集成学习里面,有两种流派,一个是 boosting 流派,它的特点是对于各个学习器之间有着相互依赖的关系 (比如说在某一次算法结束后,分类错误的样本会增大比例,以引起下一次的训练时候的关注度),另一种是bagging 流派,它的特点是各个学习器之间没有任何的依赖关系,可以并行拟合。

Bagging 原理

这里写图片描述

从图中,我们可以看出, bagging 学习算法 没有 adaboost 算法那样的联系,它的关键之处在于“随机取样“。

什么是随机取样呢 ?
就是我们固定从训练集中采集固定个数的样本,但是这种采集是一种有放回的采集,对于每一次采集,我们都将这一次采集到的样本放回,也就是说我们可能采集到重复的样本,对于这个算法我们一般会随机采集与样本训练样本数目相同的样本,这样得到的采样集和训练集合样本数目相同,但是内容不同,对于数据集m个样本的进行T次随机采样,得到训练T个训练器的训练集。 注意 (Bagging 是有放回随机采样)

有概率论知识可以得到,每一次采样每一个样本被采集到的概率为 1 / m,不被采集到的概率为 1 - 1 / m 则 m 次都没有被采集到的概率为 1/e = 36.8。我们称之为袋外数据用来当做测试集,来检验模型的泛化能力。

与 Adaboost 算法一样 一般Bagging算法的基础学习器是神经网络或者决策树。

对于这个算法如果是预测离散值则采用投票法,对于连续值则采用求平均的方法。

Bagging 算法流程

相对于Boosting系列的Adaboost和GBDT,bagging算法要简单的多。

  1. 输入数据集
  2. 输入迭代次数 T
  3. 随机取样 T 次 每次取 m 个样本
  4. 对于每一次样本训练一个基础学习器
  5. 得到最终学习器

随机森林算法 (RF)

随机森林算法是一种改进版的 bagging 算法,首先随机森林使用决策树(一般是 CART,也有C4.5)当做基学习器。在决策树的基础上随机森林对决策树的建立经行了改进。
它的改进之处在于 :
对于一般的决策树而言,我们会在它所有n个样本特征中选择一个最优化特征来作为这个节点的特征划分,但是随机森林是通过随机选择节点上的一些特征,这个数字小于n,假设为 n sub,然后在这些随机选择的 n 个样本特征中,选择一个最优特征作为决策树的划分,(这便是随机森林的随机之处)这样进一步增加了模型的泛化能力,减小了过拟合的风险

在实际的操作中,如果 nsub 过于小则会导致训练效果不好,偏差较大,如果nsub 太大的话则可能产生过拟合的风险,所以一般我们采用交叉验证的方法确定一个合适的nsub。

发布了173 篇原创文章 · 获赞 42 · 访问量 16万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章