机器学习 - 信息增益

信息增益(Information Gain)

信息增益是衡量在特征选择过程中一个特征对数据集分类能力提升的指标。在构建决策树(如ID3和C4.5算法)时,信息增益用于选择最佳的特征来划分数据集。信息增益基于熵的概念,通过减少数据集的不确定性来衡量特征的重要性。

熵(Entropy)

熵是信息理论中的一个概念,用于衡量系统的无序程度或不确定性。在分类问题中,熵可以用来表示数据集的纯度。熵的定义如下:

H ( D ) = − ∑ i = 1 n p i log ⁡ 2 ( p i ) H(D) = - \sum_{i=1}^{n} p_i \log_2(p_i) H(D)=i=1npilog2(pi)
其中:

  • H ( D ) H(D) H(D) 是数据集 D D D 的熵。
  • p i p_i pi 是数据集中第 i i i 类样本所占的比例。
  • n n n 是类别的总数。

条件熵(Conditional Entropy)

条件熵衡量在给定特征 A A A 的条件下数据集 D D D 的不确定性。条件熵的定义如下:

H ( D ∣ A ) = ∑ v ∈ Values ( A ) ∣ D v ∣ ∣ D ∣ H ( D v ) H(D|A) = \sum_{v \in \text{Values}(A)} \frac{|D_v|}{|D|} H(D_v) H(DA)=vValues(A)DDvH(Dv)

其中:

  • Values ( A ) \text{Values}(A) Values(A) 是特征 A A A 的所有可能取值。
  • D v D_v Dv 是数据集中特征 A A A 取值为 v v v 的子集。
  • ∣ D ∣ |D| D 是数据集 D D D 的样本总数。
  • ∣ D v ∣ |D_v| Dv 是子集 D v D_v Dv 的样本总数。

熵值和基尼系数是两种不同的概念,尽管它们都可以用来衡量不确定性或不纯度,但它们的计算方法和应用领域有所不同。下面详细解释两者:

基尼系数(Gini Index)

基尼系数,或者称为基尼不纯度,是另一种衡量分类问题中数据不纯度的方法。它的定义如下:

G ( X ) = 1 − ∑ i = 1 n P ( x i ) 2 G(X) = 1 - \sum_{i=1}^{n} P(x_i)^2 G(X)=1i=1nP(xi)2

其中:

  • G ( X ) G(X) G(X) 是随机变量 X X X 的基尼系数。
  • P ( x i ) P(x_i) P(xi) 是事件 x i x_i xi发生的概率。

在机器学习中,基尼系数通常用于决策树算法中的CART(分类与回归树)模型,用来选择最佳的特征进行数据划分。基尼系数越小,数据集的纯度越高。

熵与基尼系数的区别

  1. 定义和计算方法

    • 熵是通过概率的对数计算得出的。
    • 基尼系数是通过概率的平方和计算得出的。
  2. 应用领域

    • 熵主要用于信息增益的计算,常见于ID3和C4.5决策树算法。
    • 基尼系数常用于CART决策树算法。
  3. 特性

    • 熵能够更细腻地刻画不确定性,考虑了事件发生的概率及其对数。
    • 基尼系数计算更简单,直接反映数据的纯度。

示例

假设有一个数据集,其中包含两类数据,类别分别为A和B。

  • 类别A的概率 (P(A) = 0.6)
  • 类别B的概率 (P(B) = 0.4)

则熵和基尼系数的计算如下:

熵的计算

H ( X ) = − ( 0.6 log ⁡ 2 0.6 + 0.4 log ⁡ 2 0.4 ) ≈ 0.97095 H(X) = - (0.6 \log_2 0.6 + 0.4 \log_2 0.4) \approx 0.97095 H(X)=(0.6log20.6+0.4log20.4)0.97095

基尼系数的计算

G ( X ) = 1 − ( 0. 6 2 + 0. 4 2 ) = 1 − ( 0.36 + 0.16 ) = 1 − 0.52 = 0.48 G(X) = 1 - (0.6^2 + 0.4^2) = 1 - (0.36 + 0.16) = 1 - 0.52 = 0.48 G(X)=1(0.62+0.42)=1(0.36+0.16)=10.52=0.48

从上述计算可以看出,虽然熵和基尼系数都在一定程度上反映了数据的不纯度,但它们的值和含义有所不同。

熵和基尼系数都是衡量数据不纯度的重要指标,但它们的计算方法和应用场景有所不同。熵强调信息的不确定性,适用于信息增益的计算,而基尼系数则更加直接地反映了数据的纯度,常用于CART算法中。

信息增益(Information Gain)

信息增益表示通过特征 A A A 划分数据集 D D D 后,数据集 D D D 的熵减少的程度。信息增益的定义如下:

I G ( D , A ) = H ( D ) − H ( D ∣ A ) IG(D, A) = H(D) - H(D|A) IG(D,A)=H(D)H(DA)

其中:

  • I G ( D , A ) IG(D, A) IG(D,A) 是特征 A A A 对数据集 D D D 的信息增益。
  • H ( D ) H(D) H(D) 是数据集 D D D 的熵。
  • H ( D ∣ A ) H(D|A) H(DA) 是在特征 A A A 的条件下数据集 D D D 的条件熵。

信息增益的计算步骤

  1. 计算数据集的熵 H ( D ) H(D) H(D)
    首先计算整个数据集的熵,表示当前数据集的不确定性。

  2. 计算特征 A A A 的条件熵 H ( D ∣ A ) H(D|A) H(DA)
    根据特征 A A A 的取值,将数据集划分为若干子集,然后计算每个子集的熵,并加权求和得到条件熵。

  3. 计算信息增益 I G ( D , A ) IG(D, A) IG(D,A)
    用数据集的熵减去条件熵,得到信息增益。

示例

假设有一个简单的数据集如下:

天气玩耍
晴天
阴天
雨天
晴天
晴天
阴天
阴天
雨天

我们需要计算“天气”特征的信息增益。

  1. 计算数据集的熵 H ( D ) H(D) H(D)

H ( D ) = − ( 4 8 log ⁡ 2 4 8 + 4 8 log ⁡ 2 4 8 ) = 1 H(D) = -\left(\frac{4}{8} \log_2 \frac{4}{8} + \frac{4}{8} \log_2 \frac{4}{8}\right) = 1 H(D)=(84log284+84log284)=1
2. 计算特征“天气”的条件熵 H ( D ∣ 天气 ) H(D|\text{天气}) H(D天气)

H ( D ∣ 天气 ) = ∑ v ∈ { 晴天, 阴天, 雨天 } ∣ D v ∣ ∣ D ∣ H ( D v ) H(D|\text{天气}) = \sum_{v \in \{\text{晴天, 阴天, 雨天}\}} \frac{|D_v|}{|D|} H(D_v) H(D天气)=v{晴天阴天雨天}DDvH(Dv)

其中:

  • ∣ D 晴天 ∣ = 3 |D_{\text{晴天}}| = 3 D晴天=3,且 H ( D 晴天 ) = − ( 2 3 log ⁡ 2 2 3 + 1 3 log ⁡ 2 1 3 ) ≈ 0.918 H(D_{\text{晴天}}) = -\left(\frac{2}{3} \log_2 \frac{2}{3} + \frac{1}{3} \log_2 \frac{1}{3}\right) \approx 0.918 H(D晴天)=(32log232+31log231)0.918
  • ∣ D 阴天 ∣ = 3 |D_{\text{阴天}}| = 3 D阴天=3,且 H ( D 阴天 ) = − ( 2 3 log ⁡ 2 2 3 + 1 3 log ⁡ 2 1 3 ) ≈ 0.918 H(D_{\text{阴天}}) = -\left(\frac{2}{3} \log_2 \frac{2}{3} + \frac{1}{3} \log_2 \frac{1}{3}\right) \approx 0.918 H(D阴天)=(32log232+31log231)0.918
  • ∣ D 雨天 ∣ = 2 |D_{\text{雨天}}| = 2 D雨天=2,且 H ( D 雨天 ) = − ( 0 log ⁡ 2 0 + 1 log ⁡ 2 1 ) = 0 H(D_{\text{雨天}}) = -\left(0 \log_2 0 + 1 \log_2 1\right) = 0 H(D雨天)=(0log20+1log21)=0

H ( D ∣ 天气 ) = ( 3 8 × 0.918 + 3 8 × 0.918 + 2 8 × 0 ) ≈ 0.688 H(D|\text{天气}) = \left(\frac{3}{8} \times 0.918 + \frac{3}{8} \times 0.918 + \frac{2}{8} \times 0\right) \approx 0.688 H(D天气)=(83×0.918+83×0.918+82×0)0.688

  1. 计算信息增益 I G ( D , 天气 ) IG(D, \text{天气}) IG(D,天气)

I G ( D , 天气 ) = H ( D ) − H ( D ∣ 天气 ) = 1 − 0.688 = 0.312 IG(D, \text{天气}) = H(D) - H(D|\text{天气}) = 1 - 0.688 = 0.312 IG(D,天气)=H(D)H(D天气)=10.688=0.312

总结

信息增益通过减少数据集的不确定性来选择特征,选择信息增益最大的特征作为划分标准。它在构建决策树的过程中起到了重要作用,有助于选择最能区分数据的特征。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多视角数据的不确定性估计:全局观的力量

论文标题:Uncertainty Estimation for Multi-view Data: The Power of Seeing the Whole Picture 中文译名:多视角数据的不确定性估计:全局观的力量 原文地址:Uncertainty Estimation for Multi-view Data: The Power of Seeing the Whole …

python用selenium网页模拟时xpath无法定位元素解决方法2

有时我们在使用python selenium xpath时,无法定位元素,红字显示no such element。上一篇文章写了1种情况,是包含iframe的,详见https://blog.csdn.net/Sixth5/article/details/140342929。 本篇写第2种情况,就是xpath定…

类和对象:赋值函数

1.运算符重载 • 当运算符被⽤于类类型的对象时,C语⾔允许我们通过运算符重载的形式指定新的含义。C规定类类型对象使⽤运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错;(运算…

数据旋律与算法和谐:LLMs的微调交响

论文:https://arxiv.org/pdf/2310.05492代码:暂未开源机构:阿里巴巴领域:模型微调发表:ACL 2024 这篇论文《How Abilities in Large Language Models are Affected by Supervised Fine-tuning Data Composition》深入…

【BUG】已解决:raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)

已解决:raise KeyError(key) from err KeyError: (‘name‘, ‘age‘) 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识&#xf…

python学习(不是广告)是我自己看了这么多课总结的经验

入门 首先推荐的是林粒粒的python入门学习 在你看完这套Python入门教程后: 想继续巩固基础 👉 想学习Python数据分析 👉 想学习Python AI大模型应用开发 👉 进阶 入门之后就是进阶使用python实现 1.办公效率化 2.数据分析&am…

信弘智能与图为科技共探科技合作新蓝图

本期导读 近日,图为信息科技(深圳)有限公司迎来上海信弘智能科技有限公司代表的到访,双方共同探讨英伟达生态系统在人工智能领域的发展。 在科技日新月异的今天,跨界合作与技术交流成为了推动行业发展的重要驱动。7月…

GraphRAG+ollama+LM Studio+chainlit

这里我们进一步尝试将embedding模型也换为本地的,同时熟悉一下流程和学一些新的东西 1.环境还是用之前的,这里我们先下载LLM 然后你会在下载nomic模型的时候崩溃,因为无法搜索,无法下载 解决办法如下lm studio 0.2.24国内下载…

Qt 遍历Combbox下拉框的内容并进行判断

一共用到两个函数&#xff1a; 1、count()&#xff1b;用于计算当前Combox中一共有几个item。 2、itemText(int i)&#xff1b;参数 i 是需要查看item的索引。 用来查看当前item的text&#xff08;文本信息&#xff09;。 for(int i 0; i < ui->comboBox_displayDev-&g…

C++学习笔记-用const修饰的类成员函数

在C编程中&#xff0c;const关键字扮演着多重角色&#xff0c;其中之一就是用于修饰类的成员函数&#xff0c;以表明该函数不会修改类的任何成员变量&#xff08;无论是数据成员还是静态成员&#xff09;。使用const成员函数可以提高代码的可读性和安全性&#xff0c;特别是在多…

Ubuntu 24.04 LTS Noble安装Docker Desktop简单教程

Docker 为用户提供了在 Ubuntu Linux 上快速创建虚拟容器的能力。但是&#xff0c;那些不想使用命令行管理容器的人可以在 Ubuntu 24.04 LTS 上安装 Docker Desktop GUI&#xff0c;本教程将提供用于设置 Docker 图形用户界面的命令…… Docker Desktop 是一个易于使用的集成容…

mybatis-sql实战总结

mybatis-sql实战总结 动态条件查询怎么List遍历集合进行拼接&#xff1f; 动态条件查询 动态条件查询总结 注意点&#xff1a; 1.可以用where 11 也可以用 防止出现后面没有条件的情况 2.模糊查询用concat拼接 A.SSTRING10 like concat(#{adAccEntrie.sstring10},‘%’) 3. 对于…

Python正则表达式中的分组

表达式中的分组 它是可以通过" () “来进行分组&#xff0c;更专业的表达就是捕获组&#xff0c;每个完整的” () “可以分为一组&#xff0c;同时&#xff0c;” () “中还可以嵌套” () "&#xff0c;即组之间还可以存在更小的组 概念 1、当我们在一个正则表达式…

最短路径算法——A*算法

A*算法是静态路网中求解最短路径最有效的直接搜索算法&#xff0c;也是解决许多搜索问题的有效算法&#xff0c;广泛应用于机器人路径搜索、游戏动画路径搜索等。它是图搜索算法的一种。 A*算法是一种启发式的搜索算法&#xff0c;它是基于深度优先算法(Depth First Search, D…

pgsql-使用dump命令制作数据库结构、数据快速备份bat脚本

一、背景 通过pgsql的dump命令可以快速的做数据库表结构、表数据的备份&#xff0c;随着业务不断的增加单库单实例已经不能满足业务需要。技术人员是比较懒惰的&#xff0c;每次敲相同命令或是无脑的复制黏贴操作感觉都是对精神的一种摧残&#xff0c;解决摧残的方法就是把命令…

脑肿瘤有哪些分类? 哪些人会得脑肿瘤?

脑肿瘤&#xff0c;作为一类严重的脑部疾病&#xff0c;其分类复杂多样&#xff0c;主要分为原发性脑肿瘤和脑转移瘤两大类。原发性脑肿瘤起源于颅内组织&#xff0c;常见的有胶质瘤、脑膜瘤、生殖细胞瘤、颅内表皮样囊肿及鞍区肿瘤等。其中&#xff0c;胶质瘤作为最常见的脑神…

dict 之ai学习

我的代码&#xff1a; k["name","age","job"] v1["zhangsan",25,"programmer"] v2["lisi",33,"worker"] v3["wangwu",55,"scientist"] s4dict(zip(k,v1,v2,v3)) for key,valu…

Java 零基础自学,如何系统全面地自学 Java 语言?

粉丝问&#xff1a;他只是一个普通人&#xff0c;初识Java&#xff0c;真的很想学好它。但是现在却只是在网上课堂上看Java基础课程&#xff08;入门知识&#xff0c;面向对象&#xff0c;常用类&#xff0c;异常等等&#xff09;看着看着就发现一头雾水&#xff0c;没有方向&a…

nodejs学习之process.env.NODE_ENV

简介 process对象是 Node 的一个全局对象&#xff0c;提供当前 Node 进程的信息。它可以在脚本的任意位置使用&#xff0c;不必通过require命令加载。该对象部署了EventEmitter接口。 process.env 属性返回包含用户环境的对象 使用 pnpm init新建index.js const { env } r…

【C++】类和对象(二)

个人主页 创作不易&#xff0c;感谢大家的关注&#xff01; 文章目录 ⭐一、类的默认成员函数&#x1f48e;二、构造函数⏱️三、析构函数&#x1f3dd;️ 四、拷贝构造函数&#x1f384;五、赋值运算符重载&#x1f3e0;六、取地址运算符重载&#x1f389;const成员 ⭐一、类…