机器篇——集成学习(三) 细说 提升(Boosting) 算法

返回主目录

返回集成学习目录

上一章:机器篇——集成学习(二) 细说 随机森林(Rondoom Forest) 算法

下一章:机器篇——集成学习(四) 细说 AdaBoost 算法

本小节,细说 提升(Boosting) 算法,下一小节细说 AdaBoost 算法

二. 具体算法

3. 提升(Boosting) 算法

    (1). Boosting 算法原型

     ①. 任一弱学习算法可以通过加强提升到一个任意正确率的学习算法,并通过构造一种多项式级的算法来实现这一加强过程。

     ②. Boosting 是一种将弱分类器通过某种方式结合起来得到一个分类性能大大提高的强化分类器的分类算法。该方法可以把一些粗略的经验规则转变为高度准确的预测法则。强分类器对数据进行分类,是通过弱分类器的多数投票机制进行的。该算法是一个简单的弱分类算法提升过程,这个过程通过不断的训练,以提高对数据的分类能力。

    (2). Boosting 的思路流程

     ①. 从样本整体集合 \large D 中,不放回地随机抽样 \large n_{1}  \large (n_{1} < n) 个样本,得到集合 \large D_{1},训练弱分类器 \large C_1 

     ②. 从样本整体集合 \large D 中,不放回地随机抽样 \large n_2  \large (n_2 < n) 个样本,得到集合 \large D_2,训练弱分类器 \large C_2

     ③. 抽取 \large D 样本集合中,\large C_1 和 \large C_2 分类不一致的样本,组成样本集合 \large D_3,训练弱分类器 \large C_3

     ④. 用三个分类器做投票,得到最后分类结果。

    (3). Boosting 算法公式

     Boosting 算法主要涉及两个部分,即加法模型和前向分步算法

     ①. 加法模型

           强分类器是由一系列弱分类器线性相加而成。

           一般组合形式如下:

                 \LARGE F_{M}(x, p) = \sum_{m = 1}^{n} \beta_{m} h(x, a_m)

                 \large h(x, a_m):就是一个个弱分类器

                 \large a_m:是弱分类器学习到的最优参数

                 \large \beta_m:就是弱学习在强分类器中所在点的比重

                 \large p:是所有 \large a_m 和 \large \beta_m 的组合

     ②. 前向分步

           在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。可以写成如下形式:

                   \LARGE F_{m}(x) = F_{m - 1}(x) + \beta_{m} h(x, a_m)

           由于采用的损失函数不同, Boosting 算法也因此有了不同的类型

     ③. 算法三要素

           a. 函数模型

               Boosting 的函数模型是叠加型,即:

                    \LARGE F(x) = \sum_{i = 1}^{k} f_{i}(x, \theta_{i})

           b. 目标函数

               选定某种损失函数作为优化目标

                    \LARGE E\{F(x)\} = E\{\sum_{i = 1}^{k} f_{i}(x, \theta_{i})\}

           c. 优化算法

               贪婪算法,贪婪地逐步优化,即:

                    \LARGE \theta_{m}^{*} = arg \min_{\theta_m}E\{\sum_{i = 1}^{k} f_{i}(x, \theta_{i}^{*}) + f_{m}(x, \theta_{m})\}

    (4). Boosting 四大家族

     Boosting 并非是一种方法,而是一类方法。按照损失函数的不同,将其细分为若干算法,以下为四种不同损失函数对应的 Boosting 方法:

     ①. squared error 平方损失

           Loss (损失函数):\LARGE \tfrac{1}{2} (y_{i} - f(x_i))^2

           Derivative (导数):\LARGE y_{i} - f(x_i)

           目标函数 \large f^{*}\LARGE E(y | x_i)

           算法:L2Boosting

     ②. absolute error 绝对损失

           Loss (损失函数):\LARGE |y_{i} - f(x_{i})|

           Derivative (导数):\LARGE sign(y_{i} - f(x_i))

           目标函数 \large f^{*}\LARGE median(y|x_i)

           算法:Gradient Boosting

     ③. exponentail loss 指数损失

           Loss (损失函数):\LARGE e^{-\hat{y_{i}}f(x_i)}

           Derivative (导数):\LARGE -\hat{y_i}e^{-\hat{y_{i}}f(x_i)}

           目标函数 \large f^{*}\LARGE \tfrac{1}{2} \log_{2} \tfrac{\pi_i}{1 - \pi_i}

           算法:AdaBoost

     ④. logLoss 对数损失

           Loss (损失函数):\LARGE \log_{2} (1 + e^{- \hat{y_i}f_i})

           Derivative (导数):\LARGE y_{i} - \pi_i

           目标函数 \large f^{*}\LARGE \tfrac{1}{2} \log_{2}\tfrac{\pi_i}{1 - \pi_i}

           算法:LogitBoost

    (5). Boosting 算法需要解决的问题

     ①. 如何调整训练集,使得在训练集上训练的弱分类器得以进行

     ②. 如何将训练得到的各个弱分类器联合起来形成强分类器

    (6). Boosting 的特点

     ①. Boosting 是一种框架算法,拥有系列算法

     ②. Boosting 系列算法的主要区别在于其三要素选取的函数不同。

     ③. 可以提高任意给定算法准确度

     ④. 训练过程为阶梯状,弱分类器按次序一一进行训练(实现上可以做到并行),弱分类器的训练集按某种策略每次都进行一定的转化。最后以一定的方式将弱分类器组合成一个强分类器

     ⑤. Boosting 中所有的弱分类器可以是不同的分类器,不过,很少人使用不同的分类器,因为复杂。

                 

返回主目录

返回集成学习目录

上一章:机器篇——集成学习(二) 细说 随机森林(Rondoom Forest) 算法

下一章:机器篇——集成学习(四) 细说 AdaBoost 算法

发布了42 篇原创文章 · 获赞 15 · 访问量 2780

猜你喜欢

转载自blog.csdn.net/qq_38299170/article/details/103842213
今日推荐