目录

  • Boosting简介
  • AdaBoost
  • 1. 基本思路
  • 2. 算法过程
  • 3. 算法解释
  • 3.1 加法模型
  • 3.2 指数损失函数
  • 3.3 前向分步算法
  • 3.4 推导证明
  • 3.4.1 优化 G m ( x ) G_m(x) Gm(x)
  • 3.4.2 优化 α m \alpha_m αm


机器学习中有一类集成学习算法,它基于一组弱学习器进行组合提升,得到具有优越性能的强学习器。集成学习策略主要有boosting和bagging两大类。本文要介绍的AdaBoost就是boosting的重要代表。

Boosting简介

Boosting基本思想:通过改变训练数据的概率分布(训练数据的权值分布),学习多个弱分类器,并将它们线性组合,构成强分类器。Boosting算法要求基学习器能对特定的数据分布进行学习,这可通过“重赋权法”实施。对无法接受带权样本的基学习算法,则可通过“重采样法”来处理。

AdaBoost

1. 基本思路

俗话说“三个臭皮匠,顶个诸葛亮”,AdaBoost算法就认为综合多个学习器得出的判断要比单独的学习器的判断要更可靠。那么它就要训练得到若干个不同的基学习器,再将它们进行组合。

这里有两个步骤:第一是训练基学习器,基学习器之间必须是不同的,要么是不同的模型,要么模型一样但是参数不一样。要不然一样的学习器只能得到一样的结果,对我们最终的判断没有任何助益。如果我们选用的基学习器都相同的话,那么就要对数据进行一定的操作 (重赋权or重采样) 使得训练得到不同的参数。AdaBoost 采用重赋权法,每训练出一个学习器后,改变样本的权值,使得被分类错误的样本拥有更大的权重,这样在下一轮的训练中将会更加关注这些错分样本,最终得到一个相对好的结果。第二步是基学习器的线性组合,AdaBoost采用加权多数表决,即分类误差率低的基学习器有更大的权重,进行线性组合。

2. 算法过程

假设一个二分类训练数据集 深度学习 重采样 adaboost重采样_算法.

(1)初始化权值分布

训练数据的权值分布,初始状态假设训练数据集具有均匀的权值分布,即每个训练样本在基分类器的学习中作用相同。深度学习 重采样 adaboost重采样_机器学习_02


(2)对 深度学习 重采样 adaboost重采样_深度学习 重采样_03,进行以下步骤:

① 学习得到基本分类器 深度学习 重采样 adaboost重采样_集成学习_04

使用具有权值分布深度学习 重采样 adaboost重采样_深度学习 重采样_05的训练数据集进行学习,得到基本分类器 深度学习 重采样 adaboost重采样_集成学习_06深度学习 重采样 adaboost重采样_集成学习_06可以根据输入给出+1或-1的输出。

② 计算深度学习 重采样 adaboost重采样_集成学习_04的分类误差率 深度学习 重采样 adaboost重采样_机器学习_09深度学习 重采样 adaboost重采样_机器学习_10 其中,深度学习 重采样 adaboost重采样_机器学习_11 是指示函数,当后面括号里的式子成立就取1,不成立就取0。所以 深度学习 重采样 adaboost重采样_数据挖掘_12

③ 计算 深度学习 重采样 adaboost重采样_集成学习_04的系数 深度学习 重采样 adaboost重采样_算法_14 深度学习 重采样 adaboost重采样_算法_15 其中 深度学习 重采样 adaboost重采样_机器学习_16相当于基本分类器的权重,前面说误差率低的分类器要有较大的权重,我们这里先介绍 深度学习 重采样 adaboost重采样_机器学习_16的这种形式能够实现我们的需求,后面会进一步介绍这是有严格的推导的,它为什么刚刚好就是这种形式。



深度学习 重采样 adaboost重采样_数据挖掘_18


从上图不难看出,深度学习 重采样 adaboost重采样_机器学习_16取值在0到正无穷,且深度学习 重采样 adaboost重采样_数据挖掘_12大的深度学习 重采样 adaboost重采样_机器学习_16小,深度学习 重采样 adaboost重采样_数据挖掘_12小的深度学习 重采样 adaboost重采样_机器学习_16大,是符合我们的逻辑的。这里解释一下分类误差率 深度学习 重采样 adaboost重采样_数据挖掘_12为什么小于等于1/2. 因为对于二分类问题,错误率超过0.5的话,只要进行简单的完全反转就可以使其降到0.5以下。举例来说,若 分类结果为 [1,1,1,-1] 错误率0.75,那么只要改成 [-1,-1,-1,1] 错误率就只有0.25了。(另一种想法是随机分类的错误率是0.5,弱学习器虽然弱,正确率也是要略高于随机分类的。

④ 更新训练数据集的权值分布深度学习 重采样 adaboost重采样_数据挖掘_25 深度学习 重采样 adaboost重采样_算法_26 深度学习 重采样 adaboost重采样_数据挖掘_27这里的公式看起来很复杂,其实思想是很简单的,我们一步步看。首先,深度学习 重采样 adaboost重采样_机器学习_28 是规范化因子,它将 深度学习 重采样 adaboost重采样_机器学习_29 映射到0~1的范围内,使之成为一个概率分布。深度学习 重采样 adaboost重采样_机器学习_28的值其实就是将所有的 深度学习 重采样 adaboost重采样_机器学习_29

然后再看 深度学习 重采样 adaboost重采样_机器学习_29 ,我们就可以先忽略掉深度学习 重采样 adaboost重采样_机器学习_28 去理解。如果分类器 深度学习 重采样 adaboost重采样_集成学习_06将一个样本分类正确,说明要么真实值 深度学习 重采样 adaboost重采样_机器学习_35为1 预测结果深度学习 重采样 adaboost重采样_集成学习_36也为1,要么真实为-1 预测也为-1,它们总是同号的,此时 深度学习 重采样 adaboost重采样_深度学习 重采样_37,如果分类错误则 深度学习 重采样 adaboost重采样_算法_38.所以可以将原来的式子写成 (先忽略深度学习 重采样 adaboost重采样_机器学习_28) :深度学习 重采样 adaboost重采样_集成学习_40 可以看出,当分类正确,会在原来的权重基础上乘上深度学习 重采样 adaboost重采样_集成学习_41深度学习 重采样 adaboost重采样_集成学习_41是小于0的,于是权重被进一步缩小,而错分样本的权重会放大,且被放大了 深度学习 重采样 adaboost重采样_算法_43


(3) 得到最终分类器深度学习 重采样 adaboost重采样_机器学习_44 深度学习 重采样 adaboost重采样_集成学习_45 深度学习 重采样 adaboost重采样_数据挖掘_46 其中,深度学习 重采样 adaboost重采样_集成学习_47是符号函数,若括号内取值小于0则输出-1,大于0则输出1。对深度学习 重采样 adaboost重采样_算法_48个基本分类器进行加权表决,系数深度学习 重采样 adaboost重采样_机器学习_16

算法描述到这里就结束了,总结一下就是:首先初始化权值分布,然后进入迭代,在每一轮中,依次计算分类器 深度学习 重采样 adaboost重采样_集成学习_06,分类错误率深度学习 重采样 adaboost重采样_数据挖掘_12,系数深度学习 重采样 adaboost重采样_机器学习_16,并改变得到下一轮的权值分布 深度学习 重采样 adaboost重采样_机器学习_53,当满足迭代停止条件则退出,对得到的若干基分类器进行加权求和,得到最终的分类器深度学习 重采样 adaboost重采样_集成学习_54

3. 算法解释

AdaBoost算法的另一种解释是,可以认为AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二分类学习方法

下面分别解释加法模型指数损失函数前向分步算法

3.1 加法模型

深度学习 重采样 adaboost重采样_深度学习 重采样_55其中,深度学习 重采样 adaboost重采样_算法_56为基函数,深度学习 重采样 adaboost重采样_深度学习 重采样_57为基函数的参数,深度学习 重采样 adaboost重采样_数据挖掘_58为基函数的系数。显然,上面构建的基本分类器的线性组合深度学习 重采样 adaboost重采样_深度学习 重采样_59

在给定训练数据和损失函数深度学习 重采样 adaboost重采样_算法_60的条件下,学习加法模型深度学习 重采样 adaboost重采样_数据挖掘_61成为损失函数极小化问题:深度学习 重采样 adaboost重采样_集成学习_62其含义是要求得最优的系数深度学习 重采样 adaboost重采样_数据挖掘_58和参数深度学习 重采样 adaboost重采样_深度学习 重采样_57使得损失函数最小,第一个求和号指对所有样本数据求和,第二个是对所有基分类器求和。

讨论:比较前向分步算法和梯度下降算法

这是一个复杂的优化问题,如果使用传统梯度下降,它要一次性优化2M个参数,复杂度很高。而前向分步算法求解的思想是:因为学习的是加法模型,如果能够从前向后,每一步只学习一个基函数机器系数,逐步逼近优化目标函数式,那么就可以简化优化的复杂度。

3.2 指数损失函数

深度学习 重采样 adaboost重采样_深度学习 重采样_65

3.3 前向分步算法

输入:训练数据集 深度学习 重采样 adaboost重采样_数据挖掘_66; 损失函数深度学习 重采样 adaboost重采样_算法_60; 基函数集深度学习 重采样 adaboost重采样_数据挖掘_68
输出:加法模型深度学习 重采样 adaboost重采样_数据挖掘_61

(1)初始化深度学习 重采样 adaboost重采样_数据挖掘_70

(2)对深度学习 重采样 adaboost重采样_数据挖掘_71,依次进行:

  • ① 极小化损失函数得到深度学习 重采样 adaboost重采样_机器学习_72深度学习 重采样 adaboost重采样_算法_73
  • ② 更新 深度学习 重采样 adaboost重采样_算法_74

(3)得到加法模型 深度学习 重采样 adaboost重采样_集成学习_75

这样,前向分步算法将同时求解从m=1到M所有参数深度学习 重采样 adaboost重采样_集成学习_76的优化问题简化为主次求解各个深度学习 重采样 adaboost重采样_集成学习_76的问题。可以看出AdaBoost是前向分步算法的特例,其基函数是基本分类器,损失函数是指数损失函数。


3.4 推导证明

现在我们要进行推导证明,用基函数是基本分类器、损失函数是指数损失函数的前向分步算法对深度学习 重采样 adaboost重采样_集成学习_78进行优化,求得的结果就是我们上面介绍AdaBoost时给出的形式。

第 m 轮迭代得到 深度学习 重采样 adaboost重采样_深度学习 重采样_79,而深度学习 重采样 adaboost重采样_集成学习_80 这是容易理解的,第m轮的深度学习 重采样 adaboost重采样_算法_81是【新得到的分类器深度学习 重采样 adaboost重采样_集成学习_06】 加上前【m-1轮分类器累加得到的深度学习 重采样 adaboost重采样_算法_83

目标是使前向分步算法得到的深度学习 重采样 adaboost重采样_机器学习_16深度学习 重采样 adaboost重采样_集成学习_06 使深度学习 重采样 adaboost重采样_算法_81 在训练集上的指数损失最小,即深度学习 重采样 adaboost重采样_深度学习 重采样_87 其中,深度学习 重采样 adaboost重采样_机器学习_88,第一个式子到第二个式子就是把指数部分拆开。现在要证明使这个式子达到最小的深度学习 重采样 adaboost重采样_算法_89就是AdaBoost算法得到的深度学习 重采样 adaboost重采样_集成学习_78.


3.4.1 优化深度学习 重采样 adaboost重采样_集成学习_06

深度学习 重采样 adaboost重采样_数据挖掘_92 使右边式子值最小的G就是我们要求的最优G*,但是我们知道AdaBoost算法的基本分类器深度学习 重采样 adaboost重采样_集成学习_06使第m轮加权训练数据分类误差率最小,而第m轮加权训练数据分类误差率就是求和号及其后面的部分。所以,此处 深度学习 重采样 adaboost重采样_数据挖掘_94也就是AdaBoost算法得到的 深度学习 重采样 adaboost重采样_集成学习_06.


3.4.2 优化 深度学习 重采样 adaboost重采样_机器学习_16

损失函数对 深度学习 重采样 adaboost重采样_机器学习_16 求导,令导数为0,得到的 深度学习 重采样 adaboost重采样_机器学习_16

先对上面经过一定变形的损失函数进行进一步变换,由于深度学习 重采样 adaboost重采样_集成学习_99有两种取值,我们可以将其拆开:深度学习 重采样 adaboost重采样_数据挖掘_100 第二个等号就是将 深度学习 重采样 adaboost重采样_深度学习 重采样_101提到求和号前面,第三个等号是加上并减去深度学习 重采样 adaboost重采样_机器学习_102 分别和原来的两项组合。第一个大括号内变成 深度学习 重采样 adaboost重采样_算法_103,第二个大括号内变成 深度学习 重采样 adaboost重采样_集成学习_104

整理一下就得到:深度学习 重采样 adaboost重采样_集成学习_105 求偏导并令求导结果为0:深度学习 重采样 adaboost重采样_机器学习_106 也就得到一个等式关系,并在等式两边取对数:深度学习 重采样 adaboost重采样_深度学习 重采样_107 而此处,对数里面的分母就是分类误差率 深度学习 重采样 adaboost重采样_数据挖掘_12,就得到上面的结果深度学习 重采样 adaboost重采样_数据挖掘_109

最后最后,我们知道在AdaBoost中计算了深度学习 重采样 adaboost重采样_机器学习_16后面就要更新权值深度学习 重采样 adaboost重采样_算法_111,因为深度学习 重采样 adaboost重采样_机器学习_88,所以:深度学习 重采样 adaboost重采样_机器学习_113 和AdaBoost中的结果也是一样的,除了没进行规范化之外。顺带一提,深度学习 重采样 adaboost重采样_机器学习_88也表达了AdaBoost将损失函数视为训练数据权值的思想。