✏️
LiHang-TongJiXueXiFangFa
  • Introduction
  • 第2章 感知机 - 原始形式
    • 学习策略的推导
    • 梯度下降法的算法过程
    • 梯度下降法的推导过程
    • 梯度下降法的收敛证明
  • 第2章 感知机 - 对偶形式
    • 学习模型的推导
    • 梯度下降法的算法过程
    • 梯度下降法的推导过程
  • 第3章 k近邻算法
    • 模型三要素
    • 构造平衡kd树
    • 用kd树的k近邻搜索
    • kd树的原理与改进
  • 第4章 朴素贝叶斯
    • 模型公式的推导
    • 策略公式的推导
    • 最大似然估计算法过程
    • 贝叶斯估计算法过程
  • 第5章 决策树
    • 决策树的模型
    • 信息增益的算法
    • ID3决策树的生成算法
    • C4.5决策树的生成算法
    • 决策树的剪枝算法
  • 第5章 CART决策树
    • CART树的生成
    • CART树的剪枝
  • 第6章 逻辑回归
    • 二分类逻辑回归模型
    • 多分类逻辑回归模型
  • 第6章 最大熵模型
    • 最大熵的原理
    • 最大熵模型的定义
    • 最大熵的学习过程
    • 根据最大熵的学习过程推导最大熵模型
    • 证明:对偶函数的极大化=模型的极大似然估计
  • 第6章 目标函数最优化问题
    • 改进的迭代尺度法(IIS)
    • IIS算法公式(1)推导
    • A和B的推导
    • 拟牛顿法
  • 第7章 支持向量机
    • 函数间隔与几何间隔
  • 第7章 线性可分SVM
    • 凸二次规划问题推导
    • 支持向量
    • 凸二次规划问题求解
    • 原始问题转换为对偶最优化问题
  • 第7章 线性SVM
    • 原始问题转换为对偶最优化问题
    • 根据 a 求 w 和 b*
    • 支持向量
  • 第7章 非线性SVM
    • 核函数与核技巧
    • 核技巧在SVM中的应用
    • 7.3.2 正定核
    • 常用的核函数
  • 第7章 序列最小最优化算法
    • 选择变量
    • 推导1
    • 推导2
    • 推导3
    • 推导4
    • 推导5:update b
  • 第8章 adaboost
    • 算法过程
    • 训练误差分析
    • 加法模型
    • 前向分步算法
    • adaboost一种特殊的加法模型
  • 第8章 提升树
    • 回归问题提升树的推导
    • 回归问题提升树前向分步算法
    • 一般决策问题梯度提升算法
  • 第9章 EM算法
    • 算法过程
    • Q函数的推导
    • 关于算法的收敛性
    • 高斯混合模型参数估计的EM算法
    • Q函数推导
    • 推导2
  • 第10章 隐马尔可夫模型
    • 定义
    • 概率计算问题 - 直接计算法
    • 概率计算问题 - 前向算法
    • 概率计算问题 - 后向算法
    • 学习问题 - 监督学习
    • 学习问题 - 非监督学习
    • Baum - Welch算法推导
    • 推导1
    • 预测问题 - 近似算法
    • 预测问题 - 维特比算法
    • 维特比算法推导过程
  • 第11章 条件随机场
    • 概率无向图模型
  • 遗留问题
Powered by GitBook
On this page
  • 信息增益的算法
  • 代码

Was this helpful?

  1. 第5章 决策树

信息增益的算法

Previous决策树的模型NextID3决策树的生成算法

Last updated 5 years ago

Was this helpful?

信息增益的算法

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

定义: K:样本标签有K种分类 CkC_kCk​:样本标签为k的样本数 m:样本总数 DiD_iDi​:样本中第A个特征为aia_iai​的样本数 DikD_{ik}Dik​:样本中第A个特征为aia_iai​且其标签分类为k的样本数

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

H(D)=−∑k=1KPklog⁡2PkPk=Ckm\begin{aligned} H(D) = -\sum_{k=1}^K P_k\log_2P_k \\ P_k = \frac{C_k}{m} \end{aligned}H(D)=−k=1∑K​Pk​log2​Pk​Pk​=mCk​​​

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

H(D∣A)=∑i=1npiH(Di)=−∑i=1npi∑k=1Kpiklog⁡2pikpi=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}H(D∣A)=i=1∑n​pi​H(Di​)=−i=1∑n​pi​k=1∑K​pik​log2​pik​pi​=mDi​​pik​=Di​Dik​​​

即通过特征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