标签:
提升(boosting)方法是一种常用的统计学习方法。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能。
Valiant是哈佛大学的计算机科学家,他并不是唯一一位认为大脑与计算机之间基本等价的科学家。但是,他是最早正式研究二者关系的人之一:1984年,他的「可能近似正确模型 (probably approximately correct,PAC)」从数学上定义了一个机械系统在什么样的条件下可以被看做能够「学习」信息。由于Valiant的贡献有助于机器学习理论的进步,因此他赢得了图灵奖——这个奖通常被称为计算机界的诺贝尔奖。
在概率近似正确的框架(PAC)中
强可学习:
对于一个概念,如果存在一个多项式的学习算法能够学习它,且学习的正确率很高
弱可学习:
对于一个概念,如果存在一个多项式的学习算法能够学习它,且学习的正确率仅比随机猜测略好
一个概念是强可学习的充要条件是这个概念是弱可学习的
Adaboost就是将弱转化为强的算法
采取加权多数表决的方法——
加大分类误差率小的弱分类器的权值,反之减少
算法:
输入:
输出:最终分类器
1)初始化权值分布
2)
(d)更新权值分布
这里,
3)构造基本分类器的线性组合
得到最终分类器
1)
下面,给定下列训练样本,请用AdaBoost算法学习一个强分类器。
求解过程:初始化训练数据的权值分布,令每个权值W1i = 1/N = 0.1,其中,N = 10,i = 1,2, …, 10,然后分别对于m = 1,2,3, …等值进行迭代。
迭代过程1:对于m=1,在权值分布为D1的训练数据上,阈值v取2.5时误差率最低,故基本分类器为:
从而可得G1(x)在训练数据集上的误差率e1=P(G1(xi)≠yi) = 0.3
然后计算G1的系数:
接着更新训练数据的权值分布:
最后得到各个数据的权值分布D2=(0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.1666, 0.1666, 0.1666, 0.0715),分类函数f1(x)=0.4236G1(x),故最终得到的分类器sign(f1(x))在训练数据集上有3个误分类点。
迭代过程2:对于m=2,在权值分布为D2的训练数据上,阈值v取8.5时误差率最低,故基本分类器为:
G2(x)在训练数据集上的误差率e2=P(G2(xi)≠yi) = 0.2143
计算G2的系数:
更新训练数据的权值分布:
D3=(0.0455, 0.0455, 0.0455, 0.1667, 0.1667, 0.01667, 0.1060, 0.1060, 0.1060, 0.0455)
f2(x)=0.4236G1(x) + 0.6496G2(x)
分类器sign(f2(x))在训练数据集上有3个误分类点。
迭代过程3:对于m=3,在权值分布为D3的训练数据上,阈值v取5.5时误差率最低,故基本分类器为:
G3(x)在训练数据集上的误差率e3=P(G3(xi)≠yi) = 0.1820
计算G3的系数:
更新训练数据的权值分布:
D4=(0.125, 0.125, 0.125, 0.102, 0.102, 0.102, 0.065, 0.065, 0.065, 0.125),f3(x)=0.4236G1(x) + 0.6496G2(x)+0.7514G3(x),分类器sign(f3(x))在训练数据集上有0个误分类点。
上述Adaboost算法对分类器阈值的选择是暴力搜索法
Adaboost最基本的性质是它能在学习过程中不断减少训练误差,即在训练数据集上的分类误差率
定理1:
Adaboost算法最终分类器的训练误差界为:
这个定理很有问题,我觉得应该这样!!
首先
其次
定理2:
二分类问题AdaBoost的训练误差界
这里,
推论:
如果存在
表明在此条件下AdaBoost的训练误差是以指数速率下降的!
AdaBoost算法不需要知道下界
可以认为AdaBoost算法是模型为加法模型、损失函数为指数函数、学习方法为前向分步算法时的二分类学习方法
考虑加法模型
损失函数
加法模型显然成为经验风险极小化即损失函数极小化问题:
通常这是个复杂的优化问题.前向分步算法的思想是:因为学习的是加法模型,如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数式,那么就能大大简化优化的复杂度.具体地:
算法
1)初始化
2)对
3)得到加法模型
可以由前向分布算法推导出AdaBoost
定理:AdaBoost算法是前向分步加法算法的特例!这时,模型由基本分类器组成的加法模型,损失函数是指数函数
思路:前向分步算法学习的是加法模型,当基函数为基本分类器时,该加法模型等价于AdaBoost的最终分类器
证明:
令
令
则
又可表示为
由
1)对
设
因
则
2)对
设
原式求导=0,得到:
2)最后对权值的更新
由
以及
得:
这与AdaBoost 算法权值的更新只相差规范因子,因而等价
我并不认为等价,由上述极小化求参数的放缩可以看出
提升树是以分类树或回归树为基本分类器的提升方法.提升书被认为是统计学习性能最好的方法之一
提升树模型:
其中,
回归树:
弱国讲输入控件
其中,
算法:
输入:
输出:
1)初始化f_0(x)=0
2)对m=1,2,…,M
3)得到回归问题提升树
例子:
容易看出,其实就是对残差进行迭代加法拟合
之前的阈值与此例的切分点,都采取的是暴力搜索法,我不太喜欢
提升树利用加法模型与前向分步算法实现学习的优化过程。损失函数是平方损失和指数损失时,每一步优化很简单。但对于一般损失函数而言,并非如此容易。对此,Freidman提出了梯度提升算法.这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值
作为回归问题提升树算法中残差的近似值,拟合一个回归树
算法:
输入:T和L
输出:回归树
1)初始化
c与上例一样,以训练误差最小进行暴力搜索法
2)对
一样的方法
3)得到回归树
损失函数的负梯度作为残差的估计,对于平方损失函数,它就是通常所说的残差,对于一般损失函数,它就是残差的近似值。
很奇怪
当
则
标签:
原文地址:http://blog.csdn.net/qq_20602929/article/details/51253454