《统计学习方法》第8章 提升方法之AdaBoost\BoostingTree\GBDT

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/you1314520me/article/details/83415584

前言

在深度学习火起来之前,提升方法(包括AdaBoost, GBDT)是kaggle等比赛中的利器,所以提升方法是必备的知识点。李航《统计学习方法》第8章——提升方法主要内容:AdaBoost, Boosting Tree, GBDT。写本文章主要目的是复习(毕竟之前看纸质版做的笔记), 对于证明比较跳跃和勘误的地方我都做了注解,以便初学者快速阅读理解不会卡住。
本文原文将书上所有证明给出,由于CSDN的公式编辑器公式支持不全,有些公式没法正常显示,欢迎点击此处查看原文, 个人技术博客:SnailDove

正文

提升(boosting) 方法是一种常用的统计学习方法, 应用广泛且 有效。 在分类问题中, 它通过改变训练样本的权重, 学习多个分类 器, 并将这些分类器进行线性组合, 提高分类的性能

本章主要内容

  1. 提升方法的思路和代表性的提升算法AdaBoost; 通过训练误差分析探讨AdaBoost为什么能够提高学习精度; 并且从 前向分步加法模型的角度解释AdaBoost;
  2. 然后叙述提升方法更具体的 实例——提升树(boosting tree)和GBDT 。

8.1 提升方法AdaBoost算法

8.1.1 提升方法的基本思路

提升方法的思想

对于一个复杂任务来说, 将多个专 家的判断进行适当的综合所得出的判断, 要比其中任何一个专家单独 的判断好。 实际上, 就是“三个臭皮匠顶个诸葛亮”的道理

历史背景

历史上, Kearns和Valiant首先提出了**“强可学习(strongly learnable) ”和“弱可学习(weakly learnable) ”的概念。 指出: 在概率近似正确(probably approximately correct, PAC) 学习的框架中, 一 个概念(一个类) , 如果存在一个多项式的学习算法能够学习它, 并 且正确率很高, 那么就称这个概念是强可学习的**; 一个概念, 如果存 在一个多项式的学习算法能够学习它, 学习的正确率仅比随机猜测略 好, 那么就称这个概念是弱可学习的。 非常有趣的是Schapire后来证 明强可学习与弱可学习是等价的, 也就是说, 在PAC学习的框架下, 一个概念是强可学习的充分必要条件是这个概念是弱可学习的。

这样一来, 问题便成为, 在学习中, 如果已经发现了“弱学习算 法”, 那么能否将它提升(boost) 为“强学习算法”。 大家知道, 发现 弱学习算法通常要比发现强学习算法容易得多。 那么如何具体实施提 升, 便成为开发提升方法时所要解决的问题。 关于提升方法的研究很 多, 有很多算法被提出。 最具代表性的是AdaBoost算法(AdaBoost algorithm) 。

对于分类问题而言, 给定一个训练样本集, 求比较粗糙的分类规 则(弱分类器) 要比求精确的分类规则(强分类器) 容易得多。提升方法就是从弱学习算法出发, 反复学习, 得到一系列弱分类器(又称 为基本分类器) , 然后组合这些弱分类器, 构成一个强分类器

大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分 布) , 针对不同的训练数据分布调用弱学习算法学习一系列弱分类器

提升方法的核心问题和思想

对提升方法来说, 有两个问题需要回答: 一是在每一轮如 何改变训练数据的权值或概率分布; 二是如何将弱分类器组合成一个强分类器

  1. 关于第1个问题, AdaBoost的做法是提高那些被前一轮弱分类器错误分类样本的权值, 而降低那些被正确分类样本的权值。 这样一来, 那些没有得到正确分类的数据, 由于其权值的加大而受到后一轮的弱分类器的更大关注。 于是, 分类问题被一系列的弱分类器“分而治之”。
  2. 至于第2个问题, 即弱分类器的组合, AdaBoost采取加权多数表决的方法。 具体地, 加大分类误差率小的弱分类器的权值, 使其在表决中起较大的作用, 减小分类误差率大的弱分类器的权值, 使其在表决中起较小的作用。 AdaBoost的巧妙之处就在于它将这些想法自然且有效地实现在一 种算法里。

8.1.2 AdaBoost算法

1540460336537
1540463170951
1540462856523

8.1.3 AdaBoost的例子

1540463047157

1540463034052

1540463221053

8.2 AdaBoost算法的训练误差分析

1540464025343

1540464188302

1540464221825

8.3 AdaBoost算法的解释

1540465338753

8.3.1 前向分步算法

1540465252529

1540464455405

8.3.2 前向分步算法与AdaBoost

1540464945423

1540465051886

1540465092227

8.4 提升树

1540465505323

8.4.1 提升树模型

1540465550791

8.4.2 提升树算法

1540465671217

1540465707158

1540465737703

1540465774680

1540465822039

8.4.3 梯度提升GBDT

1540465941113

1540466073088

本章总结

1540466119053

猜你喜欢

转载自blog.csdn.net/you1314520me/article/details/83415584