机器篇——集成学习(五) 细说 梯度提升(Gradient Boost)算法

返回主目录

返回集成学习目录

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

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

 

本小节,细说 梯度提升(Gradient Boost)算法,下一小节细说 GBDT 算法

 

二. 具体算法

5. 梯度提升(Gradient Boost)算法

    (1). Gradient Boost 算法思想

     ①. 利用损失函数的负梯度在当前模型的值作为回归问题提升树算法中残差的近似值,拟合一个回归树。

     ②. 梯度下降的经典数值优化公式:

               \LARGE \theta = \theta - \alpha \frac{\partial L(\theta)}{\partial \theta}

     ③. Gradient Boost 采用和 AdaBoost 同样的加法模型,在第 \large m 次迭代中,前 \large m -1 个基学习器都是固定的,即:

               \LARGE f_{m}(x) = f_{m - 1}(x) + \rho _{m} h_{m}(x)

     ④. 在第 \large m 步的目标是最小化损失函数

                \LARGE L(f) = \sum_{i = 1}^{N}L(y_{i}, f_{m}(x_{i}))

            进而求得相应的基学习器

            若将 \large f(x) 当成参数,则同样可以使用梯度下降法。

                   \LARGE f_{m}(x) = f_{m - 1}(x) - \rho_{m} \frac{\partial L(y, f_{m - 1}(x))}{\partial f_{m - 1}(x)}

            由上式可发现   \large h_{m}(x) \approx - \frac{\partial L(y, f_{m - 1}(x))}{\partial f_{m - 1}(x)}

            即用基学习器 \large h_{m}(x) 拟合前一轮模型的损失函数的负梯度,就是通过梯度下降法最小化 \large L(f)

            由于 \large f(x) 实际为函数,所以该方法被认为是函数空间的梯度下降。

            残差 \large r = y - f(x) 越大,表明前一轮学习器 \large f(x) 的结果与真实 \large y 相差较大 ,那么下一轮学习器通过拟合残差或负梯度,就能纠正之前的学习器犯错误较大的地方。

 

    (2). Gradient Boost 算法的实现

     ①. 思路

      a. 函数模型为 CART 回归模型

      b. 损失函数一般为 “对数损失函数” 或 ”指数损失函数“,Gradient Boosting 算法即为梯度提升算法

      c. 优化算法采用梯度下降

      d. 将残差作为下一个弱分类器的训练数据,每个新的弱分类器的建立都是为了使得之前的弱分类器的残差往梯度方向减少。

          将弱分类器联合起来,使用累加机制代替平均投票。

     ②. 流程

      a. 初始化 \large f_{0}(x) = arg \min_{r} \sum_{i = 1}^{N} L(y_{i}, r)

      b. for m=1 to M:

                  计算负梯度:\large y_{i}^{'} = - \frac{\partial L(y_{i}, f_{m - 1}(x_{i}))}{\partial f_{m - 1}(x_{i})}           \large (i = 1, 2, ......, N)

                  通过最小化平方误差,用基学习器 \large h_{m}(x) 拟合 \large y_{i}^{'}

                  \large w_{m} = arg \min_{w} \sum_{i = 1}^{N}(y_{i}^{'} - h_{m}(x_{i}, w))^2

                  使用 line search 确定学习率 \large \rho_{m},以使 \large L 最小,

                  \large \rho_{m} = arg \min_{\rho} \sum_{i = 1}^{N} L(y_{i}, f_{m - 1}(x_{i}) + \rho h_{m}(x_{i}, w_{m}))

                  \large f_{m}(x) = f_{m - 1}(x) + \rho_{m}h_{m}(x, w_{m})

      c. 输出 \large f_{M}(x)

 

     学习 Gradient Boost 知识,为后面 GBDT 做知识储备。

 

 

 

 

 

                 

 

返回主目录

返回集成学习目录

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

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

 

 

你可能感兴趣的:(AI章)