信息增益的算法

信息增益的算法

输入:训练数据集D和特征A 输出:特征A对训练数据集D的信息增益g(D,A)

定义: K:样本标签有K种分类 CkC_k:样本标签为k的样本数 m:样本总数 DiD_i:样本中第A个特征为aia_i的样本数 DikD_{ik}:样本中第A个特征为aia_i且其标签分类为k的样本数

计算数据集D的经验熵H(D)

H(D)=k=1KPklog2PkPk=Ckm\begin{aligned} H(D) = -\sum_{k=1}^K P_k\log_2P_k \\ P_k = \frac{C_k}{m} \end{aligned}

计算特征A对数据集D的经验条件熵H(D|A)

H(DA)=i=1npiH(Di)=i=1npik=1Kpiklog2pikpi=Dimpik=DikDi\begin{aligned} 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_i}{m} \\ p_{ik} = \frac {D_{ik}}{D_i} \end{aligned}

即通过特征A分出的每个子集的熵与子集比例乘积的和。

计算信息增益

g(D,A)=H(D)H(DA)g(D, A) = H(D) - H(D|A)

代码

Last updated

Was this helpful?