一、概念
在树的结点处按照属性的不同条件对样本进行划分。
二、决策树的生成
1. 特征的选择:局部最优
选择最优属性的最优划分。
度量结点的不确定程度:熵、基尼系数、分类错误率。
结点越不纯,结点处类分布越平衡,值越大。
E
n
t
r
o
p
y
(
t
)
=
?
∑
k
=
0
K
p
(
k
∣
t
)
l
o
g
(
p
(
k
∣
t
)
)
Entropy(t) = -\sum_{k=0}^K p(k|t)log(p(k|t))
Entropy(t)=?∑k=0K?p(k∣t)log(p(k∣t))
G
i
n
i
(
t
)
=
1
?
∑
k
=
0
K
[
p
(
k
∣
t
)
]
2
Gini(t) = 1-\sum_{k=0}^K[p(k|t)]^2
Gini(t)=1?∑k=0K?[p(k∣t)]2
C
l
a
s
s
i
f
i
c
a
t
i
o
n
E
r
r
o
r
=
1
?
m
a
x
[
p
(
k
∣
t
)
]
Classification Error = 1 - max[p(k|t)]
ClassificationError=1?max[p(k∣t)]
比较分裂前后不纯程度的差别
信息增益(ID3):分裂前后结点熵的差
Δ
=
I
(
p
a
r
e
n
t
)
?
I
(
c
h
i
l
d
r
e
n
)
\Delta = I(parent) - I(children)
Δ=I(parent)?I(children)
I
(
c
h
i
l
d
r
e
n
)
=
∑
j
=
0
V
N
(
v
j
)
N
H
(
v
j
)
I(children) = \sum_{j=0}^V \frac{N(v_j)}{N}H(v_j)
I(children)=∑j=0V?NN(vj?)?H(vj?)
v
v
v是分裂后的结点
信息增益率(C4.5):考虑分裂后得到的结点数量。不希望输出的结点过多,会过拟合。
G
a
i
n
r
a
t
i
o
=
Δ
s
p
l
i
t
I
n
f
o
Gain ratio=\frac{\Delta}{splitInfo}
Gainratio=splitInfoΔ?
s
p
l
i
t
I
n
f
o
=
?
∑
i
=
1
K
p
(
v
i
)
l
o
g
p
(
v
i
)
splitInfo = -\sum_{i=1}^Kp(v_i)logp(v_i)
splitInfo=?∑i=1K?p(vi?)logp(vi?)
对分类型特征,直接按照特征类别进行划分,计算划分前后的信息增益,选择信息增益最大的最优特征
对连续型特征,选择适当的划分点:
2. 何时停止分裂
- 结点处所有样本同属一类。
- 样本熵小于某个阈值(基本属于同一类)
- 结点处所有样本特征值相同(无更多特征可以选择):返回比例最高的类
- 信息增益小于某个阈值(提前剪枝):返回父节点中比例最高的类
- 结点处样本数小于某个阈值:返回父节点中比例最高的类
3. 决策树的剪枝
剪枝时考虑整体的损失函数
∣
T
∣
|T|
∣T∣表示叶节点的数量
C
α
(
T
)
=
C
(
T
)
+
α
∣
T
∣
C_\alpha(T) =C(T)+\alpha|T|
Cα?(T)=C(T)+α∣T∣
剪枝算法:
递归地从叶节点向上回缩,若回缩后树的损失函数值小于等于回缩前,则进行剪枝
4.CART(Classification and Regression Tree)的生成与剪枝
回归树:平方误差最小化
对每个切分点,划分两个区域
损失函数有 其中 遍历所有特征,找到最优特征
j
j
j和对应的切分点
s
s
s
分类树:按照基尼系数选择最优特征。
CART要生成尽量大的树,结束的标准是结点处样本数小于某个阈值 / Gini系数小于某个阈值。
CART剪枝
CART剪枝算法确定了
α
\alpha
α和最优子树。
原理:当
α
\alpha
α从小增大,
α
0
\alpha_0
α0?<
α
1
\alpha_1
α1?<
α
2
\alpha_2
α2?<…,产生的一系列区间[
α
i
\alpha_i
αi?,
α
i
+
1
\alpha_{i+1}
αi+1?),每个区间内都对应一个最优子树。最优子树序列
T
0
T_0
T0?,
T
1
T_1
T1?,
T
2
T_2
T2?…是嵌套的。
某个结点剪枝前后损失相同,即
C
C
C(
T
0
T_0
T0?)+
α
\alpha
α =
C
C
C(
T
1
T_1
T1?)+
α
\alpha
α|
T
1
T_1
T1?|
α
\alpha
α =
C
(
T
0
)
?
C
(
T
1
)
∣
T
1
∣
?
1
\frac{C(T_0)-C(T_1)}{|T_1|-1}
∣T1?∣?1C(T0?)?C(T1?)?
对每一个结点计算
C
(
T
0
)
?
C
(
T
1
)
∣
T
1
∣
?
1
\frac{C(T_0)-C(T_1)}{|T_1|-1}
∣T1?∣?1C(T0?)?C(T1?)?并设为
α
1
\alpha_1
α1?,则剪枝后的T_1即为[
α
1
\alpha_1
α1?,
α
2
\alpha_2
α2?)中的最优子树。
利用验证集在
T
0
T_0
T0?,
T
1
T_1
T1?,
T
2
T_2
T2?…中寻找最优决策树(平方误差或基尼指数小的),
T
k
T_k
Tk?确定,对应的
α
k
\alpha_k
αk?也确定了。
三、 决策树的性质
- 不需要先验假设。
- 对未知样本分类速度快,最多为树的深度。
- 解释性强,可以得到各个特征的重要程度。
- 对样本噪声的抗干扰性强。
- 对冗余特征的抗干扰性强,但会受到不相干特征的影响。
- 当样本小特征多时,易添加一些欺骗性结点。特别是当模型拓展到一定深度时。
|