Boost-Adaboost

我们知道boost系列是强依赖关系, 有这个依赖, 各个学习器之间还有这些问题没有解决:

  • 如何计算学习的误差率
  • 如何得到弱学习器的权重
  • 如何更新样本权重?
  • 使用何种结合策略?

Adaboost

假定这里给一个二分类的数据集:

我们先来看一下Adaboost的步骤

  1. 输入数据T
  2. 初始化训练数据的权重分布:
  3. 对 :
  • 使用具有权值分布的训练集进行学习, 得到基本的分类器:
  • 计算在训练数据集上的误差率
  • 计算的系数:
  • 更新训练集的权重分布:


    此处是规范化因子:
  1. 构建基本的纤性分类器组合:

Adaboost的损失函数

Adaboost损失函数采用指数损失, 指数损失比较少见

下面来推导一下其损失函数, 该算法为加法模型, 学习算法为前向分步算法, 前向分步算法其实就是: 通过前一轮学习器的学习, 来更新后一个弱学习器的训练集权重,按照上面的定义, 各轮学习器为:


显然, 是成立的
利用前向分布, 我们可以得到每个新的子分类器的损失函数为:

令,它的值不依赖于或者,仅依赖于,
将其代入损失函数得到:

我们知道其实是一个输出, 我们可以用一个指示函数代替, 那么我们得到

我们对求偏导:

最终, 求实我们的分类误差率
上面提到的四个问题, 基本上都已经解决了, 那么Adaboost如何处理回归问题?
回归问题, 基本上只用修改误差就可以了

  1. 首先我们计算其在训练集上的最大误差
  2. 计算每个样本上的误差:
  • 如果是线性误差:
  • 平凡误差: 略
  1. 计算误差率

    其他步骤都是一样的

Adaboost正则化

为了防止Adaboost过拟合,我们通常也会加入正则化项:
没有加正则化:

加了正则化v:

的取值范围在0~1之间, 更小的代表我们需要更多的迭代次数

总结

理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。
Adaboost的主要优点有

  • Adaboost作为分类器时,分类精度很高
  • 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
  • 作为简单的二元分类器时,构造简单,结果可理解。
  • 不容易发生过拟合
    Adaboost的主要缺点有
  • 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性

你可能感兴趣的:(Boost-Adaboost)