• 机器学习技法笔记-Lecture 8 Adaptive boosting


    Adaboost算法

    通过对上一轮g犯的错误的强调,来学习下一轮的g,得到多个差异的g后进行线性组合得到G。

    假设对不同的点,犯得错有不同的权重,最后的Ein是一个带权重的err求和

    上一节讲到的bagging,如果同一个样本点被重复抽样,其实也就是有个类似u_n的权重。

    现在通过类似的思路,用re-weight来给每个样本赋权重,目的是得到不同的g。

    在第t轮,每个样本点有权重u_n(t),最小化Ein得到 g_t。怎么样才能让g_t 与下一轮的 g_(t+1) diverse 呢?

    首先我们肯定的是g_(t+1)在u_n(t+1)下是表现最好的,如果g_t在这个下面表现不好,那么它俩就是diverse的。

    接下来的问题就是 如何构造 u_n(t+1) 让 它俩diverse?  一个思路是 在 u_(t+1) 下,g_t的表现基本等于乱猜

    对上式进行改写,就是让 方块和圆圈相等

    比如在 t 轮的时候,7337个样本(就是u_n(t)的求和,想象成re-sample)上g_t有1126个判错了,其余判正确了,那么在下一轮,对1126错的权重进行放大,其余的缩小。epsilon_t是当前犯错的比例,对错误的样本,乘以(1-epsilon_t)。

    注意这里的错误率是在u_n上的平均

    做一个scale,当我们的分类器比随机好一点时,在下一轮错误的点就会被放大

    初始的u可以选择1/N. 得到一系列g后,如何将它们融合为G呢?最好不要uniform,可以使用linear或non-linear的方式。

    下面是标准的 Adaboost算法,提供了一种融合为G的方式,使用linear aggregation,能够在得到每一个g的时候就得到它的aggregation权重。权重与g的成正比。因为g越好,菱形越大,那么也希望融合中这个g的重要性较大。

    注意到这里讲到的都是classification。

    另外算法A找到的g是使带有权重的Ein最小,而不是优化epsilon(对u取了平均的Ein)。(但是u其实是相当于已知的,求和是一个常数,所以最小化Ein和最小化epsilon是不是其实没有差别?)

    又想了一下,Ein是error的衡量,平均后epsilon是error rate的衡量。一直以来算法A都是对error最小化来求g,没毛病。这里可以看做是对re-sample的data的error求最小。

    Adaboost的理论保证

    只要每个g都比随机的好一点,那么最后Adaboost的结果就是好的。

    例子中adaboost用来做人脸识别还能起到特征选择的作用

  • 相关阅读:
    表单自动填充autocomplete的兼容性方案
    函数的默认参数值
    利用zookeeper搭建hadoop HA集群
    zookeeper设置开机启动项
    zookeeper集群挂了的恢复流程
    zookeeper集群搭建
    docker 安装ElasticSearch的中文分词器IK
    [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    把mysql服务设置开机启动项
    docker-compose的使用
  • 原文地址:https://www.cnblogs.com/akanecode/p/7055158.html
Copyright © 2020-2023  润新知