李宏毅机器学习10(CART)

回归树

回归树和分类树都是决策树的一种,但是回归树用平方误差最小化准则进行特征选择,来生成二叉树,而分类树则是用基尼指数(Gini index)最小化准则

回归树生成

假设X与Y分别为输入和输出变量,并且Y是连续变量,在给定训练数据集
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } D=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} D={(x1,y1),(x2,y2),,(xN,yN)}
在这个条件下,看看如何生成回归树。
一个回归树对应着输入空间的一个划分以及在划分的单元上的输出值。假设划分的单元是 R 1 R_1 R1 R M R_M RM,并且每个单元的输出值是固定的输出值 c m c_m cm,那么回归树模型的表示如下
f ( x ) = ∑ m = 1 M c m I ( x ∈ R m ) f(x)=\sum_{m=1}^{M} c_{m} I\left(x \in R_{m}\right) f(x)=m=1McmI(xRm)
然后可以用平方误差最小的准则来求解每个单元上的最优输出值。易知,单元 R m R_m Rm上的 c m c_m cm的最优值 c ^ m \hat{c}_m c^m R m R_m Rm上的所有输入实例 x i x_i xi对应的输出 y i y_i yi的均值,即
c ^ m = ave ⁡ ( y i ∣ x i ∈ R m ) \hat{c}_{m}=\operatorname{ave}\left(y_{i} | x_{i} \in R_{m}\right) c^m=ave(yixiRm)
然后采用启发式方法来对输入空间划分,选择第j个变量 x ( j ) x^{(j)} x(j)和它取的值s,作为切分变量和切分点,并定义两个区域:
R 1 ( j , s ) = { x ∣ x ( j ) ⩽ s } 和 R 2 ( j , s ) = { x ∣ x ( j ) > s } R_{1}(j, s)=\left\{x | x^{(j)} \leqslant s\right\} 和 R_{2}(j, s)=\left\{x | x^{(j)}>s\right\} R1(j,s)={xx(j)s}R2(j,s)={xx(j)>s}
然后寻找最优切分变量j和最优切分点s。具体地,求解
min ⁡ j , s [ min ⁡ c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x k ∈ R 2 ( J , s ) ( y i − c 2 ) 2 ] \min _{j, s}\left[\min _{c_{1}} \sum_{x_{i} \in R_{1}(j, s)}\left(y_{i}-c_{1}\right)^{2}+\min _{c_{2}} \sum_{x_{k} \in R_{2}(J, s)}\left(y_{i}-c_{2}\right)^{2}\right] j,sminc1minxiR1(j,s)(yic1)2+c2minxkR2(J,s)(yic2)2
对固定输入变量j可以找到最优切分点s。
c ^ 1 = ave ⁡ ( y i ∣ x i ∈ R 1 ( j , s ) ) 和 c ^ 2 = ave ⁡ ( y i ∣ x i ∈ R 2 ( j , s ) ) \hat{c}_{1}=\operatorname{ave}\left(y_{i} | x_{i} \in R_{1}(j, s)\right) 和 \hat{c}_{2}=\operatorname{ave}\left(y_{i} | x_{i} \in R_{2}(j, s)\right) c^1=ave(yixiR1(j,s))c^2=ave(yixiR2(j,s))
遍历所有输入变量,找到最优的切分变量j,构成一个对(j, s)。以此将输入空间划分为两个区域。接着对每个区域重复上述划分过程,直到满足停止条件为止。这样就生成一课回归树。这生成的回归树也称为最小二乘回归树。

分类树

分类树则是用基尼指数(Gini index)最小化准则进行特征选择,来生成二叉树

基尼指数

分类问题中,假设有K个类,样本点属于第k类的概率为 p k p_k pk,则概率分布的基尼指数定义为:
Gini ⁡ ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 \operatorname{Gini}(p)=\sum_{k=1}^{K} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{K} p_{k}^{2} Gini(p)=k=1Kpk(1pk)=1k=1Kpk2
对于二类分类问题,若样本点属于第1个类的概率是p,则概率分布的基尼指数为
G i n i ( p ) = 2 p ( 1 − p ) Gini(p) = 2p(1-p) Gini(p)=2p(1p)
对于给定的样本集合D,其基尼指数为:
Gini ⁡ ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 \operatorname{Gini}(D)=1-\sum_{k=1}^{K}\left(\frac{\left|C_{k}\right|}{|D|}\right)^{2} Gini(D)=1k=1K(DCk)2
这里, c k c_k ck是D中属于第k类的样本子集,K是类的个数。
如果样本集合D根据特征A是否取某一可能值a被分割成 D 1 D_1 D1 D 2 D_2 D2两部分,即
D 1 = { ( x , y ) ∈ D ∣ A ( x ) = a } , D 2 = D − D 1 D_{1}=\{(x, y) \in D | A(x)=a\}, \quad D_{2}=D-D_{1} D1={(x,y)DA(x)=a},D2=DD1
则在特征A的条件下,集合D的基尼指数定义为:
Gini ⁡ ( D , A ) = ∣ D 1 ∣ ∣ D ∣ Gini ⁡ ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ Gini ⁡ ( D 2 ) \operatorname{Gini}(D, A)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)
基尼指数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示经A = a 分割后集合D的不确定性。基尼指数值越大,样本集合的不确定性也就越大,和熵类似。

树的剪枝

对于CART(就是分类树和回归树)剪枝,就是从“完全生长”的决策树的底端剪去一些子树,使决策树变小(模型变简单),从而能够对未知数据有更准确的预测。步骤由两步:首先从生成算法产生的决策树 T 0 T_0 T0底端开始不断剪枝,直到 T 0 T_0 T0的根节点,形成一个子树序列 T 0 , T 1 , . . . , T n {T_0, T_1, ..., T_n} T0,T1,...,Tn;然后通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树。
具体步骤如下:
输入:CART算法生成的决策树 T 0 T_0 T0;
输出:最优决策树 T α T_{\alpha} Tα
(1)设k=0, T = T 0 T_0 T0.
(2)设 α = + ∞ \alpha=+\infty α=+.
(3)自下而上地对各内部结点t计算 C ( T t ) C(T_t) C(Tt) ∣ T t ∣ \left|T_{t}\right| Tt以及
g ( t ) = C ( t ) − C ( T t ) ∣ T t ∣ − 1 α = min ⁡ ( α , g ( t ) ) \begin{array}{c}{g(t)=\frac{C(t)-C\left(T_{t}\right)}{\left|T_{t}\right|-1}} \\ {\alpha=\min (\alpha, g(t))}\end{array} g(t)=Tt1C(t)C(Tt)α=min(α,g(t))
这里, T t T_t Tt表示以t为根节点的子树, C ( T t ) C(T_t) C(Tt)是对训练数据的预测误差, ∣ T t ∣ \left|T_{t}\right| Tt T t T_t Tt的叶结点个数。
(4)自上而下地访问内部结点t,如果有g(t) = α \alpha α,进行剪枝,并对叶结点t以多数表决法决定其类,得到树T。
(5)设 k = k + 1 , α k = α , T k = T k=k+1, \quad \alpha_{k}=\alpha, \quad T_{k}=T k=k+1,αk=α,Tk=T
(6)如果T不是由根节点单独构成的树,则回到步骤(4)。
(7)采用交叉验证法在子树序列 T 0 , T 1 , ⋯   , T n T_{0}, T_{1}, \cdots, T_{n} T0,T1,,Tn中选取最优子树 T α T_{\alpha} Tα

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值