(一)决策树模型与学习
(二)特征选择
熵(entropy): H ( x ) = H ( p ) = − ∑ n j = 1 p i l o g p i H(x)=H(p)=- \underset {j=1}{\overset n {\sum}}p_ilogp_i H(x)=H(p)=−j=1∑npilogpi对数底为2单位是比特(bit),自然对数单位为纳特(nat)。
条件熵(conditional entropy): H ( Y ∣ X ) = ∑ n j = 1 p i H ( Y ∣ X = x i ) H(Y|X)=\underset {j=1}{\overset n {\sum}}p_iH(Y|X=x_i) H(Y∣X)=j=1∑npiH(Y∣X=xi)其中 p i = P ( X = x i ) , i = 1 , 2 , . . . , n p_i=P(X=x_i),i=1,2,...,n pi=P(X=xi),i=1,2,...,n。
信息增益(information gain):得知特征 X X X的信息而使得类 Y Y Y的信息的不确定性减少的程度。 g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)经验熵 H ( D ) H(D) H(D)表示对数据集 D D D分类的不准确性,经验条件熵 H ( D ∣ A ) H(D|A) H(D∣A)表示在特征 A A A给定的条件下对数据集 D D D分类的不准确性。因此,信息增益大意味着更好的分类能力。
一般的,熵 H ( Y ) H(Y) H(Y)与条件熵 H ( Y ∣ X ) H(Y|X) H(Y∣X)的差称为互信息(mutual information)。在决策树中,信息增益与互信息二者等价。
算法(信息增益)
输入:训练数据集
D
D
D和特征
A
A
A;
输出:特征
A
A
A对训练数据集
D
D
D的信息增益
g
(
D
,
A
)
g(D,A)
g(D,A)
(1)计算数据集
D
D
D的经验熵:
H
(
D
)
=
−
∑
K
k
=
1
∣
C
k
∣
∣
D
∣
l
o
g
2
∣
C
k
∣
∣
D
∣
H(D)=-\underset {k=1}{\overset K {\sum}}\frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|}
H(D)=−k=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣
(2)特征
A
A
A对训练数据集
D
D
D的经验条件熵:
H
(
D
∣
A
)
=
∑
n
i
=
1
∣
D
i
∣
∣
D
∣
H
(
D
i
)
=
−
∑
n
n
=
1
∣
D
i
∣
∣
D
∣
∑
K
k
=
1
∣
D
i
k
∣
∣
D
i
∣
l
o
g
2
∣
D
i
k
∣
∣
D
i
∣
H(D|A)=\underset {i=1}{\overset n {\sum}}\frac{|D_i|}{|D|}H(D_i)=-\underset {n=1}{\overset n {\sum}}\frac{|D_i|}{|D|}\underset {k=1}{\overset K {\sum}}\frac{|D_{ik}|}{|D_i|}log_2\frac{|D_{ik}|}{|D_i|}
H(D∣A)=i=1∑n∣D∣∣Di∣H(Di)=−n=1∑n∣D∣∣Di∣k=1∑K∣Di∣∣Dik∣log2∣Di∣∣Dik∣
(3)计算信息增益:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D,A)=H(D)-H(D|A)
g(D,A)=H(D)−H(D∣A)
例:贷款申请样本数据集如下,根据信息增益准则选择最优特征。
ID | 年龄 | 有工作 | 有自己的房子 | 信贷情况 | 类别 |
---|---|---|---|---|---|
1 | 青年 | 否 | 否 | 一般 | 否 |
2 | 青年 | 否 | 否 | 好 | 否 |
3 | 青年 | 是 | 否 | 好 | 是 |
4 | 青年 | 是 | 是 | 一般 | 是 |
5 | 青年 | 否 | 否 | 一般 | 否 |
6 | 中年 | 否 | 否 | 一般 | 否 |
7 | 中年 | 否 | 否 | 好 | 否 |
8 | 中年 | 是 | 是 | 好 | 是 |
9 | 中年 | 否 | 是 | 非常好 | 是 |
10 | 中年 | 否 | 是 | 非常好 | 是 |
11 | 老年 | 否 | 是 | 非常好 | 是 |
12 | 老年 | 否 | 是 | 好 | 是 |
13 | 老年 | 是 | 否 | 好 | 是 |
14 | 老年 | 是 | 否 | 非常好 | 是 |
15 | 老年 | 否 | 否 | 一般 | 否 |
解:
Step1:计算经验熵,类别分为两类,有
H
(
D
)
=
−
9
15
l
o
g
2
9
15
−
6
15
l
o
g
2
6
15
=
0.971
H(D)=-\frac{9}{15}log_2\frac{9}{15}-\frac{6}{15}log_2\frac{6}{15}=0.971
H(D)=−159log2159−156log2156=0.971
Step2:计算每个特征对数据集的增益
(1)年龄
青年:
H
(
D
1
)
=
−
2
5
l
o
g
2
2
5
−
3
5
l
o
g
2
3
5
青年:H(D_1)=-\frac{2}{5}log_2\frac{2}{5}-\frac{3}{5}log_2\frac{3}{5}
青年:H(D1)=−52log252−53log253
中年:
H
(
D
2
)
=
−
3
5
l
o
g
2
3
5
−
2
5
l
o
g
2
2
5
中年:H(D_2)=-\frac{3}{5}log_2\frac{3}{5}-\frac{2}{5}log_2\frac{2}{5}
中年:H(D2)=−53log253−52log252
老年:
H
(
D
3
)
=
−
4
5
l
o
g
2
4
5
−
1
5
l
o
g
2
1
5
老年:H(D_3)=-\frac{4}{5}log_2\frac{4}{5}-\frac{1}{5}log_2\frac{1}{5}
老年:H(D3)=−54log254−51log251
g
(
D
,
A
1
)
=
H
(
D
)
−
5
15
H
(
D
1
)
−
5
15
H
(
D
2
)
−
5
15
H
(
D
3
)
=
0.971
−
0.888
=
0.083
g(D,A_1)=H(D)-\frac{5}{15}H(D_1)-\frac{5}{15}H(D_2)-\frac{5}{15}H(D_3)=0 .971-0.888=0.083
g(D,A1)=H(D)−155H(D1)−155H(D2)−155H(D3)=0.971−0.888=0.083
(2)工作
有工作:
H
(
D
1
)
=
−
5
5
l
o
g
2
5
5
−
0
5
l
o
g
2
0
5
有工作:H(D_1)=-\frac{5}{5}log_2\frac{5}{5}-\frac{0}{5}log_2\frac{0}{5}
有工作:H(D1)=−55log255−50log250
没工作:
H
(
D
2
)
=
−
4
10
l
o
g
2
4
10
−
6
10
l
o
g
2
6
10
没工作:H(D_2)=-\frac{4}{10}log_2\frac{4}{10}-\frac{6}{10}log_2\frac{6}{10}
没工作:H(D2)=−104log2104−106log2106
g
(
D
,
A
2
)
=
H
(
D
)
−
5
15
H
(
D
1
)
−
10
15
H
(
D
2
)
=
0.324
g(D,A_2)=H(D)-\frac{5}{15}H(D_1)-\frac{10}{15}H(D_2)=0.324
g(D,A2)=H(D)−155H(D1)−1510H(D2)=0.324
(3)房子
g
(
D
,
A
3
)
=
0.420
g(D,A_3)=0.420
g(D,A3)=0.420
(4)信贷
g
(
D
,
A
4
)
=
0.363
g(D,A_4)=0.363
g(D,A4)=0.363
对比四个特征,发现房子的信息增益最大。
信息增益比(information gain ratio):信息增益存在偏向于选择取值较多的特征的问题,故有信息增益比
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
g_R(D,A)=\frac{g(D,A)}{H_A(D)}
gR(D,A)=HA(D)g(D,A)
(三)决策树的生成
1. ID3算法
在各个节点上应用信息增益准则选择特征,迭代至结束。
2. C4.5算法
在各个节点上应用信息增益比选择特征,迭代至结束。
(四)决策树的剪枝
为提升泛化能力裁剪掉一些子树和节点。示意图如下:
设树 T T T的叶结点个数为 ∣ T ∣ |T| ∣T∣, t t t是树 T T T的叶结点,该叶结点有 N t N_t Nt个样本点,其中 k k k类的样本点有 N t k N_{tk} Ntk个, k = 1 , 2 , . . . , K , H t ( T ) k=1,2,...,K,H_t(T) k=1,2,...,K,Ht(T)为叶结点 t t t上的经验熵, α ≥ 0 \alpha\geq0 α≥0为参数,则决策树学习的损失函数可定义为 C α ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ C_{\alpha}(T)=\overset {|T|} {\underset{t=1} \sum}N_tH_t(T)+\alpha |T| Cα(T)=t=1∑∣T∣NtHt(T)+α∣T∣ = C ( T ) + α ∣ T ∣ =C(T)+\alpha|T| =C(T)+α∣T∣其中经验熵为 H t ( T ) = − ∑ k N t k N t l o g N t k N t H_t(T)=-\underset {k} {\sum} \frac{N_{tk}}{N_t}log\frac{N_{tk}}{N_t} Ht(T)=−k∑NtNtklogNtNtk那么, C ( T ) , ∣ T ∣ C(T),|T| C(T),∣T∣就分别表示训练误差与模型复杂度。
(五)CART算法
CART算法=决策树生成+决策树剪枝
1. CART生成
1.1. 回归树的生成
算法(最小二乘回归树生成算法)
输入:训练集数据
D
D
D
输出:回归树
f
(
X
)
f(X)
f(X)
在输入空间中递归地将每个区域二分:
(1)选择最优切分变量
j
j
j与切分点
s
s
s,求解
m
i
n
j
,
s
[
m
i
n
c
1
∑
x
i
∈
R
1
(
j
,
s
)
(
y
i
−
c
1
)
2
+
m
i
n
c
2
∑
x
i
∈
R
2
(
j
,
s
)
(
y
i
−
c
2
)
2
]
\underset{j,s} {min}[\underset{c_1}{min}\underset{x_i\in R_1(j,s)}{\sum}(y_i-c_1)^2+\underset{c_2}{min}\underset{x_i\in R_2(j,s)}{\sum}(y_i-c_2)^2]
j,smin[c1minxi∈R1(j,s)∑(yi−c1)2+c2minxi∈R2(j,s)∑(yi−c2)2]
(2)用选定的对
(
j
,
s
)
(j,s)
(j,s)划分区域并决定相应的输出值
R
1
(
j
,
s
)
=
{
x
∣
x
(
j
)
≤
s
}
,
R
2
(
j
,
s
)
=
{
x
∣
x
(
j
)
>
s
}
R_1(j,s)=\{x|x^{(j)}\leq s\},R_2(j,s)=\{x|x^{(j)}> s\}
R1(j,s)={x∣x(j)≤s},R2(j,s)={x∣x(j)>s}
c
^
m
=
1
N
m
∑
x
i
∈
R
m
(
j
,
s
)
y
i
,
x
∈
R
m
,
m
=
1
,
2
\hat c_m=\frac 1 {N_m}\underset{x_i\in R_m(j,s)}{\sum}y_i,x\in R_m,m=1,2
c^m=Nm1xi∈Rm(j,s)∑yi,x∈Rm,m=1,2
(3)反复调用(1)(2)至满足条件
(4)将空间划分为
M
M
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)=\overset {M}{\underset{m=1}{\sum}}\hat c_mI(x\in R_m)
f(x)=m=1∑Mc^mI(x∈Rm)
1.2. 分类树的生成
分类树采用基尼指数选择最优特征,同时决定该特征的最优二值切分点。
定义(基尼指数)
分类问题中,假设有
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)=\overset {K}{\underset{k=1}{\sum}}p_k(1-p_k)=1-\overset {K}{\underset{k=1}{\sum}}p_k^2
Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2 对于二分类问题,有
G
i
n
i
(
p
)
=
2
p
(
1
−
p
)
Gini(p)=2p(1-p)
Gini(p)=2p(1−p) 对于给定样品集
D
D
D其基尼指数为
G
i
n
i
(
D
)
=
1
−
∑
k
=
1
K
(
∣
C
k
∣
∣
D
∣
)
2
Gini(D)=1-\overset {K}{\underset{k=1}{\sum}}(\frac{|C_k|}{|D|})^2
Gini(D)=1−k=1∑K(∣D∣∣Ck∣)2这里
C
k
C_k
Ck是
D
D
D中属于第
k
k
k类的样本子集,
K
K
K是类的个数。
若
D
D
D根据特征
A
A
A取某一可能值
a
a
a被分割成
D
1
,
D
2
D_1,D_2
D1,D2两部分,则在特征
A
A
A的条件下,集合
D
D
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
)
Gini(D,A)=\frac{D_1}{D}Gini(D_1)+\frac{D_2}{D}Gini(D_2)
Gini(D,A)=DD1Gini(D1)+DD2Gini(D2) 基尼指数
G
i
n
i
(
D
)
Gini(D)
Gini(D)表示集合
D
D
D的不确定性;
G
i
n
i
(
D
,
A
)
Gini(D,A)
Gini(D,A)表示经
A
=
a
A=a
A=a分割后集合
D
D
D的不确定性。
例:如上样本表,应用CART算法生成决策树。
解:(1)年龄
G
i
n
i
(
D
∣
A
1
=
青年
)
=
5
15
(
2
×
2
5
×
3
5
)
+
10
15
(
2
×
7
10
×
3
10
)
=
0.44
Gini(D|A_1=青年)=\frac{5}{15}(2\times \frac{2}{5}\times \frac{3}{5})+\frac{10}{15}(2\times \frac{7}{10}\times \frac{3}{10})=0.44
Gini(D∣A1=青年)=155(2×52×53)+1510(2×107×103)=0.44
G
i
n
i
(
D
∣
A
1
=
中年
)
=
0.48
Gini(D|A_1=中年)=0.48
Gini(D∣A1=中年)=0.48
G
i
n
i
(
D
∣
A
1
=
老年
)
=
0.44
Gini(D|A_1=老年)=0.44
Gini(D∣A1=老年)=0.44
(2)工作
G
i
n
i
(
D
∣
A
2
=
1
)
=
0.32
Gini(D|A_2=1)=0.32
Gini(D∣A2=1)=0.32
(3)房子
G
i
n
i
(
D
∣
A
3
=
1
)
=
0.27
Gini(D|A_3=1)=0.27
Gini(D∣A3=1)=0.27
(4)信贷
G
i
n
i
(
D
∣
A
4
=
1
)
=
0.36
Gini(D|A_4=1)=0.36
Gini(D∣A4=1)=0.36
G
i
n
i
(
D
∣
A
4
=
2
)
=
0.47
Gini(D|A_4=2)=0.47
Gini(D∣A4=2)=0.47
G
i
n
i
(
D
∣
A
4
=
3
)
=
0.32
Gini(D|A_4=3)=0.32
Gini(D∣A4=3)=0.32可知,
A
3
A_3
A3为最优特征,依此类推。
2. CART剪枝
1. 剪枝,形成子树序列
2. 在子树序列中通过交叉验证选取最优子树