一.决策树模型:
决策树由结点和有向边组成,内部结点表示一个特征或属性,外部一个结点表示一个类。
决策树学习常用的算法有ID3,C4.5,CART
二.信息增益
熵是表示随机变量不确定性的度量
P
(
X
=
x
i
)
=
p
i
,
则
随
机
变
量
X
的
熵
定
义
为
:
H
(
x
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
,
P
(
X
=
1
)
=
P
,
P
(
X
=
0
)
=
1
−
p
,
H
(
P
)
=
−
p
l
o
g
2
p
−
(
1
−
p
)
l
o
g
2
(
1
−
p
)
P(X=x_i)=p_i,则随机变量X的熵定义为:H(x)=-\sum_{i=1}^np_i log p_i,P(X=1)=P,P(X=0)=1-p ,H(P)=-plog_2p-(1-p)log_2(1-p)
P(X=xi)=pi,则随机变量X的熵定义为:H(x)=−∑i=1npilogpi,P(X=1)=P,P(X=0)=1−p,H(P)=−plog2p−(1−p)log2(1−p),可以看到当P=0.5,熵为1 ,数据分布最为混乱,熵也是最混乱的
P
(
X
=
x
i
,
Y
=
y
j
)
=
p
i
j
,
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
i
H
(
Y
∣
X
=
x
i
)
P(X=x_i,Y=y_j)=p_{ij} , H(Y|X)=\sum_{i=1}^np_iH(Y|X=x_i)
P(X=xi,Y=yj)=pij,H(Y∣X)=∑i=1npiH(Y∣X=xi)
对于一个数据集D,特征A对数据集D的信息增益 g(D,A)=H(D)-H(D|A)。一般的,熵H(Y)与条件熵H(Y|X)之差称为互信息,当熵和条件熵的概率由数据估计(特别是极大似然估计),所得到的熵与条件熵分别称为经验熵和经验条件熵,信息增益表示得知特征X的信息而使得类Y的信息不确定性减少的程度。信息增益大的特征具有更强的分类能力。决策树的根节点就是分类能力最轻的特征,也就是经验信息熵最大,也就是信息增益最大的即表示该特征对分类不确定性减少程度最大
三.信息增益比
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征问题,使用信息增益比可以对这个问题进行校正
g
R
(
D
,
A
)
=
g
(
D
,
A
)
/
H
A
(
D
)
g_R(D,A)=g(D,A)/H_A(D)
gR(D,A)=g(D,A)/HA(D)其中
H
A
(
D
)
=
−
∑
i
=
1
n
∣
D
i
∣
/
∣
D
∣
l
o
g
2
∣
D
i
∣
/
∣
D
∣
H_A(D)=-\sum_{i=1}^n|D_i|/|D|log_2|D_i|/|D|
HA(D)=−∑i=1n∣Di∣/∣D∣log2∣Di∣/∣D∣,n是特征A的取值个数,H(D)其实就是特征A的熵。
四.ID3算法
输入数据集D,特征A,阈值a,输出决策树T
(1)若D中所有实例属于同一类Ck,则T为单节点树,并将Ck作为该结点的类标记。
(2)若A=空集(就是说只有分类没有特征),就将D中分类最多的类Ck作为该结点的类标记。
(3)否则,按照算法5.1计算特征d对D的增益,选择增益最大的特征Ai。
(4)如果Ai信息增益小于阈值a,则为T为单结点,并将D中的实例最大的类Ck为结点的类标记。
五.C4.5的生成算法
**输入数据集D,特征A,阈值a,输出决策树T
C4.5算法与算法ID3算法相似,只不过C4.5用信息增益比来选择特征
六.决策树的剪枝
1.决策树递归算法生成的决策树,对训练数据分类很准确但对未知数据分类却没有那么准确了容易出现过拟合。
2.决策树学习的损失函数可以定义为:
C
a
(
T
)
=
∑
t
=
1
∣
T
∣
N
t
H
t
(
T
)
+
α
∣
T
∣
C_a(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T|
Ca(T)=∑t=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_kN_{tk}/N_tlogN_{tk}/N_t
Ht(T)=−∑kNtk/NtlogNtk/Nt , 其中树T的叶结点个数为|T|,t是树T的叶结点,该叶结点有Nt个样本点,其中k类的样本点有Ntk个。
3.一组叶结点回缩到其叶结点之前和之后树的
T
B
T_B
TB,
T
A
T_A
TA,其对应的损失函数值为C(
T
B
T_B
TB),C(
T
A
T_A
TA),如果C(
T
B
T_B
TB) > C(
T
A
T_A
TA)则进行剪枝。
4.输入:生成算法产生的整个树T,参数a,输出的修剪后的字数Ta
(1)计算每个结点的经验熵。
(2)递归从树的叶结点向上回缩。
(3)得到损失函数最小的字数Ta
七.CART算法
分类与回归树(CART)
(1)决策树生成:基于训练数据集生成决策树,生成决策树要尽量大
(2)决策树剪枝:对已生成的树进行剪枝并选择最优子树,用损失函数最小作为剪枝的标准。
(3)最小二乘回归树生成算法:
对输入空间划分为M份为R1,R2,R3…Rm,并且每个单元都有固定的输出值Cm,回归树可以表示为
f
(
x
)
=
∑
m
=
1
M
c
m
I
(
x
∈
R
m
)
f(x)=\sum_{m=1}^Mc_mI(x\in R_m)
f(x)=m=1∑McmI(x∈Rm)
最优值
c
m
=
A
v
e
(
y
i
∣
x
i
∈
R
m
)
c_m=Ave(y_i|x_i\in R_m)
cm=Ave(yi∣xi∈Rm),简言之就是有了上述回归树模型后,给定一组X就可以得到他最优值Cm
关键是怎么样划分空间最优点j(切分变量),s(切分点)
R
1
(
j
,
s
)
=
(
x
∣
x
j
<
=
s
)
R_1(j,s)=(x|x^{j}<=s)
R1(j,s)=(x∣xj<=s),
R
2
(
j
,
s
)
=
(
x
∣
x
j
>
s
)
R_2(j,s)=(x|x^{j}>s)
R2(j,s)=(x∣xj>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
]
min_{j,s}[min_{c1}\sum_{x_i\in R_1(j,s)}(y_i-c_1)^2+min_{c2}\sum_{x_i\in R_2(j,s)}(y_i-c_2)^2]
minj,s[minc1xi∈R1(j,s)∑(yi−c1)2+minc2xi∈R2(j,s)∑(yi−c2)2]
总的来说在通过j,s划分好的区域内寻找最小的误差的C1和C2,并求出最小的j,s
依次将输入空间划分为两个区域,接着对每个区域重复上诉过程,知道满足条件为止,这样就生成一个回归树
(4)基尼指数是比熵更好的计算方法(计算简便)分类树的生成可以使用基尼指数代替熵的运算。
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
熵
=
−
∑
k
=
1
K
p
i
l
o
g
p
i
熵=-\sum_{k=1}^Kp_ilogp_i
熵=−k=1∑Kpilogpi相比之下少了log函数的计算,所以在大容量的数据集中经常使用基尼指数代替熵的计算
八.决策树的总结
ID3:用信息增益构造决策树
C4.5:用信息增益比构造决策树
CART:1.决策树生成
(1)回归树:二分递归最优j(切分变量),s(切分点)
(2)分类树:基尼指数构造
2. 决策树剪枝