二、最细粒度 推导AdaBoost

声明:原创文章,转载请注明或保留出处【https://www.jianshu.com/p/c6603ceb62d0】by【飞奔的野指针】

一、概念介绍

1概率分布和期望

1.1概率分布

简单理解概率分布:有一种实验是同时抛10枚硬币,统计出现正面和反面的个数,用表示正面个数。

进行次该实验,在这次实验中,10枚硬币全都是正面的次数应该最少,5正5反的次数应该最多。

随着取不同值​,次实验中出现的次数也不相同,或者说出现的概率也不相同,这满足某种规律,这种规律称为概率分布。

1.2数学预期

数学期望举例:同样抛一枚硬币,正面得到100元,反面不给钱,数学预期就是。

如果进行次数够多,多次平均,每次大约能得到50元。

概率分布和预期,可在概率论中详细了解。

2.二项分布

就如概率分布中的例子,抛一枚硬币只会出现两种情况,正面或者反面,也就是结果只有两个值。我们抛一枚硬币次,每次互不影响,相互独立,这种实验称为伯努利实验。

每次实验独立且只有两种结果,正面的概率都为,那么表示试验反面的概率为。次实验出现次正面表示为,其概率为

含参数和表示次独立试验的成功次数的概率分布,就是二项分布,记为。表示随机变量服从该二项分布。当时是二点分布,也叫分布,我们也能证明其期望为:

具体二项分布推导可以在概率论中了解。

三、AdaBoost

Boosting:从训练集训练一个基学习器,根据基学习器对训练样本分布进行调整,使得分错的样本受到更多关注。基于调整后的样本分布来训练下一个基分类,依次训练出个分类器,最终将个分类器加权结合,AdaBoost是Boosting的一种。

我们有训练集、基学习算法、训练轮数(当前轮数用表示)。

第一轮我们给每个样本一个初始权值组成权值集,此时我们对每个样本的关注度相同

我们根据样本训练出第一轮的基学习算法为,训练方法可以使用任何一个分类器Bayes、SVM等。

1.错误率

\begin{align} \epsilon &=\frac{\text{未正确分类的样本数目}}{\text{所有样本数目}}\\[2ex] \epsilon_1 & =\frac{\sum_{i=1}^{n} \mathbb{I}(h_1\left(x_{i}\right)\neq y_i)}{n} & \mathbb{I}\text{为表示性函数,成立取}1\text{否则取}0\\[2ex] & =\sum_{i=1}^{n} \frac1n \mathbb{I}(h_1\left(x_{i}\right)\neq y_i)\\[2ex] & =\sum_{i=1}^{n} d_{1,i} \mathbb{I}(h_1\left(x_{i}\right)\neq y_i)\\[2ex] \end{align}

我们知道第一轮分类错误的概率
\begin{align} & P_1(h_1(x_i)\neq y_i) = \frac{\sum_{i=1}^n \mathbb{I}(h_1\left(x_{i}\right)\neq y_i)}{n}=\sum_{i=1}^n \frac1n\mathbb{I}(h_1\left(x_{i}\right)\neq y_i)\\[2ex] \therefore & \epsilon_1 =P_1(h_1(x_i)\neq y_i)\\[2ex] \therefore & \epsilon_t =P_t(h_t(x_i)\neq y_i)\\[2ex] \end{align}
错误率有两种意义:

  1. 错误率是一种分布列,基于概率分布,表示为。
  2. 通过调整概率分布来让每个样本对错误率有不同的影响力分类算法是通过降低错误率是优化分类器的,调整就是调整错误率,从而降低错误率优化分类器。

错误率可写为:

2.代价函数

2.1指数代价函数

AdaBoost每一轮都训练一个基分类器,然后将每一轮的分类器组合在一起,组成一个强大的分类器,AdaBoost采用加性模型,即及学习器的线性组合组成,每一轮的设为(注意区分和),的引入意味着训练出的个分类器的权重不同,每个分类器对最终预测结果的影响力不同

支持向量机中介绍了几种基本代价函数,我们使用作为代价函数,和支持向量机类似,表示实际分类,表示预测结果

简单分析下指数损失函数的性质:

二、最细粒度 推导AdaBoost_第1张图片
1557030493674.png

预测与实际类别一致,越大,代价函数越趋向。

预测与实际类别不同,越大,代价函数越趋向。

损失函数可以看基于概率分布的随机变量,,我们用数学期望替代损失函数,数学期望为

2.2指数代价函数可行性

分类结果只有两种情况,分对和分错,这是一种分布,其预期如下

我们试着验证指数代价函数和原来的代价函数具有一致性。
\begin{align} \therefore\ell_{exp}(H|D_t)&= E_{x_i\sim D_t}\left[e^{-y_iH(x_i)}\right]\\[2ex] &= e^{-H(x_i)} \times p(y_i=1)+e^{H(x_i)}\times P(y_i=-1)\\[2ex] \ell_{exp}(H|D_t)&=p(y=1) *e^{-H(x)}+P(y=-1) *e^{H(x)} \\[2ex] \end{align}
需要最小化代价函数,由于与为常数,对代价函数关于求偏导:

令其为可得:

\begin{align} \operatorname{sign}(H(x)) &= \operatorname{sign}\left[\frac12 \ln \frac{P(y=1)}{P(y=-1)}\right]\\[2ex] &=\left\{\begin{array}{ll}{1,} & {P(y=1)>P(y=-1)} \\ {-1,} & {P(y=1)<P(y=-1)}\end{array}\right.\\[2ex] &=\underset{\beta \in\{-1,1\}}{\arg \max } P(y=\beta) \end{align}
这意味着达到了贝叶斯最优错误率,若指数损失函数最小化,则分类错误率最小化,指数代价函数是原本代价函数的一致性替代函数,它有更好性质,我们采用它来替代并优化是可行的。

3.求解

第一个分类器直接通过原始训练集得到,此后迭代生成每一轮的和,当基于分布,应使得代价函数最小。
\begin{align} \ell(H|D_t)& =E_{x_i\sim D_t}\left[e^{-y_i\alpha_th_t(x_i)}\right]\\[2ex] & =E_{x_i\sim D_t}\left[e^{-a_t} \mathbb{I}(h_t(x_i)=y_i)+e^{a_t} \mathbb{I}(h_t(x_i)\neq y_i) \right] \\[2ex] & =e^{-\alpha_t} P_{x \sim \mathcal{D}_t}(h_t(x_i)=y_i)+e^{\alpha_t} P_{x \sim \mathcal{D}_t}(h_t(x_i)\neq y_i) & 0-1\text{分布}\\[2ex] & =e^{-\alpha_{t}}(1-\epsilon_{t})+e^{\alpha_t} \epsilon_{t} & \epsilon_t=P_{x \sim \mathcal{D}_t}(h_t(x_i)\neq y_i)\\[2ex] \frac{\partial\ell(H|D_t)}{\partial \alpha_t}& =-e^{-\alpha_t}(1-\epsilon_t)+e^{\alpha_t} \epsilon_t=0\\[2ex] \color{red}{\alpha_t}& \color{red}{=\frac12\ln(\frac{1-\epsilon^t}{\epsilon_t})} \end{align}
上式可知,只和轮分类器的错误率有关,错误率越高,权重越小

4.前向分布优化求解

第1轮的分类器就是基分类器,第2轮只训练出,在第1轮的基础上纠正的全部错误,至少逼近需要优化的目标函数。如次递推,每一轮都在上一轮的基础上学习出本轮的,然后叠加,逼近优化目标(此处为最小代价函数),这种算法称为前向分布优化

已知取决于轮错误率,只有训练出了该轮的基学习器才能够求错误率,而训练需要,于是任务变成了从轮的各种参数中更新出,更新的限制条件为最小化代价函数

之前已经求出轮代价函数,我们试着将其与上一轮轮的的某些参数关联起来,试着找出两轮之间的联系。
\begin{align} \because H_t& =H_{t-1}+\alpha_th_t\\[2ex] \color{red}{e^{-yH(x)}}& =e^{-y\left(H_{t-1}(x)+\alpha_th_t(x)\right)}\color{red}{=e^{-yH_{t-1}(x)}\cdot e^{-y\alpha_th_t(x_i)}}\\[2ex] \ell_{exp}(H_t|D_t)&= E_{x\sim D_{t}}\left[e^{-yH_{t}(x_i)}\right]\\[2ex] &=\sum_{i=1}^n d_{t,i}e^{-yH_{t}(x)} &\text{数学预期公式}E(X)=\sum_{i=1}^n x_ip(x_i)\\[2ex] &=\sum_{i=1}^n d_{t,i}e^{-yH_{t-1}(x)}e^{-y\alpha_th_t(x_i)}\\[2ex] \ell_{exp}(H_{t-1}|D_{t-1})&=\sum_{i=1}^n d_{t-1,i}e^{-yH_{t-1}(x_i)} \end{align}

这里假设是通过即可纠正的误差,也就是说

那么我们可以将轮代价函数改写
\begin{align} \ell_{exp}(H_{t-1}+h_t|D)&=\sum_{i=1}^n d_{t-1,i}e^{-yH_{t-1}(x_i)}e^{-y\alpha_th_t(x_i)}\\[2ex] &= \text{设}\color{red}{w_{t-1}^i=e^{-yH_{t-1}(x_i)}} \\[2ex] \ell_{exp}(H_{t-1}+h_t|D)&=\sum_{i=1}^n w_{t-1}^id_{t-1,i}e^{-y\alpha_th_t(x_i)}\\[2ex] &=\sum_{i=1}^n w_{t-1}^i\sum_{i=1}^nd_{t-1,i}e^{-y\alpha_th_t(x_i)}\\[2ex] &=\sum_{i=1}^nw_{t-1}^i E_{x\sim D_{t-1}}\left[e^{-y\alpha_th_t(x)}\right]\\[2ex] \end{align}
我们将代价函数分成了两块,前者是本轮未知参数,后者中都是上轮参数,都是已知的,也就是固定值。

后者中的含有复杂的,设法将其去除,展开至二次方(具体见高数泰勒公式)
\begin{align} & e^x \approx 1+x+\frac{x^2}{2} \\[2ex] \therefore & e^{-y\alpha_th_t(x)} \approx 1-y\alpha_th_t(x)+\frac{y^2\alpha_t^2h_t^2(x)}{2}\\[2ex] \because & y^2=h_t^2(x)=1\\[2ex] \therefore & e^{-y\alpha_th_t(x)} \approx 1-y\alpha_th_t(x)+\frac12=\frac32-y\alpha_th_t(x)\\[2ex] \end{align}
将其代入原式

本轮基学习器依托于最小化,即 ,其中arg的含义是满足后面式子时的取值。

\begin{align} \left(\alpha_t,h_t(x)\right)&= \underset{h}{\arg\min}\;\sum_{i=1}^nw_{t-1}^iE_{x\sim D_{t-1}}\left(\frac32-y\alpha_th_t(x)\right)\\[2ex] &= \underset{h}{\arg\max}\;\sum_{i=1}^nw_{t-1}^iE_{x\sim D_{t-1}}y\alpha_th_t(x)\\[2ex] &=\underset{h}{\arg \max}\;\sum_{i=1}^nw_{t-1}^iE_{x \sim D_{t-1}}\left(\frac{ y \alpha_th_t(x)}{E_{x \sim D_{t-1}}\left[e^{-y H_{t-1}(x)}\right]} \right) &\text{加入规范因子} \color{red}{Z_{t-1}= E_{x \sim D_{t-1}}\left[e^{-y H_{t-1}(x)}\right]}\\[2ex] &=\underset{h}{\arg \max}\;\sum_{i=1}^nw_{t-1}^iE_{x \sim D_{t-1}}\left(\frac{ y \alpha_th_t(x)}{Z_{t-1}} \right) \\[2ex] \end{align}

,固定,求解,展开数学预期,并化简。
\begin{align} &\because E_{x \sim D_{t-1}}\left[\frac{yh_t(x)}{Z_{t-1}}\right] = \sum_{i=1}^{n} d_{t-1,i} \frac{yh_t(x_i)}{Z_{t-1}} \\[2ex] h_t(x) &=\underset{h}{\arg \max}\;\sum_{i=1}^nw_{t-1}^i \sum_{i=1}^{n} d_{t-1,i}\frac{y h_t(x_i)}{Z_{t-1}}\\[2ex] &=\underset{h}{\arg \max}\; \sum_{i=1}^{n} yh_t(x_i)d_{t-1,i} \frac{w_{t-1}^i}{Z_{t-1}}\\[2ex] &\text{设新分布}\color{red}{\phi_{t,i} =d_{t-1,i}\frac{w_{t-1}^i}{Z_{t-1}}} \quad \Phi_t=\{\phi_{t,1},...,\phi_{t,n}\}\\[2ex] h_t(x)& = \underset{h}{\arg \max}\sum_{i=1}^{n} \phi_{t,i} y_ih_t(x_i)\\[2ex] & = \underset{h}{\arg \max}E_{x\sim \Phi_{t}}[yh_t(x)]\\[2ex] & = \underset{h}{\arg \max}E_{x\sim \Phi_{t}}[yh_t^*(x)]\\[2ex] \end{align}
根据上式,是定值,根据分布不断学习,直到得出最优,实质上就是要求的本轮。

右侧全部都是上一轮轮相关参数,右侧分母为规范因子。得出最终优化函数。

由于则轮理想学习器为:

四.AdaBoost思路

adaptive boosting,自适应boosting,简称AdaBoost。

1.流程

  1. 输入:训练集、基学习算法、训练轮数。
  2. 给训练集每个样本一个权重,第轮第个样本权重为,初始为等值,所有权重组成第轮的权重向量。
  3. 循环进行T轮训练,每一轮过程如下:
    1. 根据训练集和该轮权重训练弱分类器,,
    2. 计算出错误率,此时,如果则跳过该轮。
    3. 根据错误率,计算权重系数.
    4. 根据调整权重,分类错误的样本的权重增加,分对的样本权重降低,进行轮训练。
  4. 根据每一轮的权重,综合成一个强分类器

2.图示

1557021277829.png

如图所示,的错误率,可以计算出,的错误率,可以计算出,的错误率,可以计算出,最终可得

Adaboost 为每个分类器分配一个权重,是基于每个弱分类器的错误率进行计算的。


参考:

  1. 周志华 《机器学习》第八章 集成学习
  2. 李航《统计学习方法》第8章 提升方法
  3. 茆诗松《概率论与数理统计教程》第二章 随机变量及其概率分布

你可能感兴趣的:(二、最细粒度 推导AdaBoost)