机器学习算法——集成学习2(Boosting)

Boosting是一族可将弱学习器提升为强学习器的算法。

这族算法的工作机制类似:

  • 【提高】那些在前一轮被弱分类器【分错】的样本的权值;
  • 【减小】那些在前一轮被弱分类器【分对】的样本的权值;

使得误分的样本在后续受到更多的关注。体现了【串行】

Boosting族算法最著名的代表是AdaBoost算法,它解决的是二分类问题

AdaBoost算法有很多推导方式,比较容易理解的是基于“加性模型”,即基学习器的线性组合:

H(x) = \sum_{t=1}^{m} \alpha_th_t(x)

在每一轮中,要分别记录好那些被当前弱分类器【正确分类】与【错误分类】的样本,在下一轮训练时,提高【错误分类】样本的权值,同时降低【正确分类】样本的权值,用以训练新的弱分类器。这样使得那些没有得到正确分类的数据,由于其权值加大,会受到后一轮的弱分类器的更大关注。

【加权多数表决】:加大分类误差率小的弱分类器的权值,使其在表决中起较大作用;减小分类误差率大的弱分类器权值,使其在表决中起较小的作用。

最终分类器为:

G(x) = sign[H(x)]

定义整个学习器的损失函数为指数损失函数,期望损失函数最小化:

\iota_{exp}(H|D) = \mathbb{E}_{x \sim D} [e^{-f(x)H(x)}]

其中,f为真实函数,y_i \in \{-1,+1\},D表示样本的权值分布(对于错误的样本权重要高一点,正确样本的权重低一点。)

所以可以将上式写为:

\iota_{exp}(H|D) = e^{-H(x)}P(f(x)=1|x)+e^{H(x)}p(f(x)=-1|x)

要想使期望损失函数最小化,需要对其进行求偏导。即:

\frac{\partial \iota_{exp}(H|D)}{\partial H(x)} = -e^{-H(x)}P(f(x=1)|x)+e^{H(x)}P(f(x=-1)|x)=0

得出:

H(x)=\frac{1}{2} ln \frac{P(f(x)=1|x)}{P(f(x)=-1|x)}

因此,有

sign(H(x))=sign(\frac{1}{2}ln\frac{P(f(x)=1|x)}{P(f(x)=-1|x)})\\ =\left\{\begin{matrix} 1,P(f(x)=1|x)>P(f(x=-1)|x)\\ -1,P(f(x)=1|x)<P(f(x=-1|x)) \end{matrix}\right.\\ =\underset{y\in\{-1,1\}}{arg max}P(f(x)=y|x)

这意味着若指数损失函数最小化,则分类错误率也将最小化。说明指数损失函数就是原任务的替代函数,但由于其连续可微,所以用它替代0/1损失函数作为优化目标。

在AdaBoost算法中,第一个基分类器h1是通过直接将基学习算法用于初始数据分布而得;此后迭代地生成h_t\alpha_t,当基分类器h_t基于分布D_t产生后,该基分类器得权重\alpha_t应使得\alpha_th_t最小化指数损失函数。

\iota_{exp}(\alpha_th_t|D_t)=\mathbb{E}_{x\sim D_t} [e^{-f(x)\alpha_th_t(x)}]\\ =\mathbb{E}_{x\sim D_t}[e^{-\alpha_t}\mathbb{I}(f(x)=h_t(x))+e^{\alpha_t}\mathbb{I}(f(x)\neq h_t(x))]\\ =e^{-\alpha_t}P_{x\sim D_t}(f(x)=h_t(x)) + e^{\alpha_t}P_{x\sim D_t}(f(x) \neq h_t(x))\\ =e^{-\alpha_t}(1-\varepsilon_t)+e^{\alpha_t}\varepsilon_t

其中,\varepsilon_t=P_{x \sim D_t}(h_t(x)=f(x)),其实就是错误率

\mathbb{I}指得是示性函数,有一个很重要的性质是:示性函数的期望等于它下标事件发生的概率。

 考虑指数损失函数的导数:

\frac{\partial \iota_{exp}(\alpha_th_t|D_t)}{\partial \alpha_t}=-e^{-\alpha_t}(1-\varepsilon_t)+e^{\alpha_t}\varepsilon_t=0

得出,\alpha_t=\frac{1}{2}ln(\frac{1-\varepsilon_t}{\varepsilon_t})这就是分类器权重更新公式。

AdaBoost算法在获得H_{t-1}之后样本分布将进行调整,使下一轮的基学习器h_t能纠正H_{t-1}的一些错误。理想的h_t能纠正H_{t-1}的全部错误,即最小化

\iota_{exp}(H_{t-1}+h_t|D) = \mathbb{E}_{x\sim D}[e^{-f(x)(H_{t-1}(x)+h_t(x))}] =\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}e^{-f(x)h_t(x))}]\\

注意到f^2(x)=h_t^2(x)=1,使得e^{-f(x)h_t(x)}的泰勒展开式为:

\iota_{exp}(H_{t-1}+h_t|D) = \mathbb{E}_{x\sim D}[e^{-f(x)(H_{t-1}(x)+h_t(x))}] =\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}e^{-f(x)h_t(x))}]\\ =\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x))}(1-f(x)h_t(x)+\frac{f^2(x)h_t^2(x)}{2})]\\ =\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x))}(1-f(x)h_t(x)+\frac{1}{2})]

于是,理想的基学习器

h_t(x)=\underset{h}{arg min} \iota_{exp}(H_{t-1}+h|D) \\ =\underset{h}{arg min} \mathbb{E_{\chi \sim D}}[e^{-f(x)H_{t-1}(x)}(1-f(x)h(x)+\frac{1}{2})]\\ =\underset{h}{arg max}\mathbb{E_{\chi \sim D}}[e^{-f(x)H_{t-1}(x)}f(x)h(x)]\\ =\underset{h}{arg max}\mathbb{E_{\chi \sim D}}[\frac{e^{-f(x)H_{t-1}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}f(x)h(x)]

其中,\mathbb{E}_{x\sim D} [e^{-f(x)H_{t-1}(x)}]是一个常数,令Dt表示一个分布:

D_t = \frac{D(x)e^{-f(x)H_{t-1}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}

根据数学期望的定义,这等价于

h_t(x)=\underset{h}{arg max}\mathbb{E}_{x\sim D_t}[f(x)h(x)]

因为,f(x),h(x) \in {-1,1}所以有

f(x)h(x)=1-2\mathbb{I}(f(x) \neq h(x))

则理想的基学习器

h_t(x)=\underset{h}{arg min} \mathbb{E}_{x\sim D_t}[\mathbb{I}(f(x) \neq h(x))]

考虑到Dt+1和Dt的关系,有

D_{t+1}(x) = \frac{D(x)e^{-f(x)H_t(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_t{x}}]}\\ =\frac{D(x)e^{-f(x)H_{t-1}(x)}e^{-f(x)\alpha_th_t(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_t{x}}]}\\ =D_t(x)e^{-f(x)\alpha_th_t(x)}\frac{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}{x}}]}{\mathbb{E}_{x\sim D}[e^{-f(x)H_t{x}}]}

这就是样本分布更新公式。

有了上述理论的铺垫,得出AdaBoost算法流程为:

训练集D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\}

基学习算法\varrho

训练轮数T

过程:

D_1(x) = \frac{1}{m}

for t=1,2,...,T do

        h_t=\varrho (D,D_t)

        \varepsilon_t = P_{x\sim D} (h_t(x) \neq f(x))

        if \varepsilon_t > 0.5 then break

        \alpha_t = \frac{1}{2}ln(\frac{1-\varepsilon_t}{\varepsilon_t})

        D_{t+1}(x) =D_t(x)e^{-f(x)\alpha_th_t(x)}\frac{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}{x}}]}{\mathbb{E}_{x\sim D}[e^{-f(x)H_t{x}}]}

end for

输出:H(x)=sign(\sum_{i=1}^{T}\alpha_th_t(x))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值