高级人工智能之Adaboost分类器


本章内容主要讲解了Adaboost分类器的构造缘由以及其构造方法。

从2分类问题中最简单的线性分类器出发,慢慢一步步构造Adaboost二分类分类器。

线性二分类器

二分类分类器可以将样本空间分成两部分,对于某个样本 t t t来说,为了计算其分类结果,需要比较分类器预测值 f t ( x ) f_{t}(x) ft(x)与阈值 θ t \theta_{t} θt的大小。

从下面这个简单的弱分类器可以看出,阈值大小的比较其实是有两种情况的(正反两面),根据预测值和阈值大小关系的不同,可以将图中黄色的区域划分为 + 1 +1 +1类,也可以将其划分为 − 1 -1 1类,这两种情况是可以通过 p t p_{t} pt的符号调整的, p t ∈ { − 1 , + 1 } p_{t} \in \left\{-1,+1 \right\} pt{1,+1} ,把数字带入进去看就明白了。
请添加图片描述
上面是一般的二分类器,现在考虑更加简单的「线性」分类器,就是将二分类分类器函数进一步定义为和「坐标轴平行」的形式:
请添加图片描述

Adaboost分类器

现在考虑更复杂的分类情况,某个场景下,当样本无法通过一个简单的线性分类器进行分割的时候,可以考虑将多个线性分类器进行「结合」Ensemble,如下所示。

这就是Adaboost的思想,将多个弱分类器结合成一个强分类器,在weak classifier前乘以合适的权重 α t \alpha_t αt

最终的表达式为: ∑ t = 1 T α t h t ( x ) \sum_{t=1}^T\alpha_t h_t(x) t=1Tαtht(x)
决策函数为:
H ( x ) = s i g n ( ∑ t = 1 T α t h t ( x ) ) H(x)=sign( \sum_{t=1}^T\alpha_t h_t(x)) H(x)=sign(t=1Tαtht(x))

请添加图片描述
上面说到积弱成强,现在问题就是弱分类器也不是随便选的,如何找出合适的弱分类器进行组合?我先给出Adaboost分类器总体的详细步骤如下:
请添加图片描述

然后通过一个例子将整个过程进行阐述:

Initialization weight初始化

对样本点赋予合适的权重,由于刚开始我们将所有样本一视同仁,所以对所有样本点赋予相同的权重,计算公式为 D t = 1 ( i ) = ( 1 n ) D_{t=1}(i)=\left(\frac{1}{n} \right) Dt=1(i)=(n1).
请添加图片描述

Loop: Step 1a

开始循环找出要用来组合的weak classifier,为了化简,采用和坐标轴平行的parallel-axis weak classifier,每次挑选出「分类误差最小」的那个弱分类器 h t ( ) h_t() ht(),其方法就是穷举样本空间的所有弱分类器,选出分类误差最小的那个。

当有N个样本点,且样本空间是D维时,总共的和坐标轴平行的弱分类器parallel-axis classifier数目为: D ∗ 2 ∗ ( N − 1 ) D*2*(N-1) D2(N1)
请添加图片描述
分类误差 ε t \varepsilon_t εt的计算公式如下,直观理解就是将所有分类错误的点作为1,乘以这个点的权重 D t ( i ) D_t(i) Dt(i),除了第一轮Initilization weight初始化了权重,每轮都会对 D t ( i ) D_t(i) Dt(i)更新,计算公式如下:
ε t = ∑ i = 1 n D t ( i ) ∗ I [ h t ( x i ) ≠ y i ] \varepsilon_t=\sum_{i=1}^{n} D_t(i)*I[h_t(x_i)\neq y_i] εt=i=1nDt(i)I[ht(xi)=yi]
I [ h t ( x i ) ≠ y i ] = { 1 , i f [ h t ( x i ) ≠ y i ] 0 , o t h e r w i s e I[h_t(x_i)\neq y_i]= \begin{cases} 1, & if[h_t(x_i) \neq y_i] \\ 0, & otherwise \end{cases} I[ht(xi)=yi]={1,0,if[ht(xi)=yi]otherwise

Loop: Step 1b

在Step 1a中找到当前第 t t t轮的最小分类误差分类器以后,对应的其最小误差也被计算出来,在这里只需要记作:
ε t = ∑ i = 1 n D t ( i ) ∗ I [ h t ( x i ) ≠ y i ] \varepsilon_t=\sum_{i=1}^{n} D_t(i)*I[h_t(x_i)\neq y_i] εt=i=1nDt(i)I[ht(xi)=yi]
然后判断这个 ε t \varepsilon_t εt是否小于0.5,如果是的话则进行下一轮,继续找分类器,如果不是的话,说明连最好的也不能满足,找不到更好的分类器了,直接停止。
ε t < 0.5 \varepsilon_t \lt 0.5 εt<0.5
请添加图片描述

Loop: Step 2

计算刚刚选出来的弱分类器的权重 α t \alpha_t αt,也就是最后要进行组合相加时乘在每个weak classifier前的系数,也可以称其为置信系数confidence value:
α t = 1 2 l n 1 − ε t ε t \alpha_t = \frac{1}{2} ln \frac{1-\varepsilon_t}{\varepsilon_t} αt=21lnεt1εt
请添加图片描述

Loop: Step 3

上面第 t t t轮选出来了一个分类器,接下来更新 t + 1 t+1 t+1轮,也就是下一轮中每个样本点的权重normalized weights D t + 1 ( i ) D_{t+1}(i) Dt+1(i),更新系数为 e x p ( − α t y i h t ( x i ) ) exp(-\alpha_ty_ih_t(x_i)) exp(αtyiht(xi)),同时还要标准化,公式如下图:

直观来看,就是让当前轮中,前一轮第 t t t轮错误分类点的权重 D t ( i ) D_{t}(i) Dt(i)更高,正确分类点的权重 D t ( i ) D_{t}(i) Dt(i)更低,好让本轮更加关注被错误分类的点。其中 y i h t ( x i ) y_ih_t(x_i) yiht(xi)直接实现了错误分类时记-1,正确分类时记1。 e x p ( − α t y i h t ( x i ) ) exp(-\alpha_ty_ih_t(x_i)) exp(αtyiht(xi))正确分类时,幂次为负,结果小于1.
请添加图片描述
其中需要先算出标准化系数 Z t Z_t Zt,相当于将所有正确分类样本和错误分类样本乘以权重的值求和算出来,这里和原先样本标签为+1,-1已经没关系了,而是看它是否和标签正确分类了。
请添加图片描述

接下来就是更新下一轮所有点的权重 D t + 1 ( i ) D_{t+1}(i) Dt+1(i)

请添加图片描述

Loop: Step 4

计算当前轮次下分类器的分类误差 C E t CE_t CEt,其意义是,到当前为止的弱分类器组合的「强分类器」,将总体样本分类错误的比例,当其为0的时候,则停止找weak classifier的循环:
C E t = s u m ( ∣ y i − H t ( x ) ∣ ) / N CE_t=sum(|y_i-H_t(x)|)/N CEt=sum(yiHt(x))/N
H t ( x ) = s i g n ( ∑ τ = 1 τ = t α τ h τ ( x ) ) H_t(x)=sign( \sum_{\tau=1}^{\tau=t}\alpha_\tau h_\tau(x)) Ht(x)=sign(τ=1τ=tατhτ(x))
本例子中还需要继续训练两轮, t = 2 , t = 3 t=2,t=3 t=2,t=3
请添加图片描述
请添加图片描述

Final Classifier

将上面3轮得到的弱分类器进行组合,得到强分类器,可以通过这个组合预测结果,大功告成。
H ( x ) = s i g n ( ∑ t = 1 T α t h t ( x ) ) H(x)=sign( \sum_{t=1}^T\alpha_t h_t(x)) H(x)=sign(t=1Tαtht(x))

请添加图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网民工蒋大钊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值