源自西瓜书
基本流程
训练集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\}
D={(x1,y1),(x2,y2),...,(xm,ym)}
属性集
A
=
{
a
1
,
a
2
,
.
.
.
,
a
d
}
A=\{a_1,a_2,...,a_d\}
A={a1,a2,...,ad}
过程:
生成结点
n
o
d
e
node
node;
i
f
D
if\ D
if D中样本全部属于类别
C
t
h
e
n
C\ then
C then
将
n
o
d
e
node
node标记为
C
C
C类叶结点;
r
e
t
u
r
n
return
return
e
n
d
i
f
end\ if
end if
i
f
A
=
∅
o
r
D
if A=∅\ or\ D
ifA=∅ or D中样本在
A
A
A上取值相同
t
h
e
n
then
then
将
n
o
d
e
node
node标记为叶结点,其类别标记为
D
D
D中样本数最多的类。
r
e
t
u
r
n
return
return
e
n
d
i
f
end\ if
end if
从
A
A
A中选择最优划分属性
a
∗
a_*
a∗;
f
o
r
a
∗
for\ a_*
for a∗的每一个值:
\quad
为
n
o
d
e
node
node生成一个分支,
D
v
D_v
Dv表示
D
D
D在
a
∗
a_*
a∗上取值为
a
∗
v
a_*^v
a∗v的样本子集;
i
f
D
v
\quad if\ D_v
if Dv为空
t
h
e
n
\ then
then
\quad\quad
将分支结点标记为叶结点,其类别为
D
D
D中样本最多的类;
r
e
t
u
r
n
return
return
e
l
s
e
\quad else
else
\quad\quad
以
T
r
e
e
(
D
v
,
A
−
{
a
∗
}
)
Tree(D_v,A-\{a_*\})
Tree(Dv,A−{a∗})为分支结点。
e
n
d
i
f
\quad end\ if
end if
e
n
d
f
o
r
end\ for
end for
注意
决策树的生成是一个递归过程,三种情况会导致递归返回:
1
1
1 当前结点包含的样本属于同一类别
2
2
2 当前结点的属性集为空,或者所有样本在所有属性取值相同,无法划分。
3
3
3 当前节点包含的样本集合为空
2 2 2和 3 3 3都是把当前 D D D中最多的类别作为当前结点的决策,但 2 2 2做的是已知样本特征(结果),求引起特征的类别(原因),即后验分布, 3 3 3即是通过父节点的样本分布,作为其先验分布,对未知进行预测。
划分选择
关键在于如何找出最优划分属性
随着划分的不断进行,我们希望决策树的分支结点包含的样本尽可能属于同一类别,即结点的纯度越来越高。
信息增益
是度量样本集合纯度最常用的一种指标。
E
n
t
(
D
)
=
−
∑
p
k
l
o
g
2
p
k
Ent(D)=-\sum p_klog_2p_k
Ent(D)=−∑pklog2pk,
p
k
p_k
pk为样本集合
D
D
D中第
k
k
k类样本所占的比例。
E
n
t
Ent
Ent越小,样本纯度越高。
对于每个类别,我们设置权重,因为样本数越多显然影响越大。
最终用属性
a
a
a划分的信息增益
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
Gain(D,a)=Ent(D)-\sum\frac{|D_v|}{|D|}Ent(D_v)
Gain(D,a)=Ent(D)−∑∣D∣∣Dv∣Ent(Dv)
a
∗
=
arg max
a
∈
A
G
a
i
n
(
D
,
a
)
a_*=\mathop{\argmax}\limits_{a \in A} Gain(D,a)
a∗=a∈AargmaxGain(D,a)
I
D
3
ID3
ID3就是使用了这样的方法。
缺点是什么呢,可能会对取值数目较多的属性有偏好,产生不利影响。
信息增益率
C
4.5
C4.5
C4.5算法不直接使用信息增益,而是使用增益率。
G
a
i
n
_
r
a
t
i
o
(
D
,
a
)
=
G
a
i
n
(
D
,
a
)
I
V
(
a
)
Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}
Gain_ratio(D,a)=IV(a)Gain(D,a)
I
V
(
a
)
=
−
∑
∣
D
v
∣
∣
D
∣
l
o
g
2
∣
D
v
∣
D
IV(a)=-\sum\frac{|D_v|}{|D|}log_2\frac{|D_v|}{D}
IV(a)=−∑∣D∣∣Dv∣log2D∣Dv∣,其表示属性取值越多,其值越大。
显然增益率对属性取值较少的有偏好,所以
C
4.5
C4.5
C4.5用了一个启发式算法:
先从候选划分属性中找出信息增益高于平均水平的属性,再从中选取增益率最高的。
接下来以后再学 q w q qwq qwq
实例
分类