集成学习

概述

集成学习就是通过数据集训练多个模型,然后经过一定的结合策略生成强学习模型
集成学习方法包括:Bagging、Boosting

Bagging

  • 算法结构
    (1、从原始训练集中采用随机可放回抽样(Booststrapping)N个训练样本,重复抽样K轮,得到K个数据集
    (2、每次使用一个训练集训练得到一个模型,K个训练集得到K个模型
    (3、分类问题:对K个模型采用投票的方式得到分类结果;回归问题:计算K个模型的均值作为最后的结果

注意:每次训练集可以取全部的特征,也可取部分特征进行训练,例如随机森林随机选取部分特征

随机森林和随机树
在随机森林中,每个树模型都是装袋采样训练,特征也是随机选择

Boosting

  • 算法结构
    boosting是一族可将弱学习器提升为强学习器的算法。
    (1)先在初始训练集训练出一个基学习器
    (2)根据基学习器的表现对训练样本权值进行调整,使得先前基学习器错误的训练样本获得更多的关注
    (3)基于更新后的样本权值来训练下一个基学习器
    (4)重复上述步骤,直到基学习器的数目达到指定值,最后将这些学习器进行加权结合(学习器性能越好,对应的权值越大)

  • 两个核心问题
    【1】每一轮如何更新训练数据的权值和概率分布?
    提高那些在前一轮被错误分类样本的权值,减小正确样本的权值,让学习器重点学习分错的样本
    【2】如何组合弱学习器
    使用加法模型将弱学习器进行线性组合,学习器准确率大,权值越大

  • AdaBoost
    自适应boosting,运用了迭代的思想。每一轮都加入一个新训练一个预测函数,直到达到一个设定的足够小的误差率,或者达到最大的树的数目
    集成学习1) 初始数据都被赋予一个初始权重(平均分配),用全部样本数据训练得到一个预测函数,计算该预测函数的误差,然后利用该误差计算该预测函数的权重;并更新训练样本权重,(如果样本被错误预测,权重增加)
    2)每一轮训练得到一个预测函数,根据此轮中得到的预测函数的误差计算新训练的预测函数在最终预测函数中的权重,然后更新样本数据权重,进行下一轮训练
    集成学习这个就是分类器在最终分类器中的权重;
    3)重复迭代,直到误差小于某个值或者达到最大的树数

GBDT

  • 算法流程

集成学习Gradient Boost与传统的Boost的区别是,Gradient Boost会定义一个loassFunction,每一次的计算是为了减少上一次的loss,而为了消除loss,我们可以在loss减少的梯度(Gradient)方向上建立一个新的模型。所以说,在Gradient Boost中,每个新的模型的建立是为了使得之前模型的loss往梯度方向减少,与传统Boost对正确、错误的样本进行加权有着很大的区别。

Bagging和Boosting的区别
  • 训练样本集
    Bagging:训练集有放回的抽样,K个训练集相互独立(可重复)
    Boosting:每一次迭代的训练集不变

  • 训练样本权重
    Bagging:每一个样本的权重相等,即1/N
    Boosting:不断更新,错误率越高,权值越大

  • 预测函数的权重
    Bagging:K个学习器的权重相等,即1/K
    Boosting:学习器性能好的,权重越大

  • 并行计算
    Bagging:K个学习器可并行计算
    Boosting:K个学习器只能顺序生成

  • 方差和偏差
    Bagging减少variance,Boosting是减少bias

集成学习-结合策略
{1}平均法
对于数值类的回归预测,通常使用平均法,即K个学习器的学习结果取平均
{2}投票法
分类问题,通常使用投票法,即少数服从多数原理
{3}学习法
将K个学习器的分类结果再次作为输入,将训练集的输出作为输出,重新训练一个学习器得到最终的结果

  1. Bagging + 决策树 = 随机森林
    2)AdaBoost + 决策树 = 提升树
  2. Gradient Boosting + 决策树 = GBDT
Stacking

Stacking是通过一个元分类器或者元回归器来整合多个分类模型或回归模型的集成学习技术。基础模型利用整个训练集做训练,元模型将基础模型的特征作为特征进行训练。基础模型通常包含不同的学习算法,因此stacking通常是异质集成

  • 算法
    集成学习

博客1