CART和决策树相关知识点
时间 2021-07-14
标签
技术问题
# MachineLearning
机器学习
本文只是记录一些重要点,主要参考自该优秀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)
G i n i ( p ) = k = 1 ∑ K p k ( 1 − p k ) = 1 − k = 1 ∑ K p k 2 ( 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)
G i n i ( D , A ) = ∣ D ∣ ∣ D 1 ∣ G i n i ( D 1 ) + ∣ D ∣ ∣ D 2 ∣ G i n i ( D 2 ) s p a c e ( 2 . 2 ) 采用Gini的好处:避免了信息熵的计算量,同时对分布刻画效果接近信息熵,如下图:
CART分类树 :对于连续特征,将每个连续特征的值排序,取相邻两样本值的平均数进行分割;对于离散特征,如A特征有3个特征值
A
1
/
A
2
/
A
3
A_1 /A_2/A_3
A 1 / A 2 / A 3 ,则计算Gini时要分成
A
1
v
s
(
A
2
,
A
3
)
A_1vs(A_2,A_3)
A 1 v s ( A 2 , A 3 ) and
A
2
v
s
(
A
1
,
A
3
)
A_2vs(A_1,A_3)
A 2 v s ( A 1 , A 3 ) and
A
3
v
s
(
A
1
,
A
2
)
A_3vs(A_1,A_2)
A 3 v s ( A 1 , A 2 ) ;需要注意的是: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
m i n [ c1
m i n x i ∈ D 1 ( A , s ) ∑ ( y i − c 1 ) 2 + c2
m i n x j ∈ D 2 ( A , s ) ∑ ( y j − c 2 ) 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难的问题,我们一般是通过启发式方法,容易陷入局部最优。可以通过集成学习之类的方法来改善。
有些比较复杂的关系,决策树很难学习,比如异或
。这个就没有办法了,一般这种关系可以换神经网络分类方法来解决
如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可以通过调节样本权重来改善