机器学习读书笔记(集成学习Boosting方法)

你说这个A分类方法好,我说那个B分类方法好。干脆我们整合起来一起使用吧!!!(不是所有整合一定好,后面会介绍)

有些人啊,就喜欢辩论。总坚持自己的分类器特别好,但事实上。你所谓的“好”仅仅是在你所接触的数据集上。在持续辩论达到白热化的时候,一个睡觉的傻子喊了一句话:"瞎吵吵什么?你们不会将这几个玩意整合在一起啊!!!"
历史上,Kearn和Valiant提出“强可学习”和“弱可学习”的概念。然后Schapire证明了,在PAC框架上,强学习弱学习等价。什么意思?就是我们通过一个套路可以将“弱学习”搞成“强学习”。这个“套路”可以是提升算法。如果是个体学习器存在强依赖关系,必须串行序列化可用boosting;如果是个体学习器不存在强依赖关系,可以并行序列化可用Bagging和随机森林。

Boosting

李航教授在《统计学习方法》中进行了详细介绍,下面我仅做誊抄,翻译,笔记:

AdaBoost算法
Boosting一族算法都是提升算法。先从初始训练集中训练一个基训练。AdaBoost算法就是最典型的一个。

  • 核心思想:提高前一轮错误分类样本的权值。降低那些那些正确分类样本权值。为什么?这就像一个社会。为了社会和谐一定要让不同于正常行为的少数群体拥有超出一般正常人的话语权,使分类器这个立法者在第二轮立法时,对这部分人有所考虑,不会被遗忘。
  • 输入:训练数据集T;弱学习算法
    T={(x1,y1),(x2,y2),(x3,y3),...,(xN,yN)},xiXRn,yiY{1,+1}
  • 输出:
    最终分类器G(x)
  • 步骤:

    1. 初始化训练数据的权值分布(这一步真的仅仅为了获得初始化向量,以便后面做迭代操作。根据后面算法可知,D的值各数据在训练数据集的权重。这种直接地权值绝对平均主义,虽然做到了公平,但效果往往很差准确。)
      Di=(w11,...,w1i,...,w1N),w1i=1N,i=1,2,...,N
    2. 对m=1,2,…,M(M代表循环M次,或称结合M个基函数,也可以设置误差阈值控制循环而不用M)

      • (a)(模型模拟步)根据上面D的权重做出模型整合,然后用这个整合出来的模型测试数据集。算法上解释就是,使用具有权值分布 Dm 的训练数据集学习,得到基本分类器:
        Gm(x):X{1,+1}
      • (b) (误差统计步)我们来计算下模型模拟结果与实际结果的误差吧!计算 Gm(x) 在训练集上的分布误差率(就是计算预测结果与实际结果不相等的样本数)
        em=P(Gm(xi)yi)=i=1NwmiI(Gm(xi)yi)
      • (c) (模型权重计算步,且为下一步提供中间系数)计算 Gm(x) 的系数权重(这里是自然对数)这个公式是经过推倒的,李航的《统计学习方法》8.3有详细记载,周志华《机器学习》174,175同样有推导。
        注意:这里计算的是模型G(m)的权重,不是1中数据集中单一数据的权重
        αm=12log1emem
      • (d) (数据权重更新步)更新训练数据集的权值分布,使误差越少权重越大
        Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)wm+1,i=wmiZmexp(αmyiGm(xi)),i=1,2,..,N

        这里, Zm 是规范因子,它使得 Dm+1 成为一个概率分布
        Zm=i=1Nwmiexp(αmyiGm(xi))
    3. 构建基本分类器的线性组合

      f(x)=m=1MαmGm(x)G(x)=sign(f(x))=sign(m=1MαmGm(x))

例:

序号 1 2 3 4 5 6 7 8 9 10
x 0 1 2 3 4 5 6 7 8 9
y 1 1 1 -1 -1 -1 1 1 1 -1

具体解答请看书。针对于算法

  1. 先找到阈值v=2.5时误差率最低,得 G1(x) :大于等于3全是-1,小于3全是1;
  2. 算出上面那个模型的误差率e,然后算出算法2(c)的α,2(d)的w
  3. 然后循环算一算v = 8.5了,得 G2(x) :大于等于9全是-1,小于9全是1
  4. 算出上面那个模型的误差率e,然后算出算法2(c)的α,2(d)的w
  5. 然后循环算一算v = 5.5了,得 G1(3) :大于等于6全是1,小于6全是-1
  6. 算出上面那个模型的误差率e(符合规定),然后算出算法2(c)的α,2(d)的w

最后得
G(x)=sign[0.4236G1(x)+0.6496G2(x)+0.7514G3(x)]

Boosting关注降低偏差,训练集测试集的误差可以被多函数整合控制得很小,但太多的模型整合会产生过拟合现象。如果原来分类效果已经很好,再做无谓的提升,效果可能变差。标准的AdaBoost只适用于二分类。由于其二分的特性,结合决策树的提升树模型效果很好。

推荐《机器学习实战》的开源代码
https://www.manning.com/books/machine-learning-in-action


本节内容来自《机器学习》周志华,《统计学习方法》李航,《机器学习实战》Peter Harrington

你可能感兴趣的:(机器学习)