一、Boosting
Boosting是一种解决欠拟合问题的算法,主要思想是随着学习的积累由弱到强。
1、AdaBoost的实现过程
-
初始化训练集数据权重,初始权重是相等的
-
通过这个学习器,计算错误率
-
计算这个学习器的投票权重
权重计算公式, ε t ε_t εt表示错误率,当错误率越高, α t α_t αt的值越小
α t = 1 2 l n ( 1 − ε t ε t ) α_t=\frac{1}{2}ln(\frac{1-ε_t}{ε_t}) αt=21ln(εt1−εt) -
对每个样本进行重新赋权
D t + 1 ( x ) = D t ( x ) Z t ∗ { e − α t 预测值等于真实值 e α t 预测值不等于真实值 D_{t+1}(x)=\frac{D_t(x)}{Z_t}* \begin{cases} e^{-α_t} & \text{预测值等于真实值} \\[2ex] e^{α_t} & \text{预测值不等于真实值} \\ \end{cases} Dt+1(x)=ZtDt(x)∗⎩ ⎨ ⎧e−αteαt预测值等于真实值预测值不等于真实值 -
重复1-4过程
-
对构建后的最后的学习器进行加权投票
H ( x ) = s i g n ( ∑ i = 1 m α i h i ( x ) ) H(x)=sign(\sum_{i=1}^{m}α_ih_i(x)) H(x)=sign(i=1∑mαihi(x))
二、GBDT
GBDT梯度提升决策树算法是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来作为最终的答案。
GBDT = 梯度下降+Boosting+决策树
1.案例
l
o
s
s
=
1
2
m
∑
i
=
1
m
(
y
−
y
’
)
2
loss=\frac{1}{2m}\sum_{i=1}^m(y-y^’)^2
loss=2m1i=1∑m(y−y’)2
l
o
s
s
d
y
’
=
−
1
m
∑
i
=
1
m
(
y
−
y
’
)
lossdy^’=-\frac{1}{m}\sum_{i=1}^m(y-y^’)
lossdy’=−m1i=1∑m(y−y’)
给出4个测试样本,通过年龄和身高特征预测第5个身高
编号 | 年龄 | 体重 | 身高 |
---|---|---|---|
1 | 5 | 20 | 1.1 |
2 | 7 | 30 | 1.3 |
3 | 21 | 70 | 1.7 |
4 | 30 | 60 | 1.8 |
5 | 25 | 65 | ? |
l
o
s
s
d
y
’
=
−
1
m
∑
i
=
1
m
(
y
−
y
’
)
=
−
1
4
(
1.1
−
y
’
)
−
1
4
(
1.3
−
y
’
)
−
1
4
(
1.7
−
y
’
)
−
1
4
(
1.8
−
y
’
)
lossdy^’=-\frac{1}{m}\sum_{i=1}^m(y-y^’)=-\frac{1}{4}(1.1-y^’)-\frac{1}{4}(1.3-y^’)-\frac{1}{4}(1.7-y^’)-\frac{1}{4}(1.8-y^’)
lossdy’=−m1i=1∑m(y−y’)=−41(1.1−y’)−41(1.3−y’)−41(1.7−y’)−41(1.8−y’)
=
1.1
+
1.3
+
1.7
+
1.8
4
−
y
’
=
0
=\frac{1.1+1.3+1.7+1.8}{4}-y^’=0
=41.1+1.3+1.7+1.8−y’=0
y
’
=
1.475
y’=1.475
y’=1.475
即
h
0
(
x
)
=
1.475
h_0(x)=1.475
h0(x)=1.475
求解划分点
真实身高 | 预测身高 | 误差值 |
---|---|---|
1.1 | 1.475 | -0.375 |
1.3 | 1.475 | -0.175 |
1.7 | 1.475 | 0.225 |
1.8 | 1.475 | 0.325 |
重构目标值,以误差值作为目标值重构样本
编号 | 年龄 | 体重 | 身高 |
---|---|---|---|
1 | 5 | 20 | -0.375 |
2 | 7 | 30 | -0.175 |
3 | 21 | 70 | 0.225 |
4 | 30 | 60 | 0.325 |
5 | 25 | 65 | ? |
纯度计算公式,以21为例
∑
i
=
1
m
(
y
−
均值
)
n
i
\frac{\sum_{i=1}^m(y-均值)}{n_i}
ni∑i=1m(y−均值)
(
−
0.375
+
0.275
)
+
(
−
0.175
+
0.275
)
2
=
0.01
\frac{(-0.375+0.275)+(-0.175+0.275)}{2}=0.01
2(−0.375+0.275)+(−0.175+0.275)=0.01
(
0.225
−
0.275
)
+
(
0.325
−
0.275
)
2
=
0.0025
\frac{(0.225-0.275)+(0.325-0.275)}{2}=0.0025
2(0.225−0.275)+(0.325−0.275)=0.0025
纯度
=
0.01
+
0.0025
=
0.0125
纯度=0.01+0.0025=0.0125
纯度=0.01+0.0025=0.0125
划分点 | 小于划分点 | 大于划分点 | 纯度 |
---|---|---|---|
年龄5 | 无 | 1,2,3,4 | 0.082 |
年龄7 | 1 | 2,3,4 | 0.047 |
年龄21 | 1,2 | 3,4 | 0.0125 |
年龄30 | 1,2,3 | 4 | 0.062 |
体重20 | 无 | 1,2,3,4 | 0.082 |
体重30 | 1 | 2,3,4 | 0.047 |
体重70 | 1,2 | 3,4 | 0.0125 |
年龄60 | 1,2 ,4 | 3 | 0.0867 |
找出纯度最小的特征值,然后通过调整好的目标值,即年龄21和体重70,通过年龄21进行划分。
求解
h
1
(
x
)
h_1(x)
h1(x)
1、年龄<21分支
(
−
0.375
−
y
’
)
+
(
−
0.175
−
y
’
)
2
=
0
\frac{(-0.375-y^’)+(-0.175-y’)}{2}=0
2(−0.375−y’)+(−0.175−y’)=0
y
’
=
−
0.275
y’=-0.275
y’=−0.275
2、年龄>=21分支
(
0.225
−
y
’
)
+
(
0.325
−
y
’
)
2
=
0
\frac{(0.225-y^’)+(0.325-y’)}{2}=0
2(0.225−y’)+(0.325−y’)=0
y
’
=
0.275
y’=0.275
y’=0.275
经过两步之后,此时
h
0
(
x
)
=
1.475
h_0(x)=1.475
h0(x)=1.475
h
1
(
x
)
=
{
−
0.275
年龄<21
0.275
年龄>=21
h_1(x)=\begin{cases} -0.275 & \text{年龄<21} \\[2ex] 0.275 & \text{年龄>=21} \\ \end{cases}
h1(x)=⎩
⎨
⎧−0.2750.275年龄<21年龄>=21
求解 h 2 ( x ) h_2(x) h2(x)
第一轮目标值 | 预测值 | 误差值 |
---|---|---|
-0.375 | -0.275 | -0.1 |
-0.175 | -0.275 | 0.1 |
0.225 | 0.275 | -0.05 |
0.325 | 0.275 | 0.05 |
重构目标值,以误差值作为目标值重构样本
编号 | 年龄 | 体重 | 身高 |
---|---|---|---|
1 | 5 | 20 | -0.1 |
2 | 7 | 30 | 0.1 |
3 | 21 | 70 | -0.05 |
4 | 30 | 60 | 0.05 |
5 | 25 | 65 | ? |
重复计算纯度,经计算以体重为30的纯度最低
h 2 ( x ) = { − 0.1 体重<30 0.03 体重>=30 h_2(x)=\begin{cases} -0.1& \text{体重<30} \\[2ex] 0.03& \text{体重>=30} \\ \end{cases} h2(x)=⎩ ⎨ ⎧−0.10.03体重<30体重>=30
经过两步运算,此时预测编号5的身高
H ( x ) = h 0 ( x ) + h 1 ( x ) + h 2 ( x ) = 1.475 + { − 0.275 年龄<21 0.275 年龄>=21 + { − 0.1 体重<30 0.03 体重>=30 = 1.75 H(x)=h_0(x)+h_1(x)+h_2(x)=1.475+\begin{cases} -0.275 & \text{年龄<21} \\[2ex] 0.275 & \text{年龄>=21} \\ \end{cases}+\begin{cases} -0.1& \text{体重<30} \\[2ex] 0.03& \text{体重>=30} \\ \end{cases}=1.75 H(x)=h0(x)+h1(x)+h2(x)=1.475+⎩ ⎨ ⎧−0.2750.275年龄<21年龄>=21+⎩ ⎨ ⎧−0.10.03体重<30体重>=30=1.75