-
CART
CART(Classification and Regression Tree),分类与回归树。CART假设决策树为二叉树,递归的二分每个特征,既可以做回归,也可以做分类。
-
回归树
损失函数采用平方误差最小化。
-
① 选择最优切分变量 x ( j ) x_{(j)} x(j) 、切分点 s s s,切分点将数据划分为 R 1 , R 2 R_1,R_2 R1,R2,求解:
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,smin[c1min∑xi∈R1(j,s)(yi−c1)2+c2min∑xi∈R2(j,s)(yi−c2)2]
得出最优解 j 1 ∗ , x 1 ∗ j_1^*,x_1^* j1∗,x1∗
-
② 根据 j 1 ∗ , x 1 ∗ j_1^*,x_1^* j1∗,x1∗ 划分区域 R 1 , R 2 R_1,R_2 R1,R2 并计算其相应的输出值:
R 1 ( j 1 ∗ , x 1 ∗ ) = { x ∣ x ( j ) ≤ s } R_1(j_1^*,x_1^*)=\{x|x^{(j)}\le s\} R1(j1∗,x1∗)={x∣x(j)≤s}, R 2 ( j 1 ∗ , x 1 ∗ ) = { x ∣ x ( j ) > s } R_2(j_1^*,x_1^*)=\{x|x^{(j)}>s\} R2(j1∗,x1∗)={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 cm−=N1∑xi∈Rm(j,s)yi,x∈Rm,m=1,2
-
③ 继续对两个子区域重复 ① ② 步骤,直至满足条件
-
④ 将输入空间划分为 M 个区域 R 1 , R 2 , . . . R M R_1,R_2,...R_M R1,R2,...RM,生成决策树
f ( x ) = ∑ m = 1 M c m − I ( x ∈ R m ) f(x)=\sum_{m=1}^{M}\mathop{}_{c_m}^{-}I(x∈R_m) f(x)=∑m=1Mcm−I(x∈Rm)
-
-
分类树
CART 的分类树与 ID3,C4.5 类似,但衡量最优特征的标准有差异。分类树中使用基尼指数选择最优特征,同时决定该特征的最优切分点。
-
基尼( G i n i Gini Gini)指数
分类问题中,假设有 K K K 个类,样本点属于第 k k k 类的概率为 P k P_k Pk,则 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 Gini(P)=∑k=1KPk(1−Pk)=1−∑k=1KPk2,
∙ \bullet ∙ 对于二分类问题: G i n i ( P ) = 2 P ( 1 − P ) Gini(P)=2P(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 Gini(D)=1−∑k=1K(∣D∣∣Ck∣)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) Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)
G i n i ( D ) Gini(D) Gini(D) 表示集合 D 的不确定性; G i n i ( D , A ) Gini(D,A) Gini(D,A)表示经 A 划分后 D 的不确定性
选 G i n i ( D , A ) Gini(D,A) Gini(D,A) 值最小的特征。
-
-
剪枝
CART 的剪枝分为两步:① 先剪枝形成 子树序列;② 后通过交叉验证选择 最优子树。
-
剪枝
设 C α ( T ) = C ( T ) + α ∣ T ∣ C_α(T)=C(T)+α|T| Cα(T)=C(T)+α∣T∣ 为预测误差。
从完整树 T 0 T_0 T0 开始,对 T 0 T_0 T0 中所有内部(非叶子)结点 t t t:
∙ \bullet ∙ 以 t t t 为单结点树(此时 ∣ T ∣ = 1 |T|=1 ∣T∣=1),损失等于 C α ( T ) = C ( T ) + α C_α(T)=C(T)+α Cα(T)=C(T)+α
∙ \bullet ∙ 以 t t t 为根结点的子树 T t T_t Tt,损失等于 C α ( T t ) = C ( T t ) + α ∣ T t ∣ C_α(T_t)=C(T_t)+α|T_t| Cα(Tt)=C(Tt)+α∣Tt∣
{ 当 α = 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} ⎩⎪⎨⎪⎧当α=0及α充分小时,有Cα(Tt)<Cα(t)当α↗,在某一α值时有Cα(Tt)=Cα(t)当α继续↗时,不等式反向,有Cα(Tt)>Cα(t)
∙ \bullet ∙ 只要 α = C ( t ) − C ( T t ) ∣ T t ∣ − 1 α=\frac{C(t)-C(T_t)}{|T_t|-1} α=∣Tt∣−1C(t)−C(Tt),那么 T t T_t Tt 与 t t t 就有相同的损失值,此时 t t t 的结点少,所以可以将 T t T_t Tt 减去。所以计算 g ( t ) = C ( t ) − C ( T t ) ∣ T t ∣ − 1 g(t)=\frac{C(t)-C(T_t)}{|T_t|-1} g(t)=∣Tt∣−1C(t)−C(Tt)
∙ \bullet ∙ 在 T 0 T_0 T0 中减去 g ( t ) g(t) g(t) 最小的 T t T_t Tt ,将得到的子树作为 T 1 T_1 T1,同时将最小的 g ( t ) g(t) g(t) 设为 α 1 α_1 α1, T 1 T_1 T1 为区间 [ α 1 , α 2 ) [α_1,α_2) [α1,α2) 的最优子树。
∙ \bullet ∙ 如此重复剪枝,直至根结点,得到子树序列 [ T 0 , T 1 , . . . , T n ] [T_0,T_1,...,T_n] [T0,T1,...,Tn],过程中 α m ↗ , m = 1 , 2 , . . , n α_m \nearrow,m=1,2,..,n αm↗,m=1,2,..,n
-
选择
从子树序列 [ T 0 , T 1 , . . . , T n ] [T_0,T_1,...,T_n] [T0,T1,...,Tn] 中通过交叉验证选取最优的子树。
-
-
决策树特点总结
本文作为决策树的第三部分,在这里对决策树的特点进行总结。
- 决策树属于非参数方法,无需先验假设;
- 最佳树属于 NP 完全问题,普遍使用贪心算法;
- 构建树的复杂度低,建立后预测的速度快;
- 相对容易解释,在简单数据集上性能也不错;
- 是学习离散值的典型算法;
- 对噪声干扰具有很好的鲁棒性;
- 冗余属性不会对精度造成不利影响;
- 大多是自顶向下划分的,数据量变少,容易过拟合;
- 因为使用分治策略,导致子树可能重复多次;
- 可看作区域划分,产生决策边界进而预测。
-
ID3,C4.5,CART 比较
- ID3 因为使用信息增益,所以偏向于取值较多的属性作为路径。而数据集中的连续型特征所具有的取值个数是非常多的,所以 ID3 也不适合处理连续性数据,对离散型特征可以适用。
- C4.5 使用信息增益率,解决了 ID3 的问题,既可以处理离散特征,也可以处理连续特征。
- CART 构建的是二叉树。假设对离散特征取值有 x , y , x {x,y,x} x,y,x,则在该属性上的划分有三种情况{{x,y},{z}},{{x,z},y},{{y,z},x}),空集和全集的划分除外;对于连续值处理引进“分裂点”的思想,假设样本集中某个属性共 n n n 个连续值,则有 n − 1 n-1 n−1 个分裂点,每个“分裂点”为相邻两个连续值的均值 1 2 ( a [ i ] + a [ i + 1 ] ) \frac{1}{2}(a[i] + a[i+1]) 21(a[i]+a[i+1])。既可以处理离散值也可以处理连续值,既可以用来做回归,也可以用来做分类,应用面更广。
机器学习 - 决策树(下)- CART 以及与 ID3、C4.5的比较
最新推荐文章于 2023-10-09 21:47:30 发布