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

2、互信息(Mutual Information)

文章目录

  • 1、简介
  • 2、**互信息及其测量内容**
  • 3、**解读互信息得分**
  • 4、**例子 - 1985年的汽车**

1、简介

首次遇到新的数据集可能会让人感到不知所措。你可能会面对数百甚至数千个特征,甚至没有描述可以参考。你应该从哪里开始呢?

一个很好的第一步是构建一个特征效用度量的排名,这是一个衡量特征和目标之间关联性的函数。然后,你可以选择一小部分最有用的特征进行初步开发,这样可以更有信心地投入你的时间。

我们将使用的度量标准称为"互信息"。互信息很像相关性,因为它衡量了两个量之间的关系。互信息的优点是它可以检测任何类型的关系,而相关性只能检测线性关系。

互信息是一个很好的通用度量标准,特别适用于特征开发的开始阶段,当你可能还不知道你想要使用什么模型时。它是:

  • 易于使用和解释,
  • 计算效率高,
  • 理论上有良好的基础,
  • 能够抵抗过拟合,以及,
  • 能够检测任何类型的关系

2、互信息及其测量内容

互信息以不确定性的形式描述关系。两个量之间的互信息(MI)是衡量一个量的知识减少对另一个量的不确定性的程度的度量。如果你知道一个特征的值,你对目标的信心会增加多少?

下面是一个来自Ames Housing数据的例子。该图显示了房屋的外部质量与其售价之间的关系。每个点代表一栋房屋。
在这里插入图片描述

了解房屋的外观质量可以减少其售价的不确定性。

ExterQual有四个类别:公平,典型,良好,优秀。SalePrice在每个类别中的散点图。 知道房屋的外部质量可以减少对其售价的不确定性。 从图中,我们可以看到,知道ExterQual的值应该让你对相应的SalePrice更有把握——ExterQual的每个类别都倾向于将SalePrice集中在一定的范围内。ExterQual与SalePrice的互信息是在ExterQual的四个值上取的SalePrice的不确定性的平均减少量。例如,由于公平出现的次数少于典型,所以公平在MI得分中的权重较小。

(技术说明:我们所说的不确定性是用信息理论中的一个量,即"熵"来衡量的。一个变量的熵大致意味着:"你需要提出多少个是或否的问题来描述该变量的一个事件,平均来说。"你必须提出的问题越多,你对变量的不确定性就越大。互信息是你期望特征能回答关于目标的问题的数量。)

3、解读互信息得分

两个量之间可能的最小互信息是0.0。当MI为零时,两个量是独立的:它们不能告诉你关于另一个的任何信息。相反,理论上MI可以是任何值。然而,在实践中,超过2.0左右的值是不常见的。(互信息是一个对数量,所以它增加得非常慢。)

下图将给你一个关于MI值如何对应于特征与目标的关联性的类型和程度的想法。
在这里插入图片描述
左图:随着特征和目标之间的依赖性变得更紧密,互信息增加。右图:互信息可以捕捉到任何类型的关联(不仅仅是线性的,像相关性那样)。

在应用互信息时,有一些事情需要记住:

  • MI可以帮助你理解一个特征作为目标的预测器的相对潜力,单独考虑。
  • 一个特征在与其他特征交互时可能非常有信息量,但是单独来看可能不那么有信息量。MI不能检测特征之间的交互。它是一个单变量度量。
  • 一个特征的实际用途取决于你与之一起使用的模型。一个特征只有在它与目标的关系是你的模型可以学习的范围内才有用。仅仅因为一个特征有一个高的MI得分并不意味着你的模型就能够利用这个信息。你可能需要首先转换特征来暴露关联。

4、例子 - 1985年的汽车

汽车数据集包括1985年型号的193辆汽车。这个数据集的目标是从汽车的23个特征(如制造商、车身样式和马力)预测汽车的价格(目标)。在这个例子中,我们将用互信息对特征进行排名,并通过数据可视化来研究结果。

In [1]:

import matplotlib

相关文章:

  • CSS探索浏览器兼容性
  • 【C++干货铺】C++中的IO流和文件操作
  • Java基础知识-异常
  • Delphi 7 IdHTTP POST 中文乱码得解决
  • k8s实例
  • 【Linux 基础】常用基础指令(上)
  • Impala依赖组件的客户端源码下载
  • 3d gaussian splatting笔记(paper部分翻译)
  • qt的main函数(程序启动入口)
  • 大模型+自动驾驶
  • 两个近期的计算机领域国际学术会议(软件工程、计算机安全):欢迎投稿
  • 第5章 (python深度学习——波斯美女)
  • 市场复盘总结 20240122
  • day23 其他事件(页面加载事件、页面滚动事件)
  • VLM 系列——BLIP——论文解读
  • conda常用的命令
  • CSS 专业技巧
  • express.js的介绍及使用
  • Git学习与使用心得(1)—— 初始化
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • js ES6 求数组的交集,并集,还有差集
  • Puppeteer:浏览器控制器
  • Python 基础起步 (十) 什么叫函数?
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Vue--数据传输
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 机器学习学习笔记一
  • 今年的LC3大会没了?
  • 驱动程序原理
  • 异步
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (一)SpringBoot3---尚硅谷总结
  • (转)大型网站的系统架构
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net 按比例显示图片的缩略图
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET成年了,然后呢?
  • .NET中使用Redis (二)
  • @GetMapping和@RequestMapping的区别
  • @javax.ws.rs Webservice注解
  • [ 数据结构 - C++] AVL树原理及实现
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [bzoj4240] 有趣的家庭菜园
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [c]统计数字