当前位置: 首页 > article >正文

什么是信息增益

信息增益(Information Gain) 是一种衡量某个特征在对数据集进行划分时带来的信息量减少的指标。它常用于决策树算法中来选择分裂点,以便将数据集划分为更加纯净的子集。信息增益的概念基于信息熵,信息熵用于衡量数据集的不确定性或混乱程度,而信息增益衡量的是在某个特征下,数据集划分后这种不确定性减少的量。

信息熵的概念

在了解信息增益之前,我们先回顾 信息熵(Entropy) 的定义。信息熵 E ( D ) E(D) E(D) 衡量的是数据集 D D D 中分类的不确定性。其公式为:
E ( D ) = − ∑ k = 1 Y p k log ⁡ p k E(D) = - \sum_{k=1}^Y p_k \log p_k E(D)=k=1Ypklogpk

其中:

  • p k p_k pk 是类别 k k k 的概率(数据集中属于类别 k k k 的样本数除以总样本数)。
  • Y Y Y 是类别的数量。

信息熵的值越大,表示数据集的不确定性越大;信息熵的值越小,表示数据集更加纯净。

信息增益的定义

信息增益(IG) 表示通过使用某个特征 X X X 来划分数据集后,目标变量 Y Y Y 的不确定性(熵)减少的程度。信息增益的计算公式为:
I G ( D , X ) = E ( D ) − E ( D ∣ X ) IG(D, X) = E(D) - E(D|X) IG(D,X)=E(D)E(DX)

其中:

  • E ( D ) E(D) E(D) 是划分之前数据集 D D D 的熵(即数据集中目标变量 Y Y Y 的不确定性)。
  • E ( D ∣ X ) E(D|X) E(DX) 是在特征 X X X 的条件下,划分后的数据集的加权平均熵,表示划分后的数据集的剩余不确定性。

计算信息增益的步骤

  1. 计算原始数据集的熵 E ( D ) E(D) E(D)

    • 首先计算数据集在没有划分时的熵(即数据集中各类样本的熵)。
  2. 根据特征 X X X 进行划分

    • 使用特征 X X X 将数据集划分为多个子集。每个子集对应特征 X X X 的某个取值。
  3. 计算划分后的加权平均熵 E ( D ∣ X ) E(D|X) E(DX)

    • 计算每个子集的熵,并根据每个子集的样本数对其进行加权平均:
      E ( D ∣ X ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ E ( D i ) E(D|X) = \sum_{i=1}^n \frac{|D_i|}{|D|} E(D_i) E(DX)=i=1nDDiE(Di)
      其中 D i D_i Di 是按特征 X X X 划分后的第 i i i 个子集, ∣ D i ∣ |D_i| Di 是子集 D i D_i Di 中的样本数量, ∣ D ∣ |D| D 是原始数据集的样本数量。
  4. 计算信息增益 I G ( D , X ) IG(D, X) IG(D,X)

    • 信息增益就是原始数据集熵和划分后加权平均熵的差值。差值越大,说明该特征 X X X 对目标变量 Y Y Y 的不确定性减少得越多,表示该特征越重要。

举例说明

假设我们有一个简单的二元分类问题,数据集 D D D 包含 10 个样本,目标是分类为“是”或“否”。现在我们有一个特征 X X X,我们希望通过计算信息增益来确定该特征是否适合进行划分。

1. 计算原始数据集的熵 E ( D ) E(D) E(D)

假设在数据集中,有 6 个样本的类别是“是”,4 个样本的类别是“否”,则数据集的熵 E ( D ) E(D) E(D) 为:
E ( D ) = − ( 6 10 log ⁡ 2 6 10 + 4 10 log ⁡ 2 4 10 ) E(D) = - \left( \frac{6}{10} \log_2 \frac{6}{10} + \frac{4}{10} \log_2 \frac{4}{10} \right) E(D)=(106log2106+104log2104)

E ( D ) = − ( 0.6 log ⁡ 2 0.6 + 0.4 log ⁡ 2 0.4 ) E(D) = - \left( 0.6 \log_2 0.6 + 0.4 \log_2 0.4 \right) E(D)=(0.6log20.6+0.4log20.4)

E ( D ) ≈ 0.971 E(D) \approx 0.971 E(D)0.971

2. 根据特征 X X X 进行划分

假设特征 X X X 可以取两个值 X 1 X_1 X1 X 2 X_2 X2,划分后的数据集如下:

  • X = X 1 X = X_1 X=X1 时,数据集包含 5 个样本,其中 4 个类别为“是”,1 个类别为“否”。
  • X = X 2 X = X_2 X=X2 时,数据集包含 5 个样本,其中 2 个类别为“是”,3 个类别为“否”。
3. 计算划分后的加权平均熵 E ( D ∣ X ) E(D|X) E(DX)

首先分别计算两个子集的熵:

  • X 1 X_1 X1 子集:
    E ( D 1 ) = − ( 4 5 log ⁡ 2 4 5 + 1 5 log ⁡ 2 1 5 ) E(D_1) = - \left( \frac{4}{5} \log_2 \frac{4}{5} + \frac{1}{5} \log_2 \frac{1}{5} \right) E(D1)=(54log254+51log251)

    E ( D 1 ) ≈ 0.722 E(D_1) \approx 0.722 E(D1)0.722

  • X 2 X_2 X2 子集:
    E ( D 2 ) = − ( 2 5 log ⁡ 2 2 5 + 3 5 log ⁡ 2 3 5 ) E(D_2) = - \left( \frac{2}{5} \log_2 \frac{2}{5} + \frac{3}{5} \log_2 \frac{3}{5} \right) E(D2)=(52log252+53log253)

    E ( D 2 ) ≈ 0.971 E(D_2) \approx 0.971 E(D2)0.971

现在根据子集样本数,计算加权平均熵:

E ( D ∣ X ) = 5 10 E ( D 1 ) + 5 10 E ( D 2 ) E(D|X) = \frac{5}{10} E(D_1) + \frac{5}{10} E(D_2) E(DX)=105E(D1)+105E(D2)

E ( D ∣ X ) = 0.5 × 0.722 + 0.5 × 0.971 E(D|X) = 0.5 \times 0.722 + 0.5 \times 0.971 E(DX)=0.5×0.722+0.5×0.971

E ( D ∣ X ) = 0.8465 E(D|X) = 0.8465 E(DX)=0.8465

4. 计算信息增益 I G ( D , X ) IG(D, X) IG(D,X)

最后,信息增益为原始熵与划分后的加权平均熵的差:
I G ( D , X ) = E ( D ) − E ( D ∣ X ) IG(D, X) = E(D) - E(D|X) IG(D,X)=E(D)E(DX)

I G ( D , X ) = 0.971 − 0.8465 = 0.1245 IG(D, X) = 0.971 - 0.8465 = 0.1245 IG(D,X)=0.9710.8465=0.1245

结论

  • 该特征 X X X 的信息增益为 0.1245。
  • 信息增益越高,表示该特征越有助于减少数据集的不确定性,因此越适合作为决策树的分裂点。
  • 决策树算法通常会选择信息增益最大的特征来进行数据集的划分。

总结

信息增益用于衡量特征的划分对数据集的不确定性减少程度。通过选择信息增益最大的特征,决策树算法能够有效地构建模型,使得每一步划分都尽可能地提高数据集的纯度。这使得决策树能够做出更加准确的分类决策。


http://www.kler.cn/news/328714.html

相关文章:

  • MacOS配置python环境
  • 编程参考 - 动态链接库中的变量实例化
  • AccessoriesqueryController
  • 【韩顺平Java笔记】第5章:程序控制结构
  • 【异常数据检测】孤立森林算法异常数据检测算法(数据可视化 Matlab语言)
  • GPT对话代码库——esp32和单片机实现远程wifi升级代码方案。
  • windows系统中后台运行java程序
  • OIDC6-OIDC 授权流程类型
  • 秘密武器揭秘
  • 全国职业院校技能大赛(大数据赛项)-平台搭建Zookeeper笔记
  • 创新型城市试点名单最新数据(2006-2023年)
  • 【Nacos架构 原理】内核设计之Nacos通信通道
  • 生信初学者教程(二十一):LASSO+LR筛选候选标记物
  • 常用JS代码片段分享(总结)
  • 论文笔记——Graph Bottlenecked Social Recommendation
  • 【文件增量备份系统】MySQL百万量级数据量分页查询性能优化
  • vue3 父子组件调用
  • 【学习笔记】手写 Tomcat 八
  • python获取当月最后工作日实现在数据库查询指定日期数据(python+sql)
  • B+树索引结构的优点
  • 习题1 程序设计和C语言
  • 08-Registry搭建docker私仓
  • Python 如何使用 Pandas 进行数据分析
  • 实战OpenCV之轮廓检测
  • 828华为云征文|部署在线文档应用程序 CodeX Docs
  • cisp-pte多少钱考一次?cisp-pte报考费用及报考条件一次说清楚!
  • ARM V8 A32常用指令集
  • 华为OD机试真题---找终点
  • excel 处理数据的常用场景之考勤表的制作
  • 递归函数设计技巧