从零开始理解AdaBoost算法:加法模型与优化方法(三)【理论解析】

从零开始理解AdaBoost算法:加法模型与优化方法(三)【理论解析】

在前面我们已经明白了如何进行AdaBoost算法的基本操作,但我们还不清楚这些公式是如何得来的,以及为什么要这样做。接下来,我们将详细讲解这些公式的推导过程及其背后的原因。

AdaBoost算法属于Boosting类型的算法,其基本思路是通过组合多个弱分类器来构建一个强分类器。由于它是一个加法模型,我们可以通过训练来优化模型中的参数。

预测函数——加法模型的定义

在机器学习中,加法模型的预测函数如下所示:
f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x) = \sum_{m = 1}^{M} \beta_m b(x;\gamma_m) f(x)=m=1Mβmb(x;γm)
这里:

  • β m \beta_m βm 是基函数的系数
  • b ( x ; γ m ) b(x;\gamma_m) b(x;γm) 是基分类器
  • γ m \gamma_m γm 是基分类器的参数

损失函数

损失函数的选择取决于具体问题:

  • 回归问题:均方误差(MSE)
  • 分类问题:指数函数或交叉熵损失

优化方法

常用的优化方法是梯度下降,但是对于加法模型,梯度下降并不总是适用。

梯度下降的缺点

目标函数是要极小化损失函数:
min ⁡ β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) ) \min_{\beta_m,\gamma_m} \sum_{i = 1}^{N} L(y_i, \sum_{m = 1}^{M} \beta_m b(x_i;\gamma_m)) βm,γmmini=1NL(yi,m=1Mβmb(xi;γm))
假设 M = 2 M = 2 M=2,且损失函数为均方误差(MSE),则目标函数为:
∑ i = 1 N ( y i − ( β 1 b ( x i ; γ 1 ) + β 2 b ( x i ; γ 2 ) ) ) 2 \sum_{i=1}^{N} (y_i - (\beta_1 b(x_i;\gamma_1) + \beta_2 b(x_i;\gamma_2)))^2 i=1N(yi(β1b(xi;γ1)+β2b(xi;γ2)))2

如果使用梯度下降法进行优化,每次迭代需要同时更新 β 1 \beta_1 β1 β 2 \beta_2 β2 γ 1 \gamma_1 γ1 γ 2 \gamma_2 γ2。当 M M M 较大时,需要同时更新 2 M 2M 2M 个参数,复杂度较高。而且,这里假设了 γ \gamma γ 只有一个参数,但在实际中,如逻辑回归, γ \gamma γ 可能是一个向量。

前向分布算法

由于当前的基函数会受到前面所有基函数的影响,前后关系非常紧密,因此我们可以使用具有递推关系的前向分布算法。

输入:

  • 训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T = \{(x_1, y_1), (x_2, y_2), \dots, (x_N, y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
  • 损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x))
  • 基函数集 b ( x ; γ ) b(x;\gamma) b(x;γ)

输出:加法模型 f ( x ) f(x) f(x)

过程:

  1. 初始化 f 0 ( x ) = 0 f_0(x) = 0 f0(x)=0

  2. m = 1 , 2 , … , M m = 1, 2, \ldots, M m=1,2,,M

    • (a)极小化损失函数:
      ( β m , γ m ) = arg ⁡ min ⁡ β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x i ; γ ) ) (\beta_m, \gamma_m) = \arg\min_{\beta,\gamma} \sum_{i=1}^{N} L(y_i, f_{m-1}(x_i) + \beta b(x_i;\gamma)) (βm,γm)=argβ,γmini=1NL(yi,fm1(xi)+βb(xi;γ))
      得到参数 β m \beta_m βm γ m \gamma_m γm
    • (b)更新模型:
      f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) f_m(x) = f_{m-1}(x) + \beta_m b(x;\gamma_m) fm(x)=fm1(x)+βmb(x;γm)
  3. 得到最终的加法模型:
    f ( x ) = f M ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x) = f_M(x) = \sum_{m=1}^{M} \beta_m b(x;\gamma_m) f(x)=fM(x)=m=1Mβmb(x;γm)

优势
  1. 递推性质:当前参数只受到前面所有参数的影响,前后关系紧密。前向分布算法每次只计算一个新的基函数参数,使得每步计算更为简洁。

  2. 计算效率:由于每次迭代只更新一个基函数的参数,前向分布算法显著降低了计算复杂度,特别是当模型包含大量基函数时。

  3. 串行优化:前一个参数 f m − 1 ( x ) f_{m-1}(x) fm1(x) 在当前计算中是一个定值,不再变化,因此每次只需集中精力优化新的参数 β m \beta_m βm γ m \gamma_m γm。这体现了逐步优化的思想,使得参数优化更加明确和直观。

前向分布算法 VS 梯度下降方法

在优化加法模型时,我们可以采用前向分布算法(Forward Stagewise Additive Modeling)来替代传统的梯度下降方法。这两种方法的主要区别在于参数更新的方式和计算复杂度。

  1. 梯度下降方法

    • 目标:同时极小化所有参数。
    • 计算复杂度:高,每次迭代需要更新所有参数。
    • 参数更新:每次迭代更新 2 M 2M 2M 个参数(假设 γ \gamma γ 是标量)。
    • 适用场景:适用于参数数量较少的情况。
  2. 前向分布算法

    • 目标:逐步极小化一个基函数的参数。
    • 计算复杂度:低,每次迭代只更新一个基函数的参数。
    • 参数更新:每次迭代更新 2 个参数( β m \beta_m βm γ m \gamma_m γm)。
    • 适用场景:适用于参数数量较多,或每个基函数参数复杂的情况。

参考链接:5.加法模型_哔哩哔哩_bilibili

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 20:24:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 20:24:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 20:24:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 20:24:04       18 阅读

热门阅读

  1. 每日一题38:数据分组之订单最多的客户

    2024-06-10 20:24:04       8 阅读
  2. Ubuntu中安装MySQL root 密码修改

    2024-06-10 20:24:04       7 阅读
  3. 心灵清闲

    2024-06-10 20:24:04       10 阅读
  4. 深入解析分布式链路追踪:原理、技术及应用

    2024-06-10 20:24:04       11 阅读
  5. electron录制工具-desktopCapturer录屏

    2024-06-10 20:24:04       10 阅读
  6. multisim仿真电路图

    2024-06-10 20:24:04       11 阅读
  7. 公式面试题总结(三)

    2024-06-10 20:24:04       8 阅读
  8. 【设计模式】基本名词

    2024-06-10 20:24:04       11 阅读
  9. leetcode290:单词规律

    2024-06-10 20:24:04       13 阅读
  10. 回溯算法复原ip,子集1和子集2

    2024-06-10 20:24:04       9 阅读