决策树算法原理
从逻辑角度,一堆if-else语句的组合
从几何角度,根据某种和准则划分特征空间
最终目的:将样本越分越纯
将样本类别标记
y
y
y视作随机变量,各个类别在样本集合
D
D
D中的占比
p
k
(
k
=
1
,
2
,
…
,
∣
y
∣
)
p_k(k=1,2,\dots,|y|)
pk(k=1,2,…,∣y∣)视作各个类别取值的概率,则样本集合
D
D
D(随机变量
y
y
y)的信息熵(底数b取2)为:
E
n
t
(
D
)
=
−
∑
k
=
1
∣
y
∣
p
k
log
2
p
k
Ent(D)=-\sum_{k=1}^{|y|} p_k\log_{2}{p_k}
Ent(D)=−k=1∑∣y∣pklog2pk
此时的信息熵所代表的不确定性可以转换理解为集合内样本的纯度。
信息增益:在已知属性(特征)
a
a
a的取值后
y
y
y的不确定性减少量,也即纯度的提升:
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
Gain(D,a)=Ent(D)-\sum_{v=1}^{V} \frac{|D^v|}{|D|}Ent(D^v)
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
ID3决策树: 以信息增益为准则来选择划分属性的决策树
a
∗
=
arg
max
a
∈
A
G
a
i
n
(
D
,
a
)
a_*=\arg\max_{a\in A}Gain(D,a)
a∗=arga∈AmaxGain(D,a)
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
)
=
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
log
2
∣
D
v
∣
∣
D
∣
IV(a)=-\sum_{v=1}^{V} \frac{|D^v|}{|D|} \log_{2}{\frac{|D^v|}{|D|}}
IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
称为属性
a
a
a的固有值。
但是,增益率对可能取值数目较少的属性有所偏好。
因此,C4.5决策树并未完全使用增益率代替信息增益,而是采用一种启发式的方法:先选出信息增益高于平均水平的属性,然后再从中选择增益率最高的。
CART决策树:
基尼值:从样本集合
D
D
D中随机抽取两个样本,其类别标记不一致的概率。
G
i
n
i
(
D
)
=
∑
k
=
1
∣
y
∣
p
k
(
1
−
p
k
)
=
1
−
∑
k
=
1
∣
y
∣
p
k
2
\begin{aligned} Gini(D)&=\sum_{k=1}^{|y|} p_k(1-p_k)\\ &=1-\sum_{k=1}^{|y|}p_k^2 \end{aligned}
Gini(D)=k=1∑∣y∣pk(1−pk)=1−k=1∑∣y∣pk2
属性
a
a
a的基尼指数:
G
i
n
i
_
i
n
d
e
x
(
D
,
a
)
=
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
G
i
n
i
(
D
v
)
Gini\_index(D,a)=\sum_{v=1}^{V} \frac{|D^v|}{|D|} Gini(D^v)
Gini_index(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)
CART决策树选择基尼系数最小的属性作为最优划分属性。
a
∗
=
arg
min
a
∈
A
G
i
n
i
_
i
n
d
e
x
(
D
,
a
)
a_*=\arg\min_{a\in A}Gini\_index(D,a)
a∗=arga∈AminGini_index(D,a)
CART决策树的构造算法:
- 首先对每个属性 a a a的每个可能取值 v v v,将数据集 D D D分为 a = v a=v a=v和 a ≠ v a≠v a=v两部分来计算基尼指数;
- 然后选择基尼指数最小的属性及其对应取值作为最优划分属性和最优划分点;
- 最后重复以上步骤,直至满足停止条件。
参考文献:
- 《机器学习》周志华著 清华大学出版社
- Datawhale开源学习课程https://datawhale.feishu.cn/docs/doccndJC2sbSfdziNcahCYCx70W