[关闭]
@xuchongfeng 2018-01-13T04:39:36.000000Z 字数 2860 阅读 112

提升方法

机器学习 提升方法


主要思想是通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。

adaboost算法
一个概念,如果存在一个多项式学习算法可以学习它,并且正确率很高,那么就称这个概念是强可学习的
如果不存在,那么这个概念就是弱可学习的。
强可学习性和弱可学习性等价。

假设给定二类分类的训练数据集
输入:


输出:最终分类器
1) 初始化训练数据的权值分别

2) 对
- 使用具有权值分布的训练数据集学习, 得到基本分类器

3) 计算在训练集上的分类误差率

4) 计算的系数

  1. x = np.arange(0, 1, 0.001)
  2. plt.plot(x, (np.log(1-x) - np.log(x))/2)
  3. plt.plot(x, np.zeros(x.shape))
  4. plt.xlabel("em")
  5. plt.ylabel("am")

image_1c3l6ip9dn1pt0a1cdbeb61flk1m.png-11kB
5) 更新训练数据集的权值分布




6) 构建基本分类器的线性组合

分析:


被错误分类的样例在下一轮分类器中权值会被放大。

AdaBoost算法的训练误差分析

定理8.1
AdaBoost算法最终分类器的训练误差界为

定理8.2
二类分类问题AdaBoost的训练误差界

AdaBoost算法的解释

可认为AdaBoost算法是模型为加法模型,损失函数为指数函数,学习函数为前向分布算法时的二类分类学习方法。

考虑加法模型:


其中,为基函数,为基函数的参数,为基函数的系数;

经验风险极小化,即损失函数极小化


那么每一步只需要优化如下损失函数

前向分步算法

输入:训练数据集;损失函数;基函数集
输出:加法模型
1) 初始化
2) 对
a)极小化损失函数

得到参数
b) 更新

3) 得到加法模型

前向分布算法与adaboost

AdaBoost算法是前向分布加法算法的特例,模型是由基本分类器组成的加法模型,损失函数是指数函数。

提升树

提升树是以分类树或回归树为基本分类器的提升方法。
提升树可以表示为决策树的加法模型

提升树算法

提升树算法采用前向分步算法。



已知一个训练数据集,回归树是将输入空间划分为个互不相交的区域,并且在每个区域上确定输出的常量,那么树可表示为

当采用评分误差损失函数时




是当前模型拟合数据的残差residual。那么对回归问题的提升树算法来说,只需简单的拟合当前模型的残差。

回归问题的提升树算法
输入:数据集
输出:提升树
1) 初始化
2) 对
a) 计算残差
b) 拟合残差,学习一个回归树,得到
c) 更新
3) 得到提升树

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注