决策树
信息量:
l
o
g
2
1
p
(
x
i
)
log _{2} \frac{1}{p\left(x_{i}\right)}
log2p(xi)1
信息熵(不确定性度量),熵为各事件信息量的“数学期望”:
熵越大,随机变量的不确定性越大。
H
(
p
)
=
−
∑
i
=
1
n
p
i
log
p
i
H(p)=-\sum_{i=1}^{n} p_{i} \log p_{i}
H(p)=−i=1∑npilogpi,其中
0
≤
H
(
p
)
≤
log
n
0 \leq H(p) \leq \log n
0≤H(p)≤logn
条件熵:表示已知随机变量X的条件下随机变量Y的不确定性。
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
i
H
(
Y
∣
X
=
x
i
)
H(Y \mid X)=\sum_{i=1}^{n} p_{i} H\left(Y \mid X=x_{i}\right)
H(Y∣X)=∑i=1npiH(Y∣X=xi)
信息增益(ID3):特征A对训练数据集D的信息增益, g ( D , A ) g(D,A) g(D,A),定义为集合D的经验熵 H ( D ) H(D) H(D)与特征A给定条件下D的经验条件熵 H ( D ∣ A ) H(D|A) H(D∣A)之差,即:
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D, A)=H(D)-H(D \mid A) g(D,A)=H(D)−H(D∣A)
H ( D ∣ A ) = ∑ k = 1 K ∣ D i ∣ ∣ D ∣ H ( D i ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ log 2 ∣ D i k ∣ ∣ D i ∣ H(D \mid A)=\sum_{k=1}^{K} \frac{\left|D_{i}\right|}{|D|} H\left(D_{i}\right)=-\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} \sum_{k=1}^{K} \frac{\left|D_{i k}\right|}{\left|D_{i}\right|} \log _{2} \frac{\left|D_{i k}\right|}{\left|D_{i}\right|} H(D∣A)=∑k=1K∣D∣∣Di∣H(Di)=−∑i=1n∣D∣∣Di∣∑k=1K∣Di∣∣Dik∣log2∣Di∣∣Dik∣
计算每一个属性的信息增益,选择信息增益最大的属性。
以信息增益作为划分训练数据即的特征,存在偏向于选择取值较多的特征的问题(属性值越多信息增益会越大),使用信息增益比可以对这一问题进行矫正。
信息增益比(C4.5):特征A对训练数据集D的信息增益比定义为信息增益与训练数据集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 ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ log 2 ∣ D i ∣ ∣ D ∣ H_{A}(D)=-\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} \log _{2} \frac{\left|D_{i}\right|}{|D|} HA(D)=−∑i=1n∣D∣∣Di∣log2∣D∣∣Di∣
决策树面临的问题及剪枝:
理想的决策树:
- 叶子结点数最少
- 叶子结点深度最小
- 叶子结点数最少且叶子结点深度最小
决策树的剪枝:通过极小化决策树整体的损失函数或代价函数来实现。
设树 T T T的叶结点个数为 ∣ T ∣ |T| ∣T∣, t t t是树 T T T的叶结点,该叶结点有 N t N_{t} Nt个样本点,其中 k k k类的样本点有 N t k N_{tk} Ntk个, k = 1 , 2.. K k = 1,2..K k=1,2..K, H t ( T ) H_{t}(T) Ht(T)为叶结点 t t t上的经验熵, α > = 0 \alpha>=0 α>=0为参数,损失函数为:
C α ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ C_{\alpha}(T)=\sum_{t=1}^{|T|} N_{t} H_{t}(T)+\alpha|T| Cα(T)=∑t=1∣T∣NtHt(T)+α∣T∣,其中 ∑ t = 1 ∣ T ∣ N t H t ( T ) \sum_{t=1}^{|T|} N_{t} H_{t}(T) ∑t=1∣T∣NtHt(T)为预测误差损失(拟合性), α ∣ T ∣ \alpha|T| α∣T∣为模型复杂度损失(泛化性),因为我们知道信息熵是一个数学期望,所以要进行加权 N t N_{t} Nt。
H t ( T ) = − ∑ k N t k N t log N t k N t H_{t}(T)=-\sum_{k} \frac{N_{t k}}{N_{t}} \log \frac{N_{t k}}{N_{t}} Ht(T)=−∑kNtNtklogNtNtk,则: C ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) = − ∑ t = 1 ∣ T ∣ ∑ k = 1 K N t k log N t k N t C(T)=\sum_{t=1}^{|T|} N_{t} H_{t}(T)=-\sum_{t=1}^{|T|} \sum_{k=1}^{K} N_{t k} \log \frac{N_{t k}}{N_{t}} C(T)=∑t=1∣T∣NtHt(T)=−∑t=1∣T∣∑k=1KNtklogNtNtk, C α ( T ) = C ( T ) + α ∣ T ∣ C_{\alpha}(T)=C(T)+\alpha|T| Cα(T)=C(T)+α∣T∣
对固定的
a
a
a一定存在损失函数最小子树,表示为
T
a
T_{a}
Ta,当
a
a
a变大时,最优子树
T
a
T_{a}
Ta偏小,
a
=
0
a=0
a=0时,整体树最优,
a
a
a趋于无穷大,单结点最优。
树剪枝算法:
输入:生成算法产生的整个树 T T T,参数 α \alpha α;
输出:修剪后的子树 T α T_{\alpha} Tα。
- 1)计算每个结点的经验熵;
- 2)递归地从树的叶结点向上回缩。
- 设一组叶结点回缩到其父结点之后与之前的损失函数分别为: C α ( T A ) C_{\alpha}(T_{A}) Cα(TA)与 C α ( T B ) C_{\alpha}(T_{B}) Cα(TB)
- 如果: C α ( T A ) ≤ C α ( T B ) C_{\alpha}\left(T_{A}\right) \leq C_{\alpha}\left(T_{B}\right) Cα(TA)≤Cα(TB)则进行剪枝
- 3)返回2),直至不能继续为止,得到损失函数最小的子树 T α T_{\alpha} Tα。