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=1KPklog2PkPk=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(DA)=i=1npiH(Di)=i=1npik=1Kpiklog2pikpi=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(DA)

代码

# 特征和标签的可取值范围:
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 决策树 信息增益的算法的主要内容,如果未能解决你的问题,请参考以下文章

算法干货----决策树算法中的熵与信息增益

ID3决策树分析

机器学习算法:决策树算法简介以及分类原理

常见机器学习算法原理+实践系列4(决策树)

决策树

决策树算法——计算步骤示例