《统计学习方法(李航)》集成学习(内容有拓展)学习总结

作者:jliang

https://blog.csdn.net/jliang3

 

1.自助法(Bootstrap

1)自助法是一种有放回的抽样方法。

核心思想是从原样本集有放回抽取N个子集,训练N个分类器,进行集成。

2)Bagging和Boosting都是Bootstraping思想的应用。

2. 袋装法(Bagging

1)特点:各个弱学习器之间没有依赖关系,可以并行拟合。

2)随机采样和训练集m有一样多的样本,每轮有放回抽样中约有36.8%的数据没有被采集到,这部分数据被称为袋外数据OOB。

(1)OOB可作为验证集来对泛华性能进行包外估计。

(2)基学习器为决策树时,可用来辅助剪枝基学习器为神经网络时,可辅助早期停止以减少过拟合的风险。

3)Bagging对弱学习器没有限制,但常用决策树和神经网络

4)对分类问题,通常使用简单投票法产生结果。对回归问题,通常使用简单平均法产生结果。

5)随机森林

(1)它是Bagging的进化版,增加了对特征的采样。每轮对特征抽样数nsub越小,则模型越健壮,此时训练集的拟合程度会变差。(方差减少,偏倚增大)

(2)RF使用CART作为弱分类器

(3)RF优点

  • 并行化
  • 训练后,可以给出各个特征的重要性
  • 模型方差小,泛华能力强
  • 简单易实现
  • 对部分特征缺失不敏感

(4)RF缺点:

  • 噪音较大时,容易过拟合
  • 取值划分比较多时容易对RF产生更大影响,从而影响拟合的模型效果。

(5)RF推广

  • TRTE:一种非监督学习的数据转化方法,将低维数据映射到高维空间
  • IForest:一种异常点检测方法

3. 提升(Boosting

1)在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。

(1)思想:对于一个复杂的任务来说,将多个专家的判断进行适当的综合所得出的判断。

(2)强可学习和弱可学习

  • 强可学习:如果存在一个多项式的学习算法能够学习它,并且准确率很高
  • 弱可学习:如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好
  • 强可学习的充分必要条件是弱可学习
  • 弱分类器通常容易学习很多

(3)提升发生是从弱学习算法出发,反复学习,得到一系列的弱分类器(基分类器),然后组合这些分类器,构成一个强分类器。

  • 大多数提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列的弱分类器。
  • 改变权重的方法:提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权重。
  • 弱模型的组合方法:AdaBoost采用加权多数表决的方法。加大分类误差率小的弱分类器的权值,使其起较大的作用;减小分类误差率大的弱分类器的权值,使其起较小的作用。

2)AdaBoost算法

(1)学习步骤

         a. 初始化训练数据权值分布,所有训练样本拥有统一的权重w=1/N

         b. 对于m=1,2,…,M,学习弱分类器

              a)学习弱分类器

              b)计算弱分类器在训练数据集上的分类误差率(加权误差率,与样本权重有关)

                         

              c) 计算的系数

                          的减少而增大,分类误差率越小的基分类器在最终分类器中作用越大

              d)更新训练数据的权值分布

                         

         d. 加权线性组合基分类器

                         

(2)AdaBoost的训练误差是以指数速率下降的。

(3)AdaBoost具有适应性,能适应弱分类器各自的训练误差率,这也是它名称(适应的提升)的由来。

(4)AdaBoost另一种解释:AdaBoost是加法模型、损失函数为指数函数、学习算法为前向分步算法时的二分类学习方法。

(5)AdaBoost优点

  • 精度高
  • 可使用各种分类器
  • 不用做特征筛选
  • 不易overfitting

(6)AdaBoost缺点

  • 对离群点敏感
  • 训练时间长

3)前向分步算法

(1)前向分步算法可以求解复杂的优化问题,因为学习的是加法模型,如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数minβm,γmi=1NLyi,m=1Mβmbxi;γm,那么久可以简化优化的复杂度。

(2)学习步骤

         a. 初始化

         b. 对m=1,2,…,M

              a)极小化损失函数,得到参数

              b)更新

         c. 得到加法模型

(3)前向分步算法将同时求解从m=1到M所有参数的优化问题简化为逐次求解各个的优化问题。

4)前向分步算法与AdaBoost

(1)AdaBoost算法是前向分步算法的特例。当分布算法学习的是加法模型,当基函数为基本分类器时,该加法模型等价于AdaBoost的最终分类器。

5)提升树

(1)提升树以分类树或回归树为基本分类器的提升方法,提升树被认为是统计学习中性能最好的学习方法之一。

  • 提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法为提升树
  • 对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。

(2)不同问题的提升树算法的区别在于损失函数不同

  • 回归问题:平方误差损失函数
  • 分类问题:指数损失函数
  • 一般决策问题:一般损失函数

(3)Adaboost基分类器为二分类树时,AdaBoost为提升树。

6)梯度提升

(1)提升树利用加法模型与前向分步算法实现,对于使用平方损失和指数损失函数的每一步优化很简单,但对一般损失函数而言,往往每一步并不容易。梯度提升(gradient boosting)算法利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值作为回归问题提升树算法的残差的近似值。

(2)Gradient Boosting分类

  • GBRT(Gradient Boost Regression Tree)/GBT/GTB:渐进梯度回归树
  • GBDT(Gradient Boost Decision Tree):渐进梯度决策树
  • MART(Multiple Additive Regression Tree):多决策回归树
  • TreeNet:决策树网络

(3)GDBT常用损失函数

  1. 分类算法
    1. 指数损失函数:
    2. 对数损失函数
      1. 二分类:
      2. 多分类:
  2. 回归算法
  • 均方差:
  • 绝对损失:
  • Huber损失:对于原理中心的异常点采用绝对值损失,而中心附近的点采用均方差。

 

  • 分位数损失:θ为分位数

对于Huber损失函数和分位数损失函数,主要用于健壮回归,减少异常点对损失函数的影响。

7)GBDT构建特征,利用GBDT产生特征的组合

(1)在CTR预估中,工业界一般采用逻辑回归对组合的新特征进行处理

(2)构建特征步骤

 

         a. 使用GBDT产生多棵树。上图中产生两棵树,共5个叶子节点

         b. 输入样本x分别落到两棵树的叶子节点上,样本落到的叶子节点的值为1,否则为0

         c. 输出特征为两棵树的叶子节点总数

              如x落到第1颗数的第1个节点和第2颗数的第2个节点,则输出特征为[1, 0, 0, 0, 1]

8)Adaboost和GBDT的区别

(1)损失函数不一样

  1. Adaboost的目标是找到一个可以使当前损失函数最小的弱分类器(具体的数学解就是偏导数等于0的解)
  2. GBDT本轮的目标是找到弱分类器ht(x)让本来的损失函数最小,即使已有分类器+新分类器总损失最小。

(2)Adaboost利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮一轮迭代下去。GBDT也是迭代,使用前向分步算法,但弱学习器限定只能使用CART回归树模型。同时迭代器思路和Adaboost也有所不同。

4. Stacking

 

 

 

1)集成步骤

(1)选择基模型:Xgboost、lightgbm、RF、SVM、ANN、KNN、LR等能想到的模型都可以

(2)把训练数据分成N份(一般为5份,如果计算复杂度太高,可以把N值适当设置小一点),把其中N-1份作训练s_train_x, s_train_y,剩余的一份作为测试集s_test,测试集test不变。

(3)以s_train训练模型,训练出的模型预测s_test得到s_pred,再预测test得到y_pred。

(4)训练集再选择另外一份作为小的测试集s_test_x,其他N-1份作为训练集训练模型。

(5)重复2、3、4步骤N次,得到N个s_pred和y_pred。N个s_pred作为新的train_x,原始train_y作为train_Y。此时到达一个新的特征,多选几个模型重新训练即可到达多个特征,这些新的特征作为下一层模型的输入特征。

(6)第二层模型使用LR模型训练。

 

2)注意事项

(1)stacking比较耗时,可以把N改小(4或3都可以)

(2)stacking充分利用不同算法从不同的数据空间角度和数据结构角度对数据不同观测,取长补短,优化模型。所以我们除了不同参数的相同模型外,更重要的是要尽可能多一些不同种类的基模型,也就是模型要跨越空间。

3)stacking一些改进:还可以对特征进行一些变化,比如选部分特征做stacking,或者对stacking的结果进行再一次stacking。但时间复杂度高,效果并不一定明显。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值