决策树一种if-then规则的集合,具有较好的可解读性,一种分类/回归方法
决策树模型与学习
模型定义
构成
- 节点:
(1)内部节点:特征/属性/条件
(2) 叶节点:类 - 有向边
if-then规则集合
从根节点到叶节点,一条路径构成一条规则
要求: 互斥且完备
每一个实例可以也仅可以被一条规则覆盖
决策树与条件概率分布
决策树将空间划分为不相交的单元,每个单元对应一个条件概率分布,每条路径对应一个单元,每个叶节点强行分类到概率较大的那类
决策树学习
给定训练集:
T
=
{
(
x
1
,
y
1
)
,
⋯
,
(
x
n
,
y
n
)
}
T=\{(x_1,y_1),\cdots,(x_n,y_n)\}
T={(x1,y1),⋯,(xn,yn)}
x特征向量,y分类
目标
构建决策树模型,正确分类
决策树生成
- 构建根节点,把所有数据放在根节点
- 选择最优特征,对数据集进行划分
- 递归选择特征,按特征将数据集进行分类
决策树剪枝
避免过拟合,提高泛化能力
特征选择
特征选择问题
目的:选择具有分类能力的特征
分类能力:如果用这个特征分类后,分类前后差距不大,则该特征没有分类能力
分类准则:信息增益比,信息增益
熵
熵
随机变量不确定性的度量,熵越大,随机变量的不确定越大
随机变量的熵
H
(
P
)
=
H
(
X
)
=
−
∑
i
n
p
i
l
o
g
p
i
H(P)=H(X)=-\sum_i^np_ilogp_i
H(P)=H(X)=−i∑npilogpi
0
≤
H
(
P
)
≤
n
l
o
g
n
0\leq H(P)\leq nlogn
0≤H(P)≤nlogn
比特/那特
条件熵
H
(
Y
∣
X
)
=
∑
x
1
H
(
Y
∣
X
=
x
i
)
P
(
X
=
x
i
)
H(Y|X)=\sum_{x_1}H(Y|X=x_i)P(X=x_i)
H(Y∣X)=x1∑H(Y∣X=xi)P(X=xi)
经验熵/经验条件熵
如果出现
0
l
o
g
0
0log0
0log0的情况,那么规定
0
l
o
g
0
=
0
0log0=0
0log0=0
信息增益
得知特征 X X X的信息,让类 Y Y Y的不确定性减少的程度
定义
特征
A
A
A对数据集
D
D
D的信息增益
g
(
D
,
A
)
g(D,A)
g(D,A)
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 ( Y ) − H ( Y ∣ X ) H(Y)-H(Y|X) H(Y)−H(Y∣X)称为互信息
计算方式
- 计算数据集的经验熵
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g ( ∣ C k ∣ ∣ D ∣ ) H(D)=-\sum_{k=1}^K\frac{|C_k|}{|D|}log(\frac{|C_k|}{|D|}) H(D)=−k=1∑K∣D∣∣Ck∣log(∣D∣∣Ck∣) - 计算特征A对数据集D的条件经验熵
H ( D | A ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ l o g ( ∣ D i k ∣ ∣ D i ∣ ) H(D|A)=-\sum_{i=1}^n\frac{|D_i|}{|D|}\sum_{k=1}^K\frac{|D_{ik}|}{|D_i|}log(\frac{|D_{ik}|}{|D_i|}) H(D|A)=−i=1∑n∣D∣∣Di∣k=1∑K∣Di∣∣Dik∣log(∣Di∣∣Dik∣) - 计算信息增益
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
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)
H
A
(
D
)
H_A(D)
HA(D):用
A
A
A对数据集进行划分
H
A
(
D
)
=
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
l
o
g
(
∣
D
i
∣
∣
D
∣
)
H_A(D)=\sum_{i=1}^n\frac{|D_i|}{|D|}log(\frac{|D_i|}{|D|})
HA(D)=∑i=1n∣D∣∣Di∣log(∣D∣∣Di∣)
决策树生成
ID3算法
在决策树各个节点用信息增益准则选择特征,递归构建决策树
输入: 数据集D,特征集A,阈值
ϵ
\epsilon
ϵ
输出: 决策树T
过程:
C4.5 算法
用信息增益比作为选择准则
避免ID3对于分枝较多的属性的倾向性
分枝多
H
A
D
H_AD
HAD 大
决策树剪枝
降低决策树复杂度,防止过拟合
损失函数
C
α
(
T
)
=
∑
i
=
1
∣
T
∣
N
t
H
t
(
T
)
+
α
∣
T
∣
C_\alpha(T)=\sum_{i=1}^{|T|}N_t H_t(T)+\alpha|T|
Cα(T)=i=1∑∣T∣NtHt(T)+α∣T∣
其中
H
t
(
T
)
=
−
∑
k
N
t
k
N
t
l
o
g
N
t
k
N
t
H_t(T)=-\sum_{k}\frac{N_{tk}}{N_t}log\frac{N_{tk}}{N_t}
Ht(T)=−∑kNtNtklogNtNtk
越大的
α
\alpha
α意味着越简单的树
CART算法
- 决策树生成:训练数据集
- 决策树剪枝:验证数据集对已经生成的树进行剪枝
回归树生成
回归树对应着输入空间的划分,将特征空间划分为
M
M
M个单元
R
1
,
⋯
,
R
M
R_1,\cdots,R_M
R1,⋯,RM,每个单元有固定输出值
c
1
,
⋯
,
c
m
c_1,\cdots,c_m
c1,⋯,cm
f
(
x
)
=
∑
m
c
m
I
(
x
∈
R
m
)
f(x)=\sum_m c_m I(x\in R_m)
f(x)=m∑cmI(x∈Rm)
参数估计:
平方误差最小
∑
x
i
∈
R
m
(
y
i
−
f
(
x
i
)
)
2
\sum_{x_i\in R_m}(y_i-f(x_i))^2
∑xi∈Rm(yi−f(xi))2
因此:
c
^
m
=
a
v
e
(
y
i
∣
x
i
∈
R
m
)
\hat c_m=ave(y_i|x_i\in R_m)
c^m=ave(yi∣xi∈Rm)
划分依据:
启发式算法,现寻找切分变量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}
通过求解目标函数寻找切分变量和切分点:
分类树生成
基尼指数的定义:
G
i
n
i
(
p
)
=
∑
k
=
1
K
p
k
(
1
−
p
k
)
=
1
−
∑
k
=
1
K
p
k
2
Gini(p)=\sum_{k=1}^Kp_k(1-p_k)=1-\sum_{k=1}^Kp_k^2
Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
给定样本集合
G
i
n
i
(
D
)
=
1
−
∑
k
=
1
K
(
∣
C
K
∣
∣
D
∣
)
2
Gini(D)=1-\sum_{k=1}^K(\frac{|C_K|}{|D|})^2
Gini(D)=1−k=1∑K(∣D∣∣CK∣)2
在特征A下:
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)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)
CART 剪枝
剪枝前的损失函数:
C
α
(
T
t
)
=
C
(
T
t
)
+
α
∣
T
t
∣
C_\alpha(T_t)=C(T_t)+\alpha |T_t|
Cα(Tt)=C(Tt)+α∣Tt∣
剪枝后的损失函数:
C
α
(
t
)
=
C
(
t
)
+
α
C_\alpha(t)=C(t)+\alpha
Cα(t)=C(t)+α
存在
α
\alpha
α
C
α
(
T
t
)
=
C
(
t
)
C_\alpha(T_t)=C(t)
Cα(Tt)=C(t)
α
=
g
(
t
)
=
c
(
t
)
−
C
(
T
t
)
∣
T
t
∣
−
1
\alpha=g(t)=\frac{c(t)-C(T_t)}{|T_t|-1}
α=g(t)=∣Tt∣−1c(t)−C(Tt)
对
T
0
T_0
T0所有的t计算
g
(
t
)
g(t)
g(t),选取最小的进行剪枝,且令
α
1
=
g
(
t
)
\alpha_1=g(t)
α1=g(t)
那么
T
1
T_1
T1为
[
α
1
,
α
2
)
[\alpha_1,\alpha_2)
[α1,α2)的最优子树,不断增加
α
\alpha
α的值,产生新的最优区间