zoukankan      html  css  js  c++  java
  • AdaBoost算法

    本篇笔记是针对二分类的AdaBoost算法总结。主要参考林轩田老师的《机器学习技法》课程,以及李航博士的《统计学习方法》第二版。没错,第二版已经出版了,快去买啊!

    符号声明

    • (D = {(x_1, y_1), (x_2, y_2), (x_3, y_3), cdots, (x_N, y_N)}) - 用于训练的数据集,(x_n)为实例,(y_n)为对应的标签{-1, +1}
    • (T) - 需要训练的基分类器总个数
    • ({g_t}) - 第t轮训练出的基分类器,(t = 1, 2, 3, ..., T)
    • (u^{(t)} = {u_{1}^{(t)}, u_{2}^{(t)}, u_{3}^{(t)}, cdots, u_{N}^{(t)}}) - 第(t)轮的样本权重
    • (G) - 最终的强分类器
    • (left[left[ cdot ight] ight]) - 双中括号内的·若为真,则(left[left[ cdot ight] ight]=1),否则(left[left[ cdot ight] ight]=0)

    算法

    AdaBoost-w600

    为什么这样更新权重

    集成学习的思想主要体现在“多个弱分类器通过某种方式组合得到最终的强分类器”。要想最后的强分类器有好的性能,则需要保证每个弱分类器尽可能的不同。

    那么如何能让每个分类器尽量的不同?

    (t)轮训练的基分类器是({g_t}),然后根据({g_t})在带有权重({{u_n}^{(t)}})的训练集(D)上的表现更新权重至({{u_n}^{(t+1)}})。倘若上一轮的({g_t})在下一轮权重为({{u_n}^{(t+1)}})的训练集(D)上表现得不好,则可以认为({g_t})({g_{t+1}})比较的不同。

    也就是说,如果满足:$$
    egin{equation}
    frac{sum_{n=1}^{N} u_{n}^{(t+1)}left[left[y_{n} eq g_{t}left(mathbf{x}{n} ight) ight] ight]}{sum{n=1}^{N} u_{n}^{(t+1)}}=frac{1}{2}
    end{equation}

    [ $(1)$说明${g_t}$在第$t+1$轮的训练集上表现得就像随机乱猜一样,是$frac{1}{2}$的概率。而在该轮训练集上经过训练后确定下来的${g_{t+1}}$应该是性能比较好的,所以可以说${g_t}$和${g_{t+1}}$是比较不同的。 **那要如何更新第$t$轮的权重能满足$(1)$?** 显然,有]

    egin{equation}
    sum_{n=1}^{N} u_{n}^{(t+1)}left[left[y_{n} eq g_{t}left(mathbf{x}{n} ight) ight] ight] + sum{n=1}^{N} u_{n}^{(t+1)}left[left[y_{n} = g_{t}left(mathbf{x}{n} ight) ight] ight] = sum{n=1}^{N} {u_{n}^{(t+1)}}
    end{equation}

    [ 所以,$(1)$可以写为]

    egin{equation}
    frac{sum_{n=1}^{N} u_{n}^{(t+1)}left[left[y_{n} eq g_{t}left(mathbf{x}{n} ight) ight] ight]}{sum{n=1}^{N} u_{n}^{(t+1)}left[left[y_{n} eq g_{t}left(mathbf{x}{n} ight) ight] ight] + sum{n=1}^{N} u_{n}^{(t+1)}left[left[y_{n} = g_{t}left(mathbf{x}_{n} ight) ight] ight]}=frac{1}{2}
    end{equation}

    [ 为了最后得到的概率为$frac{1}{2}$,那么需要]

    egin{equation}
    sum_{n=1}^{N} u_{n}^{(t+1)}left[left[y_{n} eq g_{t}left(mathbf{x}{n} ight) ight] ight] = sum{n=1}^{N} u_{n}^{(t+1)}left[left[y_{n} = g_{t}left(mathbf{x}_{n} ight) ight] ight]
    end{equation}

    [ 那么更新的做法可以如下所示: ![更新权重-w500](https://img2018.cnblogs.com/blog/1531067/201905/1531067-20190515213116091-29032738.png) 最终将两者一整合,就能得到每次更新的方式,如同上述算法所述。 ### 为什么选择$alpha_t$作为基分类器前的权重 - 待编辑]

  • 相关阅读:
    win7下的vxworks总结
    ubuntu 无法获得锁 /var/lib/dpkg/lock
    项目中用到了的一些批处理文件
    win7下安装 WINDRIVER.TORNADO.V2.2.FOR.ARM
    使用opencv统计视频库的总时长
    January 05th, 2018 Week 01st Friday
    January 04th, 2018 Week 01st Thursday
    January 03rd, 2018 Week 01st Wednesday
    January 02nd, 2018 Week 01st Tuesday
    January 01st, 2018 Week 01st Monday
  • 原文地址:https://www.cnblogs.com/shayue/p/AdaBoost-suan-fa.html
Copyright © 2011-2022 走看看