关于CART的原理我相信各位都有看过,是不是有些晕呢?没关系,这里我给大家讲个例子,你就理解原来CART回归树生成这么简单啊。。。
首先建立一个数据集,为了方便,就取少量数据,如下表,数据的创建仅作参考
臂长(m) | 年龄(岁) | 体重(kg) | 身高(m)(标签值) |
---|---|---|---|
0.5 | 5 | 20 | 1.1 |
0.7 | 7 | 30 | 1.3 |
0.9 | 21 | 70 | 1.7 |
训练数据中臂长,年龄,体重为特征变量X,身高为标签值Y,下面开始种树
1、首先将第一个特征的第一个值作为切割点(0.5),则划分的两个空间记为R1,R2
R
1
=
{
0.5
,
5
,
20
}
R_{1}=\left \{ 0.5,5,20 \right \}
R1={0.5,5,20}
R
2
=
{
(
0.7
,
7
,
30
)
,
(
0.9
,
21
,
70
)
}
R_{2}=\left \{ (0.7,7,30),(0.9,21,70) \right \}
R2={(0.7,7,30),(0.9,21,70)}
c
1
=
{
1.1
}
c_{1}=\left \{ 1.1 \right \}
c1={1.1}
c
2
=
1
2
(
1.3
+
1.7
)
=
1.5
c_{2}=\frac{1}{2}\left ( 1.3+1.7 \right )=1.5
c2=21(1.3+1.7)=1.5
则平方误差((真实值-预测值)的平方)
m
(
0.5
)
=
(
1.1
−
1.1
)
2
+
(
1.5
−
1.3
)
2
+
(
1.5
−
1.7
)
2
=
0.08
m\left ( 0.5 \right )=(1.1-1.1)^2 +(1.5-1.3)^2+(1.5-1.7)^2 =0.08
m(0.5)=(1.1−1.1)2+(1.5−1.3)2+(1.5−1.7)2=0.08
2、将第一个特征的第二个变量(0.7)作为切割点,类比第一步,划分的两个空间记为R1,R2
R
1
=
{
(
0.5
,
5
,
20
)
,
(
0.7
,
7
,
30
)
}
R_{1}=\left \{ (0.5,5,20),(0.7,7,30) \right \}
R1={(0.5,5,20),(0.7,7,30)}
R
2
=
{
(
0.9
,
21
,
70
)
}
R_{2}=\left \{(0.9,21,70) \right \}
R2={(0.9,21,70)}
c
1
=
1
2
(
1.1
+
1.3
)
=
1.2
c_{1}=\frac{1}{2}\left ( 1.1+1.3 \right )=1.2
c1=21(1.1+1.3)=1.2
c
2
=
{
1.7
}
c_{2}=\left \{ 1.7 \right \}
c2={1.7}
则平方误差
m
(
0.5
)
=
0.02
+
0
=
0.02
m\left ( 0.5 \right )=0.02+0 =0.02
m(0.5)=0.02+0=0.02
所以对于固定了特征后,从上面的MSE得出,所以特征“臂长=0.7”为切分点。同理。对于特征年龄,也可以采取上述的方式寻找最佳切分点,这样遍历了所有的特征,寻找平方误差最小的对(j,s),j表示第j个特征,s表示第j个特征的第s个值。本例中最佳切分点为0.7,所以以此将特征空间划分为两个区域(R1,R2).
3、对于第二步得到的R1h和R2,分别再次求最佳切分点,递归操作,过程同1~2。