本文只是记录一些重要点,主要参考自该优秀blog,需要详细介绍的可参考之
- CART即分类与回归树,可做分类与回归;ID3/C4.5只能做分类;
- CART分类树:强制二分类,分类效果判别采用gini系数(又叫不纯度,越小越好),如下
G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 ( 2.1 ) Gini(p)=\displaystyle\sum_{k=1}^K p_k(1-p_k)=1-\displaystyle\sum_{k=1}^Kp_k^2 \space\space\space\space\space\space(2.1) Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2 (2.1)
对于样本D,如果根据特征A的某个值a,把D分成D1和D2两部分,则在特征A的条件下,D的基尼系数表达式为:
G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) s p a c e ( 2.2 ) Gini(D,A)=\dfrac{|D_1|}{|D|}Gini(D_1)+\dfrac{|D_2|}{|D|}Gini(D_2)space\space\space\space\space\space(2.2) Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)space (2.2)
采用Gini的好处:避免了信息熵的计算量,同时对分布刻画效果接近信息熵,如下图: - CART分类树:对于连续特征,将每个连续特征的值排序,取相邻两样本值的平均数进行分割;对于离散特征,如A特征有3个特征值 A 1 / A 2 / A 3 A_1 /A_2/A_3 A1/A2/A3,则计算Gini时要分成 A 1 v s ( A 2 , A 3 ) A_1vs(A_2,A_3) A1vs(A2,A3) and A 2 v s ( A 1 , A 3 ) A_2vs(A_1,A_3) A2vs(A1,A3) and A 3 v s ( A 1 , A 2 ) A_3vs(A_1,A_2) A3vs(A1,A2) ;需要注意的是:CART的离散特征可能再后续节点选择上重复出现,而ID3/C4.5只会利用一次离散特征,因为它们是多分类;
- CART分类树:建立流程略,预测时,预测样本落在的叶子节点里 样本数最多的类别 即为结果;
- CART回归树:回归树与分类树大部分相同,两个重要的区别是:
5.1 分割度量方法
: 回归树采用均方差计算,即对于任意划分特征A,对应的任意划分点s两边划分成的数据集D1和D2,求出使D1和D2各自集合的均方差最小,同时D1和D2的均方差之和最小所对应的特征和特征值划分点。表达式为:
m i n ⏟ A,s [ m i n ⏟ c1 ∑ x i ∈ D 1 ( A , s ) ( y i − c 1 ) 2 + m i n ⏟ c2 ∑ x j ∈ D 2 ( A , s ) ( y j − c 2 ) 2 ] ( 5.1 ) \underbrace{min}_{\text{A,s}}[\underbrace{min}_{\text{c1}}\displaystyle\sum_{x_i \in D_1(A,s)}(y_i-c_1)^2+\underbrace{min}_{\text{c2}}\displaystyle\sum_{x_j \in D_2(A,s)}(y_j-c_2)^2] \space\space\space\space\space\space(5.1) A,s min[c1 minxi∈D1(A,s)∑(yi−c1)2+c2 minxj∈D2(A,s)∑(yj−c2)2] (5.1)
对平方误差求min,可得𝑐1为D1数据集的样本输出均值,𝑐2为D2数据集的样本输出均值,所以上式内部是在计算分割后两个子集各自的均方误差
。
5.2 预测方式
:预测样本落在某个子节点,则预测结果为该子节点的均值(也有取中位数的); - CART树算法的剪枝:待补充
- 对比(引用自上述blog)
- pinard认为CART或者单一决策树有两个问题:
8.1 单一特征分割不如一组特征共同决定分割,因此需要有多变量决策树(multi-variate decision tree)
;
8.2 单一决策树受样本扰动较大,即样本稍微变动可能导致决策树结构剧烈变化,可通过集成学习如森林算法进行改善; - 决策树总结(来自上述blog):
- 优点:
- 直观,容易解释
- 可处理离散、连续特征
- 对异常点的容错能力好,健壮性高
- 基本不需要预处理,不需要提前归一化
- 可剪枝提高泛化性
- 使用决策树预测的代价是𝑂(𝑙𝑜𝑔2𝑚), m为样本数
- 缺点:
- 容易过拟合,可以通过设置节点最少样本数量和限制决策树深度来改进
- 单一决策树容易受样本扰动影响,可通过集成学习算法改进
- 寻找最优的决策树是一个NP难的问题,我们一般是通过启发式方法,容易陷入局部最优。可以通过集成学习之类的方法来改善。
- 有些比较复杂的关系,决策树很难学习,比如
异或
。这个就没有办法了,一般这种关系可以换神经网络分类方法来解决 - 如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可以通过调节样本权重来改善
- 优点: