决策树(decision tree)
简介
决策树是一种基本的分类与回归方法。主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。决策树学习通常包括包括3个步骤:特征选择、决策树的生成和决策树的修剪。
决策树学习的思想主要来源于由 Q u i n l a n Quinlan Quinlan在 1986 1986 1986年提出的** I D 3 ID3 ID3算法和 1993 1993 1993年提出的 C 4.5 C4.5 C4.5算法**,以及 B r e i m a n Breiman Breiman等人在 1985 1985 1985年提出的** C A R T CART CART算法。**
决策树特征选择的常用指标
特征选择常用指标有:信息增益,信息增益比,基尼指数
- 熵(entropy)
在信息论和概率统计中,熵是表示随机变量不确定性的度量。设
X
X
X是一个取有限个值得离散随机变量,其概率分布为
P
(
X
=
x
i
)
=
p
i
,
i
=
1
,
2
,
⋯
,
n
\begin{aligned} P(X=x_i)=p_i, \quad i=1,2,\cdots,n \end{aligned}
P(X=xi)=pi,i=1,2,⋯,n
则随机变量
X
X
X的熵定义为$
H
(
X
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
\begin{aligned} H(X)=-\sum\limits_{i=1}^np_ilogp_i \end{aligned}
H(X)=−i=1∑npilogpi
由定义可知,熵只依赖于
X
X
X的分布,而与
X
X
X的取值无关,所以也可将
X
X
X的熵记作
H
(
p
)
H(p)
H(p),即
H
(
p
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
\begin{aligned} H(p)=-\sum\limits_{i=1}^np_ilogp_i \end{aligned}
H(p)=−i=1∑npilogpi
熵越大,随机变量的不确定性就越大。
- 条件熵(conditional entropy)
设由随机变量
(
X
,
Y
)
(X,Y)
(X,Y),其联合概率分布为:
P
(
X
=
x
i
,
Y
=
y
i
)
=
p
i
j
,
i
=
1
,
2
,
⋯
,
n
;
j
=
1
,
2
,
⋯
,
m
\begin{aligned} P(X=x_i,Y=y_i)=p_{ij}, \quad i=1,2,\cdots,n;\quad j=1,2,\cdots,m \end{aligned}
P(X=xi,Y=yi)=pij,i=1,2,⋯,n;j=1,2,⋯,m
条件熵
H
(
Y
∣
X
)
H(Y|X)
H(Y∣X)表示在已知随机变量
X
X
X的条件下随机变量
Y
Y
Y的不确定性。随机变量
X
X
X给定的条件下随机变量
Y
Y
Y的条件熵
H
(
Y
∣
X
)
H(Y|X)
H(Y∣X),定义为
X
X
X给定条件下
Y
Y
Y的条件概率分布的熵对
X
X
X的数学期望
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
i
H
(
Y
∣
X
=
x
i
)
其
中
p
i
=
P
(
X
=
x
i
)
,
i
=
1
,
2
,
⋯
,
n
\begin{aligned} H(Y|X)=\sum\limits_{i=1}^np_iH(Y|X=x_i) \quad \quad 其中p_i=P(X=x_i),\quad i=1,2,\cdots,n \end{aligned}
H(Y∣X)=i=1∑npiH(Y∣X=xi)其中pi=P(X=xi),i=1,2,⋯,n
-
**信息增益(information gain)---- ** I D 3 ID3 ID3
信息增益表示得知特征的信息而使得类的信息的不确定性减少的程度。
信息增益表示得知特征 X X X的信息而使得类 Y Y Y的信息的不确定性减少的程度。
定义:
特征
A
A
A对训练数据集
D
D
D的信息增益
g
(
D
,
A
)
g(D,A)
g(D,A),定义为集合
D
D
D的熵
H
(
D
)
H(D)
H(D)与特征
A
A
A给定条件下
D
D
D的经验条件熵
H
(
D
∣
A
)
H(D|A)
H(D∣A)之差,即:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
\begin{aligned} g(D,A)=H(D)-H(D|A) \end{aligned}
g(D,A)=H(D)−H(D∣A)
一般地,熵
H
(
Y
)
H(Y)
H(Y)与条件熵
H
(
Y
∣
X
)
H(Y|X)
H(Y∣X)之差称为互信息,决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
根据信息增益准则的特征选择方法是:对训练数据集(或子集) D D D,计算其内阁特征的信息增益,并比较它们的大小,选择信息增益最大的特征。
**信息增益的缺点:**以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征问题。
- **信息增益比 (information gain ratio) ---- ** C 4.5 C4.5 C4.5
针对信息增益的缺点,提出了信息增益比,可以校正这一问题,这是特征选择的另一准则
**定义:**特征
A
A
A对训练数据集
D
D
D的信息增益比
g
R
(
D
,
A
)
g_R(D,A)
gR(D,A)定义为其信息增益
g
(
D
,
A
)
g(D,A)
g(D,A)与训练数据集
D
D
D关于特征
A
A
A的值的熵
H
A
(
D
)
H_A(D)
HA(D)之比,即
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
\begin{aligned} g_R(D,A)=\frac{g(D,A)}{H_A(D)} \end{aligned}
gR(D,A)=HA(D)g(D,A)
其中,
H
A
=
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
log
2
∣
D
i
∣
∣
D
∣
H_A=-\sum\limits_{i=1}^n\frac{|D_i|}{|D|}\log _2{\frac{|D_i|}{|D|}}
HA=−i=1∑n∣D∣∣Di∣log2∣D∣∣Di∣,
n
n
n是特征
A
A
A取值的个数。
- 基尼指数 ---- C A R T CART CART
分类问题中,假设有
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
\begin{aligned} Gini(p)=\sum\limits_{k=1}^Kp_k(1-p_k)=1-\sum\limits_{k=1}^Kp_k^2 \end{aligned}
Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
对于二分类问题,若样本点属于第
1
1
1个类的概率是
p
p
p,则概率分布的基尼指数为
G
i
n
i
(
p
)
=
2
p
(
1
−
p
)
\begin{aligned} Gini(p)=2p(1-p) \end{aligned}
Gini(p)=2p(1−p)
对于给定的样本集合
D
D
D,其基尼指数为
G
i
n
i
(
D
)
=
1
−
∑
k
=
1
K
(
∣
C
k
∣
∣
D
∣
)
2
\begin{aligned} Gini(D)=1-\sum\limits_{k=1}^K(\frac{|C_k|}{|D|})^2 \end{aligned}
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_1
D1和
D
2
D_2
D2两部分,即
D
1
=
(
x
,
y
)
ϵ
D
∣
A
(
x
)
=
a
,
D
2
=
D
−
D
1
\begin{aligned} D_1={(x,y)\epsilon D|A(x)=a}, \quad D_2=D-D_1 \end{aligned}
D1=(x,y)ϵD∣A(x)=a,D2=D−D1
则在特征
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
)
\begin{aligned} Gini(D|A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) \end{aligned}
Gini(D∣A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(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的不确定性。基尼指数值越大,样本集合的不确定性也就越大,这一点与熵相似。
例子
假设共有 5 5 5个人追求场景中的女孩,年龄有两个属性(老,年轻),长相有三种属性(帅,一般,丑),工资有三个属性(高,中等,低),会写代码有两种属性(会,不会),最终分类结果有两类(见,不见)。我们根据女孩有监督的主观意愿可以等到下表
年龄 | 长相 | 工资 | 写代码 | 类别 | |
---|---|---|---|---|---|
小A | 老 | 帅 | 高 | 不会 | 不见 |
小B | 年轻 | 一般 | 中等 | 会 | 见 |
小C | 年轻 | 丑 | 高 | 不会 | 不见 |
小D | 年轻 | 一般 | 高 | 会 | 见 |
小L | 年轻 | 一般 | 低 | 不会 | 不见 |
- I D 3 − − − − ID3---- ID3−−−−最大信息增益
H ( D ) = − 3 5 log 2 3 5 − 2 5 log 2 2 5 = 0.971 \begin{aligned} H(D)=-\frac{3}{5}\log_2 \frac{3}{5}-\frac{2}{5}\log_2\frac{2}{5}=0.971 \end{aligned} H(D)=−53log253−52log252=0.971
H ( D ∣ 年 龄 ) = 1 5 H ( 老 ) + 4 5 H ( 年 轻 ) = 1 5 ( − 0 ) + 4 5 ( − 2 4 log 2 2 4 − 2 4 log 2 2 4 ) = 0.8 H ( D ∣ 长 相 ) = 1 5 H ( 帅 ) + 1 5 H ( 丑 ) + 3 5 H ( 一 般 ) = 1 5 ( − 0 ) + 1 5 ( − 0 ) + 3 5 ( − 1 3 log 2 1 3 − 2 3 log 2 2 3 ) = 0.551 H ( D ∣ 工 资 ) = 3 5 H ( 高 ) + 1 5 H ( 中 等 ) + 1 5 H ( 低 ) = 3 5 ( − 1 3 log 2 1 3 − 2 3 log 2 2 3 ) + 1 5 ( − 0 ) + 1 5 ( − 0 ) = 0.551 H ( D ∣ 写 代 码 ) = 2 5 H ( 会 ) + 3 5 H ( 不 会 ) = 2 5 ( − 0 ) + 3 5 ( − 0 ) = 0 \begin{aligned} H(D|年龄)&=\frac{1}{5}H(老)+\frac{4}{5}H(年轻) \\ &=\frac{1}{5}(-0)+\frac{4}{5}(-\frac{2}{4}\log_2\frac{2}{4}-\frac{2}{4}\log_2\frac{2}{4})=0.8 \\ H(D|长相)&=\frac{1}{5}H(帅)+\frac{1}{5}H(丑)+\frac{3}{5}H(一般) \\ &=\frac{1}{5}(-0)+\frac{1}{5}(-0)+\frac{3}{5}(-\frac{1}{3}\log_2\frac{1}{3}-\frac{2}{3}\log_2\frac{2}{3}) =0.551 \\ H(D|工资)&=\frac{3}{5}H(高)+\frac {1}{5}H(中等)+\frac{1}{5}H(低) \\ &=\frac{3}{5}(-\frac{1}{3}\log_2\frac{1}{3}-\frac{2}{3}\log_2\frac{2}{3})+\frac{1}{5}(-0)+\frac{1}{5}(-0)=0.551 \\ H(D|写代码)&=\frac{2}{5}H(会)+\frac{3}{5}H(不会) \\ &=\frac{2}{5}(-0)+\frac{3}{5}(-0)=0 \end{aligned} H(D∣年龄)H(D∣长相)H(D∣工资)H(D∣写代码)=51H(老)+54H(年轻)=51(−0)+54(−42log242−42log242)=0.8=51H(帅)+51H(丑)+53H(一般)=51(−0)+51(−0)+53(−31log231−32log232)=0.551=53H(高)+51H(中等)+51H(低)=53(−31log231−32log232)+51(−0)+51(−0)=0.551=52H(会)+53H(不会)=52(−0)+53(−0)=0
根据
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D,A)=H(D)-H(D|A)
g(D,A)=H(D)−H(D∣A)得
g
(
D
,
年
龄
)
=
0.171
g
(
D
,
长
相
)
=
0.42
g
(
D
,
工
资
)
=
0.42
g
(
D
,
写
代
码
)
=
0.971
\begin{aligned} g(D,年龄)&=0.171 \\ g(D,长相) &= 0.42 \\ g(D,工资) &=0.42 \\ g(D,写代码) &=0.971 \end{aligned}
g(D,年龄)g(D,长相)g(D,工资)g(D,写代码)=0.171=0.42=0.42=0.971
由此可得,特征”写代码“得信息增益最大,所有得样本根据此特征,可以直接被分到叶结点(即见或不见)中,完成决策树生长。
- C 4.5 − − − − C4.5 ---- C4.5−−−− 最大信息增益比
H 年 龄 ( D ) = − 1 5 log 2 1 5 − 4 5 log 2 4 5 = 0.722 H 长 相 ( D ) = − 1 5 log 2 1 5 − 3 5 log 2 3 5 − 1 5 log 2 1 5 = 1.371 H 工 资 ( D ) = − 3 5 log 2 3 5 − 1 5 log 2 1 5 − 1 5 log 2 1 5 = 1.371 H 写 代 码 ( D ) = − 3 5 log 2 3 5 − 2 5 log 2 2 5 = 0.971 \begin{aligned} H_{年龄}(D)&=-\frac{1}{5}\log_2 \frac{1}{5}-\frac{4}{5}\log_2 \frac{4}{5}=0.722 \\ H_{长相}(D)&=-\frac{1}{5}\log_2 \frac{1}{5}-\frac{3}{5}\log_2\frac{3}{5}-\frac{1}{5}\log_2\frac{1}{5}=1.371 \\ H_{工资}(D)&=-\frac{3}{5}\log_2\frac{3}{5}-\frac{1}{5}\log_2 \frac{1}{5}-\frac{1}{5}\log_2\frac{1}{5}=1.371 \\ H_{写代码}(D)&=-\frac{3}{5}\log_2\frac{3}{5}-\frac{2}{5}\log_2\frac{2}{5}=0.971 \end{aligned} H年龄(D)H长相(D)H工资(D)H写代码(D)=−51log251−54log254=0.722=−51log251−53log253−51log251=1.371=−53log253−51log251−51log251=1.371=−53log253−52log252=0.971
根据
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)得
g
R
(
D
,
年
龄
)
=
0.236
g
R
(
D
,
长
相
)
=
0.402
g
R
(
D
,
工
资
)
=
0.402
g
R
(
D
,
写
代
码
)
=
1
\begin{aligned} g_R(D,年龄)&=0.236 \\ g_R(D,长相)&=0.402 \\ g_R(D,工资)&=0.402 \\ g_R(D,写代码)&=1 \end{aligned}
gR(D,年龄)gR(D,长相)gR(D,工资)gR(D,写代码)=0.236=0.402=0.402=1
信息增益比最大的仍然是"写代码",但是通过信息增益比,特征”年龄“对应的指标上升了,而特征”长相“和特征”工资“却有所下降。
- C A R T − − − − CART---- CART−−−−最大基尼指数
G
i
n
i
Gini
Gini描述的是数据的纯度,与信息熵含有类似。
C
A
R
T
CART
CART在每一次迭代中选择基尼指数最小的特征及其对应的切分点进行分类。但与
I
D
3
ID3
ID3、
C
4.5
C4.5
C4.5不同的是,
C
A
R
T
CART
CART是一棵二叉树,采用二元切割法,每一步将数据按特征
A
A
A的取值切成两份,分别进入左右子树。特征
A
A
A的
G
i
n
i
Gini
Gini指数定义为
G
i
n
i
(
D
∣
A
)
=
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
G
i
n
i
(
D
i
)
\begin{aligned} Gini(D|A)=\sum\limits_{i=1}^n\frac{|D_i|}{|D|}Gini(D_i) \end{aligned}
Gini(D∣A)=i=1∑n∣D∣∣Di∣Gini(Di)
G i n i ( D ∣ 年 龄 = 老 ) = 1 5 ( 2 × 0 × 1 ) + 4 5 ( 2 × 2 4 × 2 4 ) = 0.4 G i n i ( D ∣ 年 龄 = 年 轻 ) = 4 5 ( 2 × 2 4 × 2 4 ) + 1 5 ( 2 × 0 × 1 ) = 0.4 G i n i ( D ∣ 长 相 = 帅 ) = 1 5 ( 2 × 0 × 1 ) + 4 5 ( 2 × 2 4 × 2 4 ) = 0.4 G i n i ( D ∣ 长 相 = 一 般 ) = 3 5 ( 2 × 2 3 × 1 3 ) + 2 5 ( 2 × 1 × 0 ) = 0.27 G i n i ( D ∣ 长 相 = 丑 ) = 1 5 ( 2 × 0 × 1 ) + 4 5 ( 2 × 2 4 × 2 4 ) = 0.4 G i n i ( D ∣ 工 资 = 高 ) = 3 5 ( 2 × 1 3 × 2 3 ) + 2 5 ( 2 × 1 2 × 1 2 ) = 0.47 G i n i ( D ∣ 工 资 = 中 等 ) = 1 5 ( 2 × 1 × 0 ) + 4 5 ( 2 × 1 4 × 3 4 ) = 0.3 G i n i ( D ∣ 工 资 = 低 ) = 1 5 ( 2 × 0 × 1 ) + 4 5 ( 2 × 2 4 × 2 4 ) = 0.4 G i n i ( D ∣ 代 码 = 会 ) = 2 5 ( 2 × 1 × 0 ) + 3 5 ( 2 × 0 × 1 ) = 0 G i n i ( D ∣ 代 码 = 不 会 ) = 3 5 ( 2 × 0 × 1 ) + 2 5 ( 2 × 1 × 1 ) = 0 \begin{aligned} Gini(D|年龄=老)&=\frac{1}{5}(2\times0\times1)+\frac{4}{5}(2\times\frac{2}{4}\times\frac{2}{4})=0.4 \\ Gini(D|年龄=年轻)&=\frac{4}{5}(2\times\frac{2}{4}\times\frac{2}{4})+\frac{1}{5}(2\times0\times1)=0.4 \\ Gini(D|长相=帅)&=\frac{1}{5}(2\times0\times1)+\frac{4}{5}(2\times\frac{2}{4}\times\frac{2}{4})=0.4 \\ Gini(D|长相=一般)&=\frac{3}{5}(2\times\frac{2}{3}\times\frac{1}{3})+\frac{2}{5}(2\times1\times0)=0.27 \\ Gini(D|长相=丑)&=\frac{1}{5}(2\times0\times1)+\frac{4}{5}(2\times\frac{2}{4}\times\frac{2}{4})=0.4 \\ Gini(D|工资=高)&=\frac{3}{5}(2\times\frac{1}{3}\times\frac{2}{3})+\frac{2}{5}(2\times\frac{1}{2}\times\frac{1}{2})=0.47 \\ Gini(D|工资=中等)&=\frac{1}{5}(2\times1\times0)+\frac{4}{5}(2\times\frac{1}{4}\times\frac{3}{4})=0.3 \\ Gini(D|工资=低)&=\frac{1}{5}(2\times0\times1)+\frac{4}{5}(2\times\frac{2}{4}\times\frac{2}{4})=0.4 \\ Gini(D|代码=会)&=\frac{2}{5}(2\times1\times0)+\frac{3}{5}(2\times0\times1)=0 \\ Gini(D|代码=不会)&=\frac{3}{5}(2\times0\times1)+\frac{2}{5}(2\times1\times1)=0 \end{aligned} Gini(D∣年龄=老)Gini(D∣年龄=年轻)Gini(D∣长相=帅)Gini(D∣长相=一般)Gini(D∣长相=丑)Gini(D∣工资=高)Gini(D∣工资=中等)Gini(D∣工资=低)Gini(D∣代码=会)Gini(D∣代码=不会)=51(2×0×1)+54(2×42×42)=0.4=54(2×42×42)+51(2×0×1)=0.4=51(2×0×1)+54(2×42×42)=0.4=53(2×32×31)+52(2×1×0)=0.27=51(2×0×1)+54(2×42×42)=0.4=53(2×31×32)+52(2×21×21)=0.47=51(2×1×0)+54(2×41×43)=0.3=51(2×0×1)+54(2×42×42)=0.4=52(2×1×0)+53(2×0×1)=0=53(2×0×1)+52(2×1×1)=0
在”年龄“ ”长相“ ”工资“ ”写代码“四个特征中,我们可以很快地发现特征”写代码“的 G i n i Gini Gini指数最小为 0 0 0,因此选择特征”写代码“作为最优特征,”写代码=会“为最优切分点。按照这种切分,从根结点会直接产生两个叶结点,基尼指数降为 0 0 0,完成决策树生长。
比较三种方式
- I D 3 ID3 ID3是采用信息增益作为评价标准;信息增益反映的是给定条件以后不确定性减少的程度,特征取值越多就意味着确定性更高,也就是条件熵越小,信息增益越大,如 D N A DNA DNA,使得这种分类的泛化能力是十分弱的,严重会出现过拟合现象。 C 4.5 C4.5 C4.5实际上是对 I D 3 ID3 ID3进行优化,通过引入信息增益比,一定程度上对取值比较多的特征进行处罚,避免 I D 3 ID3 ID3出现过拟合的特征,提升决策树的泛化能力。
- I D 3 ID3 ID3只能处理离散型变量,而 C 4.5 C4.5 C4.5和 C A R T CART CART可以处理连续性变量。
- I D 3 ID3 ID3和 C 4.5 C4.5 C4.5只能用于分类任务, C A R T CART CART既可以做分类任务也可以做回归任务(回归树使用最小平方误差准则)。
- I D 3 ID3 ID3对样本特征缺失值比较敏感, C 4.5 C4.5 C4.5和 C A R T CART CART可以对缺失值进行不同方式的处理。
- I D 3 ID3 ID3和 C 4.5 C4.5 C4.5可以有多叉分支, C A R T CART CART每个结点只会有两个分支。
参考文献
李航-------统计学习方法
诸葛越-------百面机器学习