集成学习之随机森林总结

参照刘建平大神原文撰写https://www.cnblogs.com/pinard/p/6131423.html

1.集成学习概念

集成学习,对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器,对于集成学习算法的学习,主要要弄清楚两点:

  1. 如何得到若干个弱学习器;
  2. 弱学习器之间的结合策略是怎样的。

2.如何得到弱学习器

得到弱学习器的方法主要有两种,如下:

  • 第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。
  • 第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。
    目前来说,同质的个体学习器应用最多,根据个体学习器之间的联系关系强弱,又分为以下两种:
    • 各个个体学习器之间是串行的关系,代表算法是boosting算法系列;
    • 学习器之间是并行关系,代表算法有bagging系列。

2.1 弱学习器获取之boosting

图来自刘建平大神博客
从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
最大的特点是串行生成,相当于有反馈的进行学习。

2.2 弱学习器获取之bagging

bagging策略最大的特点是各个弱学习器的生成互不干扰,高效并行生成。如下图:
bagging
从上图可以看出,bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。
对于这里的随机采样有必要做进一步的介绍,这里一般采用的是自助采样法(Bootstrap sampling),即对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。

3. 组合策略

3.1 组合策略之平均法

对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。
(还没学会公式编辑,盗图)
在这里插入图片描述

3.2 组合策略之投票法

对于分类问题的预测,我们通常使用的是投票法。

  • 最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别ci为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。
  • 稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。
  • 更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。

3.3 组合策略之学习法

代表方法 Stacking,以下是我总结的Stacking流程图:
在这里插入图片描述
Python实现可参考链接:
https://www.kaggle.com/arthurtok/introduction-to-ensembling-stacking-in-python
或者通过Python工具包:mlxtend ,实现起来非常简单。

4. bagging之随机森林

随机森林其实最主要的是把握两点:

  1. 训练CART树的样本随机抽取;
  2. 对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于 n n n,假设为 n s u b nsub nsub,然后在这些随机选择的 n s u b nsub nsub个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。
    算法流程如下:
    在这里插入图片描述

5.随机森林优缺点

RF的主要优点有:

1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。

2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。

3) 在训练后,可以给出各个特征对于输出的重要性

4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。

5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。

6) 对部分特征缺失不敏感。

RF的主要缺点有:

1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。

2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

6.随机森林调参数经验

https://www.cnblogs.com/pinard/p/6160412.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值