机器学习:集成算法

机器学习:集成算法

  • 1 集成算法概念
    • 1.1 集成算法使用规模
    • 1.2 集成算法分类
    • 1.3 集成算法特点
  • 2 bagging算法
    • 2.1 随机森林算法
      • 2.1.1 决策树之间的独立性
      • 2.1.2 bootstrap
      • 2.1.3 随机森林算法流程
  • 3 boosting算法
    • 3.1 Adaboost算法流程:
    • 3.2 Adaboost总结
  • 4 bagging和boosting的区别
  • 5 总结

1 集成算法概念

集成方法是将几种机器学习技术组合成一个预测模型元算法。把多个弱监督模型集合在一起,组成一个更全面的强监督模型。算法理念:取长补短。

1.1 集成算法使用规模

  • 数据大,划分多个小数据集,学习多个模型进行组合。
  • 数据小,利用booststrap方法进行抽样,得到多个数据集,分别训练多个模型再组合。

1.2 集成算法分类

  • bagging 袋装法(减小方差) - 并行集成 并联
  • boosting 提升法(减小偏差) - 序列集成 串联
  • stacking 堆叠法(改进预测) - 前一个模型输出的y是有一个模型的X,递进运算

1.3 集成算法特点

  • 1.集成算法不是一种分类器,而是一种分类器结合方法。
  • 2.通常来说,集成算法由于单个分类器算法。
  • 3.集成学习法由训练数据构建一组基分类器,然后通过对每个基分类器额预测投票来进行分类。
  • 4.集成算法选择弱分类器进行组合。
  • 5.集成算方效率比较低。

2 bagging算法

bagging方法是booststrap aggregating的缩写,采用的是随机有放回的选择训练数据然后构造多个分类器,最后组合投票。 代表算法随机森林。
机器学习:集成算法_第1张图片

  • 必要条件:

    • 各分类器之间相互独立
    • 基分类器应当好于随机猜测分类器(概率)
  • 总结:

    • bagging中多个基分类器得到的结果交叉叠加在一起,通过投票将有效部分筛选出,降低基分类器的方差,改善了泛化误差
    • 性能依赖基分类器的稳定性;如果基分类器不稳定,bagging有助于降低训练数据的随机波动导致的误差;如果稳定,则集成分类器误差主要由基分类器额偏仪倚引起
    • bagging选的样本随机,不能特定

2.1 随机森林算法

随机森林是最常用的集成算法之一。随机森林基分类器为决策树。

2.1.1 决策树之间的独立性

通过以下方法,保证决策树之间独立性,避免随机森林过拟合

  • 数据随机化:输入数据是随机的一部分。
  • 属性随机化:每棵决策树的构建所需要的特征是从整体的“特征集”中随机选取的。

2.1.2 bootstrap

bootstrap也称自助法

  • 从原数据集中有放回的抽取n个训练样本,进行k轮,得到k个训练集。
  • 每次使用一个训练集得到一个模型,最后得到k个模型。
  • 对分类问题:将上步得到的k个模型进行投票得到分类结果;对回归问题:计算上述模型的均值作为最后的结果。(所有模型重要性都相同)
  • 在统计中,所有样本有放回的抽取,完全没有抽取到的概率约等于63%
    机器学习:集成算法_第2张图片
  • 因此 ,当原数据样本中存在很大噪声的时候,通过bootstrap,最多能有1/3数据(袋外数据out of bag data)被拒绝。

2.1.3 随机森林算法流程

  • 1 从N样本中选取n个数据作为训练数据输入,一般情况n远小于N。每被捕捉到的就是袋外数据,可以用做误差估计。可以直接用袋外数据来测试模型,obb_score
  • 2 在特征集M中选m个特征构建决策树
  • 3 选最小基尼指数
  • 4 重复2和3步,得到森林
  • 5 预测,多棵树同时决策,最后投票决策

3 boosting算法

boosting算法训练过程是依次训练基础模型,并在训练过程中对训练集不断进行调整,最终将所有模型组合起来。代表算法adaboost。

  • 基本思想:不同训练集通过调整每个样本对应的权重,不同的权重应对不同的样本分布,而这个权重为分类器不断增加对错分样本的重视程度。利用弱分类器更新每个样本的权重,分类错误的样本就增加权重,正确就降低权重,得到新样本继续下一个分类器。直到k个分类去,最后某种策略得到最后的强分类器。
  • 只要弱分类器的分类精度高于随机分类器(概率)
  • boosting对噪声非常敏感。
    机器学习:集成算法_第3张图片

3.1 Adaboost算法流程:

Adaboost(自适应adaptive boosting)在当前基础模型训练时,提高训练集中前一个基础模型误分类样本的权重,使得前面被误分类的样本获得更高的关注,从而提高当前模型的效果。

  • 1 计算样本权重,初始化每个样本一个相同权重向量D
  • 2 计算错误率:训练样本进行训练后,再以训练样本进行测试,得到错误率 ϵ = 分 错 的 样 本 数 量 样 本 总 数 ϵ=\frac{分错的样本数量}{样本总数} ϵ=
  • 3 计算弱分类模型的权重 α = 1 2 l n ( 1 − ϵ ϵ ) α=\frac{1}{2}ln(\frac{1-ϵ}{ϵ}) α=21ln(ϵ1ϵ)当错误率下降模型的权重整体上升
  • 4 调整样本权重值:预测正确权重下降,错误上升。
    • 预测正确: D i ( t + 1 ) = D i ( t ) e − α S u m ( D ) D^{(t+1)}_i=\frac{D^{(t)}_i e^{−α}}{Sum(D)} Di(t+1)=Sum(D)Di(t)eα 减函数.随着i增加,整体降低
    • 预测错误: D i ( t + 1 ) = D i ( t ) e α S u m ( D ) D^{(t+1)}_i=\frac{D^{(t)}_i e^{α}}{Sum(D)} Di(t+1)=Sum(D)Di(t)eα 增函数.随着i增加,整体增加
  • 5 之后在同一数据集中再一次训练弱分类器,然后循环上述结果,直到出现错误率为0,或者弱分类器的数目达到指定值
    机器学习:集成算法_第4张图片
  • 循环结束后得到一个强分类器 H ( x ) = s i g n ( ∑ i n ( α t h t ( x ) ) ) H(x) = sign(\sum_i^n(α_th_t(x))) H(x)=sign(in(αtht(x)))

3.2 Adaboost总结

  • 1 每次迭代改变的是样本的分布,而不是重复采样
  • 2 样本分布的改变取决于样本是否被正确分类
  • 3 最终的结果也是多个弱分类的加权结果的组合
  • 4 Adaboost提供的是一种框架,算法简单且不用特征筛选
  • 5 缺点是对离群点敏感

4 bagging和boosting的区别

  • 样本选择上:
    • bagging:训练集在原始集中是有放回选取,从原始集中选出的各轮训练集之间是独立的。
    • boosting: 每一轮的训练集不变,只改变样本权重(样本分布)
  • 样本权重上:
    • bagging:样本权重相同
    • boosting:根据错误率,调整样本权重。错误率越大,权重越高,越受关注。
  • 预测函数的权重:
    • bagging:所有函数的权重相同
    • boosting:每隔弱分类都有相应的权重,对于分类误差小的分类器权重大
  • 运算顺序:
    • bagging:并行运算
    • boosting:顺序运算

5 总结

  • bagging + 决策树 = 随机森林
  • adaboost + 决策树 = 提升树
  • Gradient Boosting + 决策树 = GBDT

你可能感兴趣的:(机器学习,CDA,python,机器学习,决策树,python)