5-2 决策树 信息增益的算法
Posted windmissing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5-2 决策树 信息增益的算法相关的知识,希望对你有一定的参考价值。
信息增益的算法
输入:训练数据集D和特征A
输出:特征A对训练数据集D的信息增益g(D,A)
定义:
K:样本标签有K种分类
C
k
C_k
Ck:样本标签为k的样本数
m:样本总数
D
i
D_i
Di
:
样
本
中
第
A
个
特
征
为
:样本中第A个特征为
:样本中第A个特征为
a
i
a_i
ai的样本数
D
i
k
D_ik
Dik
:
样
本
中
第
A
个
特
征
为
:样本中第A个特征为
:样本中第A个特征为
a
i
a_i
ai且其标签分类为k的样本数
计算数据集D的经验熵H(D)
H
(
D
)
=
−
∑
k
=
1
K
P
k
log
2
P
k
P
k
=
C
k
m
H(D) = -\\sum_k=1^K P_k\\log_2P_k \\\\ P_k = \\fracC_km
H(D)=−k=1∑KPklog2PkPk=mCk
计算特征A对数据集D的经验条件熵H(D|A)
H
(
D
∣
A
)
=
∑
i
=
1
n
p
i
H
(
D
i
)
=
−
∑
i
=
1
n
p
i
∑
k
=
1
K
p
i
k
log
2
p
i
k
p
i
=
D
i
m
p
i
k
=
D
i
k
D
i
H(D|A) = \\sum_i=1^n p_iH(D_i) \\\\ = -\\sum_i=1^n p_i\\sum_k=1^K p_ik\\log_2p_ik \\\\ p_i = \\frac D_im \\\\ p_ik = \\frac D_ikD_i
H(D∣A)=i=1∑npiH(Di)=−i=1∑npik=1∑Kpiklog2pikpi=mDipik=DiDik
即通过特征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)
代码
# 特征和标签的可取值范围:
def H(y):
sum = 0
# 计算y可取到的值
k = set(y)
for ck in k:
Pk = y[y==ck].shape[0] / y.shape[0]
if Pk != 0:
sum -= Pk * np.log2(Pk)
return sum
def svm(X, y, feature):
# 计算X的每个特征可取到的值
a = set(X[:,feature])
# 计算数据集的经验熵
HD = H(y)
# 计算特征A对数据集D的经验条件熵H(D|A)
HDA = 0
for value in a:
yDi = y[X[:,feature]==value]
HDA += yDi.shape[0]/y.shape[0] * H(yDi)
return HD - HDA
以上是关于5-2 决策树 信息增益的算法的主要内容,如果未能解决你的问题,请参考以下文章