##定义
提升方法是一种常用的统计学习方法,应用广泛有效。基本思想为:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独判断的好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。
1.1此章主要包括三个主要算法:AdaBoost算法,提升树算法与GBDT算法。
1.1.1 AdaBoost算法
假设有一个二分类的训练数据集
T = {(x1,y1),(x2,y2),…,(xN,yN)}
其中,每个样本点由实例与标记组成。从训练数据中学习一系列若分类器或基本分类器,并将这些弱分类器线性组合成为一个强分类器。
算法(AdaBoost算法)
输入:训练集数据***T*** = {(x1,y1),(x2,y2),…,(xN,yN)},弱学习算法;
输出:最终分类器G(x)。
(1)初始化训练数据的权值分布
D1 = (ω11,…,ω1i,…,ω1N), ω1i = 1/N, i = 1,2,…,N(此处初始化第一轮权值为1/N,之后每次迭代会变化)
(2)对m = 1,2,…,M(此处m为迭代的轮数 )
(a)使用具有权值分布Dm的训练数据集学习,得到基本分类器
Gm(x):X标签为{-1,+1}
(b)计算Gm(x)在训练集上的分类误差率:
(c)计算Gm(x)的系数
这里的对数是自然对数。
(d)更新训练数据集的权值分布
这里,Zm室规范化因子
它使Dm+1成为一个概率分布。
(3)构建基本分类器的线性组合
举个栗子
有下面数据集
用AdaBoost算法学习一个强分类器。
解:
初始化数据权值分布:
D1 = (ω11,ω12,…,ω110)
ω1i = 0.1, i = 1,2,…,10
对m = 1,
(a)在权值分布为D1的训练数据上,阈值v取2.5时分类误差率最低,故基本分类器为
(b)G1(x)在训练数据集上的误差率e1 = P(G1(xi)!=yi) = 0.3。
©计算G1(x)的系数:α1 = 1/2log(1-e1)/e1 = 0.4236。
(d)更新训练数据的权值分布:
D2 = (ω21,…,ω2i,…,ω210)
ω2i = ω1i/Z1exp(-α1yiG1(xi)), i = 1,2,…,10
D2 = (0.07143,0.07143,0.07143,0.07143,0.07143,0.07143,0.16667,0.16667,0.16667,0.07143)
继续算ω22,到ω210即可得到D2集合
f1(x) = 0.4236G1(x)
分类器sign[f1(x)]在训练数据集上有3个误分类点。
对m = 2,
(a)在权值分布为D2的训练数据上,阈值v是8.5时分类误差率最低,基本分类器为
(b)G2(x)在训练数据集上的误差率e2 = 0.2143.
©计算α2 = 0.6496.
(d)更新训练数据权值分布:
D3 = (0.0455,0.0455,0.0455,0.1667,0.1667,0.1667,0.1060,0.1060,0.1060,0.0455)
f2(x) = 0.4236G1(x) + 0.6496G2(x)
分类器sign[f2(x)]在训练数据集上有3个误分类点。
对m = 3,
(a)在权值分布为D3的训练数据集上,阈值v是5.5时分类误差率最低,基本分类器为
(b)G3(x)在训练样本集上的误差率e3 = 0.1820。
©计算α3 = 0.7514.
(d)更新训练数据的权值分布:
D4 = (0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125)
于是得到:
f3(x) = 0.4326G1(x)+0.6496G2(x)+0.7514G3(x)
分类器sign[f3(x)]在训练数据集上误分类点个数为0.
于是最终分类器为
G(x) = sign[f3(x)] = sign[0.4236G1(x)] + 0.6496G2(x) +0.7514G3(x)]
有了这个之后如何去用:
则:可以判断输出是否>0判断输出值。