机器学习 - 决策树(下)- CART 以及与 ID3、C4.5的比较

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37352167/article/details/84929314

机器学习 - 决策树(下)- CART 以及与 ID3、C4.5的比较

  • CART

    CART(Classification and Regression Tree),分类与回归树。CART假设决策树为二叉树,递归的二分每个特征,既可以做回归,也可以做分类。

  • 回归树

    损失函数采用平方误差最小化。

    • ① 选择最优切分变量 x ( j ) x_{(j)} 、切分点 s s ,切分点将数据划分为 R 1 , R 2 R_1,R_2 ,求解:

      j , s m i n [ c 1 m i n x i R 1 ( j , s ) ( y i c 1 ) 2 + c 2 m i n x i R 2 ( j , s ) ( y i c 2 ) 2 ] \mathop{}_{j,s}^{min}[\mathop{}_{c_1}^{min}\sum_{x_i∈R_1(j,s)}(y_i-c_1)^2+\mathop{}_{c_2}^{min}\sum_{x_i∈R_2(j,s)}(y_i-c_2)^2]

      得出最优解 j 1 , x 1 j_1^*,x_1^*

    • ② 根据 j 1 , x 1 j_1^*,x_1^* 划分区域 R 1 , R 2 R_1,R_2 并计算其相应的输出值:

      R 1 ( j 1 , x 1 ) = { x x ( j ) s } R_1(j_1^*,x_1^*)=\{x|x^{(j)}\le s\} R 2 ( j 1 , x 1 ) = { x x ( j ) > s } R_2(j_1^*,x_1^*)=\{x|x^{(j)}>s\}

      c m = 1 N x i R m ( j , s ) y i x R m , m = 1 , 2 \mathop{}_{c_m}^{-}=\frac{1}{N}\sum_{x_i∈R_m(j,s)}y_i,x∈R_m,m=1,2

    • ③ 继续对两个子区域重复 ① ② 步骤,直至满足条件

    • ④ 将输入空间划分为 M 个区域 R 1 , R 2 , . . . R M R_1,R_2,...R_M ,生成决策树

      f ( x ) = m = 1 M c m I ( x R m ) f(x)=\sum_{m=1}^{M}\mathop{}_{c_m}^{-}I(x∈R_m)

  • 分类树

    CART 的分类树与 ID3,C4.5 类似,但衡量最优特征的标准有差异。分类树中使用基尼指数选择最优特征,同时决定该特征的最优切分点。

    1. 基尼( G i n i Gini )指数

      分类问题中,假设有 K K 个类,样本点属于第 k k 类的概率为 P k P_k ,则 G i n i ( P ) = k = 1 K P k ( 1 P k ) = 1 k = 1 K P k 2 Gini(P)=\sum_{k=1}^{K}P_k(1-P_k)=1-\sum_{k=1}^{K}P_k^2

      \bullet 对于二分类问题: G i n i ( P ) = 2 P ( 1 P ) Gini(P)=2P(1-P)

      \bullet 对于样本集合 D: G i n i ( D ) = 1 k = 1 K ( C k D ) 2 Gini(D)=1-\sum_{k=1}^{K}(\frac{|C_k|}{|D|})^2

    2. 在特征 A 条件下

      G i n i ( D , A ) = D 1 D G i n i ( D 1 ) + D 2 D G i n i ( D 2 ) Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2)

      G i n i ( D ) Gini(D) 表示集合 D 的不确定性; G i n i ( D , A ) Gini(D,A) 表示经 A 划分后 D 的不确定性

      G i n i ( D , A ) Gini(D,A) 值最小的特征。

  • 剪枝

    CART 的剪枝分为两步:① 先剪枝形成 子树序列;② 后通过交叉验证选择 最优子树

    1. 剪枝

      C α ( T ) = C ( T ) + α T C_α(T)=C(T)+α|T| 为预测误差。

      从完整树 T 0 T_0 开始,对 T 0 T_0 中所有内部(非叶子)结点 t t

      \bullet t t 为单结点树(此时 T = 1 |T|=1 ),损失等于 C α ( T ) = C ( T ) + α C_α(T)=C(T)+α

      \bullet t t 为根结点的子树 T t T_t ,损失等于 C α ( T t ) = C ( T t ) + α T t C_α(T_t)=C(T_t)+α|T_t|

      { α = 0 α C α ( T t ) < C α ( t ) α α C α ( T t ) = C α ( t ) α C α ( T t ) > C α ( t ) \begin{cases} 当 α=0 及 α 充分小时,有 C_α(T_t)<C_α(t)\\ 当 α\nearrow,在某一 α 值时有 C_α(T_t)=C_α(t)\\ 当 α 继续\nearrow 时,不等式反向,有 C_α(T_t)>C_α(t)\\ \end{cases}

      \bullet 只要 α = C ( t ) C ( T t ) T t 1 α=\frac{C(t)-C(T_t)}{|T_t|-1} ,那么 T t T_t t t 就有相同的损失值,此时 t t 的结点少,所以可以将 T t T_t 减去。所以计算 g ( t ) = C ( t ) C ( T t ) T t 1 g(t)=\frac{C(t)-C(T_t)}{|T_t|-1}

      \bullet T 0 T_0 中减去 g ( t ) g(t) 最小的 T t T_t ,将得到的子树作为 T 1 T_1 ,同时将最小的 g ( t ) g(t) 设为 α 1 α_1 T 1 T_1 为区间 [ α 1 , α 2 ) [α_1,α_2) 的最优子树。

      \bullet 如此重复剪枝,直至根结点,得到子树序列 [ T 0 , T 1 , . . . , T n ] [T_0,T_1,...,T_n] ,过程中 α m , m = 1 , 2 , . . , n α_m \nearrow,m=1,2,..,n

    2. 选择

      从子树序列 [ T 0 , T 1 , . . . , T n ] [T_0,T_1,...,T_n] 中通过交叉验证选取最优的子树。

  • 决策树特点总结

    本文作为决策树的第三部分,在这里对决策树的特点进行总结。

    1. 决策树属于非参数方法,无需先验假设;
    2. 最佳树属于 NP 完全问题,普遍使用贪心算法;
    3. 构建树的复杂度低,建立后预测的速度快;
    4. 相对容易解释,在简单数据集上性能也不错;
    5. 是学习离散值的典型算法;
    6. 对噪声干扰具有很好的鲁棒性;
    7. 冗余属性不会对精度造成不利影响;
    8. 大多是自顶向下划分的,数据量变少,容易过拟合;
    9. 因为使用分治策略,导致子树可能重复多次;
    10. 可看作区域划分,产生决策边界进而预测。
  • ID3,C4.5,CART 比较

    1. ID3 因为使用信息增益,所以偏向于取值较多的属性作为路径。而数据集中的连续型特征所具有的取值个数是非常多的,所以 ID3 也不适合处理连续性数据,对离散型特征可以适用。
    2. C4.5 使用信息增益率,解决了 ID3 的问题,既可以处理离散特征,也可以处理连续特征。
    3. CART 构建的是二叉树。假设对离散特征取值有 x , y , x {x,y,x} ,则在该属性上的划分有三种情况{{x,y},{z}},{{x,z},y},{{y,z},x}),空集和全集的划分除外;对于连续值处理引进“分裂点”的思想,假设样本集中某个属性共 n n 个连续值,则有 n 1 n-1 个分裂点,每个“分裂点”为相邻两个连续值的均值 1 2 ( a [ i ] + a [ i + 1 ] ) \frac{1}{2}(a[i] + a[i+1]) 。既可以处理离散值也可以处理连续值,既可以用来做回归,也可以用来做分类,应用面更广。

猜你喜欢

转载自blog.csdn.net/weixin_37352167/article/details/84929314