集成方法之Boosting提升方法:更像现实中实际学习的模型

本文已收录于 机器学习笔记 系列,共计 20 篇,本篇是第 9 篇

前序课程:集成方法

提升方法:将弱的可学习算法提升为强的可学习算法。其中提升方法是集成学习中的一种。

 

AdaBoost算法

准确的来说Adaboost是boosting的其中一种方法。采用了exponential loss function(其实就是用指数的权重)。
AdaBoost是提升法的一种,叫做梯度提升树。

改进:赋予权重。

那么都哪些东西需要权重呢?

答:相较于Bagging算法,Boosting算法根据整体数据上分类效果给予了不同臭皮匠不同的权重。根据单个数据上分类效果给予单个数据不同的权重

为什么要赋予不同模型权重?

机器学习是一个前期通过不断学习、不断的改进,得到的一个遇到新的数据能够做出决策的机器。

举个例子:就好像一个学习去刷一套练习题一样,我们可以试想一下不同的臭皮匠就类似于一个班级上不同的学生,他们对同一套题目都进行了训练,经过验证最终A同学得了100分、B同学80分、C同学60分。我们认为A同学学习很好,C同学最差。现在又一场比赛需要三位同学应征出赛,在赛场上我们可以给予三位同学不同的权重。

我们给不同模型不同的权重可以使得学习的很好的臭皮匠在决策的时候起到更为重要的作用,而较差的臭皮匠起到弱的作用。误差大,分类器的权重低。(不需要傻子投票)

为什么要将单个数据赋予权重?

同样我们以同学参加考试为例,针对不同的题目,同学会有所感知,认为哪些题目很简单,so easy,而那些题目非常难。针对很简单的题目我们给予一个较弱的权重,针对一个很难的题目我们给予一个较大的权重让后续的臭皮匠多多注意这些难的数据点。——有点像我们上学的时候的错题本,如果做过一个题很难,我们就多重视下这个题目。

算法流程

基分类器

在集成算法中,虽然大多都是通过树模型来实现的。但是也并不是说不能用逻辑回归等其他模型作为基分类器。下面Adaboost算法中,为了简单化,我们使用简单二分类器作为基分类器,做一个简单的Demo。在实际应用中,可以使用决策树、逻辑回归等等其他机器学习分类算法作为基分类器。

算法步骤

  1. 初始化/更新当前权值分布
  2. 训练当前基分类器
  3. 计算当前基分类器Gm(x)在训练集上的误差率
  4. 计算Gm(x)的系数
  5. 更新到新的模型中
  6. 判断是否可以退出循环

Ps:公式(8.2)中log的底数为e。即:αm=12ln(1emem)

公式(8.3)和(8.4)可以改写成下面的形式:

wm+1,i={wmiZmeαm,G=yiwmiZmeαm,G!=yi

解释上面的公式:臭皮匠预测出来的标签与原标签相符则乘积为1,如果不相符则乘积为-1。

举个例子

现有训练数据表:

初始化当前权值分布

训练当前基分类器

这里我们使用最简单的二分类器为示例。在实际的应用中可以使用决策树、逻辑斯特回归等等基分类器。


即x大于2.5,这个二分类器认为是负例、小于2.5的认为是正例。

计算误差率

计算G1(x)系数

αm=12ln(1emem)

em=0.3时候,对应的αm为图上x = 0.3处值对应的y轴坐标:

G1(x)系数αm=12ln(1emem)=12ln(10.30.3)=0.4236

更新权值到新的模型中

现在,m=1,根据公式(8.4) w2i=w1iZ1eα1yiG1(xi),i=1,2,..,10

Ps:Z是一个规范化因子,可以使10个权重统一到0-1范围内,同时使得他们相加等于1。

为了便于理解,我们先不进行规范化来计算10个臭皮匠的权值分布。

i从1至10,依此计算出下列结果:

w21=w11eα1y1G1(x2)=0.1×e0.4236×1×1=0.1×0.654685703822513875565141297050020.0655

w22=w12eα1y2G1(x2)=0.1×e0.4236×1×1=0.1×0.654685703822513875565141297050020.0655

w23=w13eα1y3G1(x3)=0.1×e0.4236×1×1=0.1×0.654685703822513875565141297050020.0655

w24=w14eα1y4G1(x4)=0.1×e0.4236×1×1=0.1×0.654685703822513875565141297050020.0655

w25=w15eα1y5G1(x5)=0.1×e0.4236×1×1=0.1×0.654685703822513875565141297050020.0655

w26=w16eα1y6G1(x6)=0.1×e0.4236×1×1=0.1×0.654685703822513875565141297050020.0655

w27=w17eα1y7G1(x7)=0.1×e0.4236×1×1=0.1×1.52745049137517331213986624717810.1527

w28=w18eα1y8G1(x8)=0.1×e0.4236×1×1=0.1×1.52745049137517331213986624717810.1527

w29=w19eα1y9G1(x9)=0.1×e0.4236×1×1=0.1×1.52745049137517331213986624717810.1527

w210=w110eα1y10G1(x10)=0.1×e0.4236×1×1=0.1×0.654685703822513875565141297050020.0655

现在计算出了权值分布,下一步是将其规范化。

为什么要规范化?

 

如何规范化?

计算规范化因子,见公式(8.5)。

Z1=i=1Nw1ie(α1yiG1(x))

=0.1×e(0.4236×1×1)+1×e(0.4236×1×1)++1×e(0.4236×1×1)

=w21+w22++w210

=0.0655+0.0655++0.0655

=0.9166

Ps:其实就是将上面我们计算出的w21~w210相加后得到的。

然后再上面的每个w21~w210各自除以Z1得到规范化后的值:

接下来另m=2、m=3 … 循环计算。直到遇到终止条件。

 

终止条件

  1. 可以从分类器是否达到个数作为终止条件。
  2. 总分类器误差率是否达到设定精度。
  3. 误分类点个数达到设定条件(例如要求误分类点个数为0)。

最终得到的分类器为:

 

图解

 

参考文献:

《统计学习方法》李航

https://www.bilibili.com/video/BV1x44y1r7Zc?p=3

https://www.bilibili.com/video/BV1i4411G7Xv?p=8

作者: 高志远

高志远,24岁,男生

发表评论

邮箱地址不会被公开。