栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

GDBT训练与预测

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

GDBT训练与预测

统计学习方法 8.4

训练过程

x i x_i xi​​12345678910
y i y_i yi​5.565.75.916.46.87.058.98.79.09.05

PS. 当loss选择MSE时, f 0 ( x ) = y ˉ f_0(x)=bar{y} f0​(x)=yˉ​, y ˉ bar{y} yˉ​为样本真实值的平均值。这边为了和书上统一用 f 0 ( x i ) = 0 f_0(x_i)=0 f0​(xi​)=0。


拟合第一颗树(m=1)

由公式,可以计算负梯度值:
r m i = − [ ∂ L ( y i , f m − 1 ( x i ) ) ∂ f m − 1 ( x i ) ] = ( y i − f m − 1 ( x i ) ) r_{mi}=-left[frac{partial L(y_i,f_{m-1}(x_i))}{partial f_{m-1}(x_i)}right]=(y_i-f_{m-1}(x_i)) rmi​=−[∂fm−1​(xi​)∂L(yi​,fm−1​(xi​))​]=(yi​−fm−1​(xi​))
r 1 i = y i − f 0 ( x i ) r_{1i}=y_i-f_0(x_i) r1i​=yi​−f0​(xi​)
例如: r 1 i = 5.56 − 0 = 5.56 r_{1i}=5.56-0=5.56 r1i​=5.56−0=5.56
具体结果如下残差表:

i i i​12345678910
r 1 i r_{1i} r1i​5.565.75.916.46.87.058.98.79.09.05

得到梯度值后,下面就是以 r 1 i r_{1i} r1i​为目标值进行拟合。
即选择分裂点,将结点分到两片叶子 R 1 , R 2 R_1, R_2 R1​,R2​上,使得各片叶子内部所有样本MSE(书上是L2范数损失函数,也就是没有除以样本数)之和最小。

例如选择分裂点1.5,则在1和2之间分裂, R 1 = { x 1 } , R 2 = { x 2 , x 3 , . . . , x 10 } R_1={x_1}, R_2={x_2, x_3, ..., x_{10}} R1​={x1​},R2​={x2​,x3​,...,x10​},设R中样本平均数是c。
c 1 = x 1 c_1=x_1 c1​=x1​
M S E R 1 = ( x 1 − c 1 ) 2 1 = 0 MSE_{R_1}= frac{(x_1-c_1)^2}{1}=0 MSER1​​=1(x1​−c1​)2​=0
c 2 = x 2 + x 3 + . . . + x 10 9 = 7.50111 c_2=frac{x_2+x_3+...+x_{10}}{9}=7.50111 c2​=9x2​+x3​+...+x10​​=7.50111
M S E R 2 = ( x 2 − c 2 ) 2 + ( x 3 − c 2 ) 2 + . . . + ( x 10 − c 2 ) 2 9 = 15.7231 / 9 = 1.74701 MSE_{R_2}=frac{(x_2-c_2)^2+(x_3-c_2)^2+...+(x_{10}-c_2)^2}{9}=15.7231/9=1.74701 MSER2​​=9(x2​−c2​)2+(x3​−c2​)2+...+(x10​−c2​)2​=15.7231/9=1.74701

例如选择分裂点6.5,则在6和7之间分裂, R 1 = { x 1 , x 2 , . . . , x 6 } , R 2 = { x 7 , x 8 , x 9 , x 10 } R_1={x_1,x_2,...,x_6}, R_2={x_7, x_8, x_9, x_{10}} R1​={x1​,x2​,...,x6​},R2​={x7​,x8​,x9​,x10​}
c 1 = x 1 + x 2 + . . . + x 6 6 = 6.23667 c_1=frac {x_1+x_2+...+x_6}{6}=6.23667 c1​=6x1​+x2​+...+x6​​=6.23667
M S E R 1 = ( x 1 − c 1 ) 2 + ( x 2 − c 1 ) 2 + . . . + ( x 6 − c 1 ) 2 6 = 1.85813 / 6 = 0.309689 MSE_{R_1}= frac{(x_1-c_1)^2+(x_2-c_1)^2+...+(x_{6}-c_1)^2}{6}=1.85813/6=0.309689 MSER1​​=6(x1​−c1​)2+(x2​−c1​)2+...+(x6​−c1​)2​=1.85813/6=0.309689
c 2 = x 7 + x 8 + x 9 + x 10 9 = 8.9125 c_2=frac{x_7+x_8+x_9+x_{10}}{9}=8.9125 c2​=9x7​+x8​+x9​+x10​​=8.9125
M S E R 2 = ( x 7 − c 2 ) 2 + ( x 8 − c 2 ) 2 + ( x 9 − c 2 ) 2 + ( x 10 − c 2 ) 2 4 = 0.071875 / 9 = 0.0179688 MSE_{R_2}=frac{(x_7-c_2)^2+(x_8-c_2)^2+(x_9-c_2)^2+(x_{10}-c_2)^2}{4}=0.071875/9=0.0179688 MSER2​​=4(x7​−c2​)2+(x8​−c2​)2+(x9​−c2​)2+(x10​−c2​)2​=0.071875/9=0.0179688

分裂点1.52.53.54.55.56.57.58.59.5
MSE1.747011.51411.206910.9963690.7822640.3276581.157911.467391.74873

可以看到选分裂点6.5更好。

求出两个叶子结点输出的值,分别是 c 1 = 6.23667 c_1=6.23667 c1​=6.23667和 c 2 = 8.9125 c_2=8.9125 c2​=8.9125
此时回归树 T 1 ( x ) T_1(x) T1​(x)为
T 1 ( x ) = { 6.24 , x < 6.5 8.91 , x ≥ 6.5 T_1(x)= begin{cases} 6.24, & text {$x<6.5$} \ 8.91, & text{$xgeq6.5$} end{cases} T1​(x)={6.24,8.91,​x<6.5x≥6.5​
模型 f 1 ( x ) = T 1 ( x ) f_1(x)=T_1(x) f1​(x)=T1​(x)

此时用 f 1 ( x ) f_1(x) f1​(x)拟合训练数据的损失MSE为:
L ( y , f 1 ( x ) ) = ∑ i = 1 10 ( y i − f 1 ( x i ) ) 2 10 = 0.193 L(y,f_1(x))=frac{sum_{i=1}^{10}(y_i-f_1(x_i))^2}{10}=0.193 L(y,f1​(x))=10∑i=110​(yi​−f1​(xi​))2​=0.193

这时候假如来了一个新样本x=6,则会通过决策树1输出6.24。


拟合第一颗树(m=2)

用 f 1 ( x ) f_1(x) f1​(x)拟合训练数据的计算残差如下, r 2 i = y i − f 1 ( x i ) r_{2i}=y_i-f_1(x_i) r2i​=yi​−f1​(xi​):
如 r 21 = 5.56 − 6.24 ≈ − 0.68 r_{21}=5.56-6.24approx-0.68 r21​=5.56−6.24≈−0.68

i i i​12345678910
r 2 i r_{2i} r2i​-0.68-0.54-0.330.160.560.81-0.01-0.210.090.14

以 r 2 i r_{2i} r2i​为目标值进行拟合。
注意,决策树训练的数据是 r 2 i r_{2i} r2i​

分裂点1.52.53.54.55.56.57.58.59.5
MSE0.1575360.1290360.1247460.2220690.3315680.3276580.2893420.2375250.212

可以看到是分裂点3.5最优。

求出两个叶子结点输出的值,分别是
c 1 = − 0.68 − 0.54 − 0.33 3 = − 0.52 c_1=frac{-0.68-0.54-0.33}3=-0.52 c1​=3−0.68−0.54−0.33​=−0.52
c 2 = 0.16 + 0.56 + . . . + 0.14 7 = 0.22 c_2=frac{0.16+0.56+...+0.14}7=0.22 c2​=70.16+0.56+...+0.14​=0.22
此时回归树 T 2 ( x ) T_2(x) T2​(x)为
T 2 ( x ) = { − 0.52 , x < 3.5 0.22 , x ≥ 3.5 T_2(x)= begin{cases} -0.52, & text {$x<3.5$} \ 0.22, & text{$xgeq3.5$} end{cases} T2​(x)={−0.52,0.22,​x<3.5x≥3.5​
模型 f 2 ( x ) = f 1 ( x ) + T 2 ( x ) f_2(x)=f_1(x)+T_2(x) f2​(x)=f1​(x)+T2​(x)
f 2 ( x ) = f 1 ( x ) + T 2 ( x ) = { 6.24 − 0.52 = 5.72 , x < 3.5 6.24 + 0.22 = 6.46 , 3.5 ≤ x < 6.5 8.91 + 0.22 = 9.13 , x ≥ 6.5 f_2(x)=f_1(x)+T_2(x)= begin{cases} 6.24-0.52=5.72, & text {$x<3.5$} \ 6.24 + 0.22=6.46, & text{$3.5leq x<6.5$} \ 8.91+0.22=9.13, & text{$xgeq6.5$} end{cases} f2​(x)=f1​(x)+T2​(x)=⎩⎪⎨⎪⎧​6.24−0.52=5.72,6.24+0.22=6.46,8.91+0.22=9.13,​x<3.53.5≤x<6.5x≥6.5​

此时用 f 2 ( x ) f_2(x) f2​(x)拟合训练数据的损失MSE为:
L ( y , f 2 ( x ) ) = ∑ i = 1 10 ( y i − f 2 ( x i ) ) 2 10 = 0.079 L(y,f_2(x))=frac{sum_{i=1}^{10}(y_i-f_2(x_i))^2}{10}=0.079 L(y,f2​(x))=10∑i=110​(yi​−f2​(xi​))2​=0.079

这时候假如来了一个新样本x=6,则先通过决策树1输出6.24,再加上决策树2的输出0.22,预测值为6.46。


拟合第三颗树(m=3)

用 f 2 ( x ) f_2(x) f2​(x)拟合训练数据的计算残差如下, r 3 i = y i − f 2 ( x i ) r_{3i}=y_i-f_2(x_i) r3i​=yi​−f2​(xi​):
如 r 31 = 5.56 − 5.72 = − 0.16 r_{31}=5.56-5.72=-0.16 r31​=5.56−5.72=−0.16
r 33 = 5.91 − 5.72 = 0.19 r_{33}=5.91-5.72=0.19 r33​=5.91−5.72=0.19
r 34 = 6.4 − 6.46 = − 0.06 r_{34}=6.4-6.46=-0.06 r34​=6.4−6.46=−0.06
r 36 = 7.05 − 6.46 = 0.59 r_{36}=7.05-6.46=0.59 r36​=7.05−6.46=0.59
r 37 = 8.9 − 9.13 = − 0.23 r_{37}=8.9-9.13=-0.23 r37​=8.9−9.13=−0.23

i i i​12345678910
r 3 i r_{3i} r3i​-0.16-0.020.19-0.060.340.59-0.23-0.43-0.13-0.08

以 r 3 i r_{3i} r3i​为目标值进行拟合。
注意,决策树训练的数据是 r 3 i r_{3i} r3i​

接下去步骤同上。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754431.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号