Bagging和Boosting的区别
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的.
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化.而权值是根据上一轮的分类结果进行调整.
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大.
3)预测函数:
Bagging:所有预测函数的权重相等.
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重.
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果
AdaBoost算法
算法1(AdaBoost)
输入:训练数据集
T={(x1,y1),(x2,y2),...,(xN,yN)}
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
}
,其中
xi∈χ⊆Rn
x
i
∈
χ
⊆
R
n
,
yi∈y={−1,+1}
y
i
∈
y
=
{
−
1
,
+
1
}
;弱学习算法;
输出:最终分类器
G(x)
G
(
x
)
。
(1)初始化训练数据的权值分布
(2)对 m=1,2,...,M m = 1 , 2 , . . . , M
(a)使用具有权值分布 Dm D m 的训练数据集学习,得到基本分类器
(b)计算 Gm(x) G m ( x ) 在训练数据集上的分类误差率
(c)计算 Gm(x) G m ( x ) 的系数
(d)更新训练数据集的权值分布
(3)构建基本分类器的线性组合
定理8.1 (AdaBoost的训练误差界) AdaBoost算法最终分类器的训练误差界为
前向分布算法
算法2(前向分布算法)
输入:训练数据集
T={(x1,y1),(x2,y2),...,(xN,yN)}
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
}
;损失函数
L(y,f(x))
L
(
y
,
f
(
x
)
)
;基函数集
b(x;γ)
b
(
x
;
γ
)
;
输出:加法模型
f(x)
f
(
x
)
(1)初始化
f0(x)=0
f
0
(
x
)
=
0
(2)对
m=1,2,...,M
m
=
1
,
2
,
.
.
.
,
M
(a)极小化损失函数
(b)更新
(3)得到加法模型
这样,前向分步算法将同时求解从 m=1 m = 1 到 M M 所有参数的优化问题简化为逐次求解各个 βm,γm β m , γ m 的优化问题.
提升树
提升树是以分类树或回归树为基本分类器的提升方法。
提升树模型
提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树(boosting tree)。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。提升树模型可以表示为决策树的加法模型:
算法3 (回归问题的提升树算法)
输入:训练数据集,其中 xi∈χ⊆Rn x i ∈ χ ⊆ R n , yi∈y⊆R y i ∈ y ⊆ R ;
输出:提升树 fM(x) f M ( x )
(1)初始化 f0(x)=0 f 0 ( x ) = 0
(2)对 m=1,2,...,M m = 1 , 2 , . . . , M
(a)计算残差
(b)拟合残差
(c)更新 fm(x)=fm−1(x)+T(x;Θm) f m ( x ) = f m − 1 ( x ) + T ( x ; Θ m )
(3)得到回归问题提升树
梯度提升
提升树利用加法模型与前向分步算法实现学习的优化过程。当损失函数是平方损失和指数损失函数时,每一步优化是很简单的,但对于一般损失函数而言,可以利用梯度提升算法(gradient boosting)。这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值
算法4(梯度提升算法)
输入:训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)} T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } ,其中 xi∈χ⊆Rn x i ∈ χ ⊆ R n , yi∈y⊆R y i ∈ y ⊆ R ;损失函数L(y,f(x));
输出:回归树 f^(x) f ^ ( x ) .
(1) 初始化
(2)对 m=1,2,...,M m = 1 , 2 , . . . , M
(a)对 i=1,2,...,N i = 1 , 2 , . . . , N ,计算
(b)对 rmi r m i 拟合一个回归树,得到第 m m 颗树的叶结点区域
(c)对 j=1,2,...,J j = 1 , 2 , . . . , J ,计算
(d)更新 fm(x)=fm−1(x)+∑Jj=1cmjI(X∈Rmj) f m ( x ) = f m − 1 ( x ) + ∑ j = 1 J c m j I ( X ∈ R m j )
(3)得到回归树
算法第1步初始化,估计使损失函数极小化的常数值,它是只有一个根结点的树。第2(a)步计算损失函数的负梯度在当前模型的值,将它作为残差的估计。对于平方损失函数,它就是通常所说的残差;对于一般损失函数,它就是残差的近似值。第2(b)估计回归树叶结点区域,以拟合残差的近似值。第2(c)步更新回归树。第3步得到输出的最终模型 f^(x) f ^ ( x )