树增强网络TAN与互信息MI

news/2024/12/22 18:39:50/

树增强网络TAN(Tree Augmented Net)

一、为什么要用TAN?

在之前的博客中提到了如何用朴素贝叶斯网络去解决SNS社区虚假账号识别的问题。当时在解决这个问题时,做了如下假设:

  • 真实账号比非真实账号平均具有更大的日志密度、更大的好友密度、更多地使用真实头像。
  • 日志密度、好友密度和是否使用真实头像在账号真实性给定的条件下是独立的,也就是特征属性之间的独立性

仔细想想就知道第二条假设是不可能成立的,因为好友密度除了与账号真实性相关之外,还和是否使用真实头像有关。当你使用真实头像的时候,肯定是趋向于吸引更多的人加你为好友,从而拥有更大的好友密度。

所以当“头像是否真实”和“好友密度”之间产生相互关系的时候,简单的NB网络就不再适用了。
请添加图片描述
因此,TAN的出现就解决了部分属性之间存在依赖的问题。

在上面的例子中,我们是通过主观意识去判断“头像是否真实”和“好友密度”之间存在依赖关系,但是这样毕竟不够准确。如果机器能够根据我们提供的数据集来帮助我们得出这样的关系就好了,而TAN就可以完成这个工作。

二、互信息MI(mutual information)

在介绍这一重要的概念之前,我们先引入其他三个概念:熵、条件熵、信息增益。

1. 熵

含义

在信息论中,熵是指每条消息中包含的信息平均量,又被称为信息熵。

高中的化学学习让我们知道,熵是衡量一种事物的混乱度的。在此处,我们可以把熵理解为不确定性的度量。也就是说,一件事情的结果越不确定,它的熵就越大。

计算

熵描述的是某个事件的不确定性,如果某个事件有n个结果,每个结果的概率为 P n P_{n} Pn。那么这个事件的熵H定义式就为:
H = − ∑ i = 1 n p i log ⁡ 2 p i H=-\sum^{n}_{i=1} p_{i}\log_{2} p_{i} H=i=1npilog2pi
相应的可以得出联合熵的计算公式:
H ( X , Y ) = − ∑ x ∈ X ∑ y ∈ Y p ( X , Y ) l o g 2 p ( X , Y ) H\left( X,Y\right) =-\sum^{}_{x\in X} \sum^{}_{y\in Y} p\left( X,Y\right) log_{2}p\left( X,Y\right) H(X,Y)=xXyYp(X,Y)log2p(X,Y)

例如,假设有一场足球赛,巴西队对战中国队。假设巴西队获胜的概率为 0.9,不胜的概率为 0.1。那么这场比赛结果的熵就是:
H = − ∑ i = 1 n p i log ⁡ 2 p i = − 0.9 × log ⁡ 2 0.9 − 0.1 × log ⁡ 2 0.1 = 0.469 H=-\sum^{n}_{i=1} p_{i}\log_{2} p_{i}=-0.9\times \log_{2} 0.9-0.1\times \log_{2} 0.1=0.469 H=i=1npilog2pi=0.9×log20.90.1×log20.1=0.469
假设有另一场足球赛,英国队对战法国队。假设英国队获胜或不胜的概率都是0.5。那么这场比赛结果的熵就是:
H = − ∑ i = 1 n p i log ⁡ 2 p i = − 0.5 × log ⁡ 2 0.5 − 0.5 × log ⁡ 2 0.5 = 1 H=-\sum^{n}_{i=1} p_{i}\log_{2} p_{i}=-0.5\times \log_{2} 0.5-0.5\times \log_{2} 0.5=1 H=i=1npilog2pi=0.5×log20.50.5×log20.5=1
后者的熵比前者的大,由此可见结果的不确定性更大,所以比赛结果的信息量就更大。

2. 条件熵

熵是对事件结果不确定性的度量,但是在某些条件下,这个不确定性会变小。

条件熵和条件概率的概念差不多,它衡量的就是在某个条件X下,事件Y的不确定性,记作
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) l o g 2 p ( y ∣ x ) H\left( Y|X\right) =\sum^{}_{x\in X} p\left( x\right) H(Y|X=x)=-\sum^{}_{x\in X} \sum^{}_{y\in Y} p\left( x,y\right) log_{2}p\left( y|x\right) H(YX)=xXp(x)H(YX=x)=xXyYp(x,y)log2p(yx)

3. 信息增益

请添加图片描述

由上述可知,熵是衡量事件的不确定性;条件熵是衡量在已知某个条件后,该事件的不确定性。

对于同一个事件,熵的值肯定是大于等于条件熵的值的,所以引出了信息增益的概念,也就是我们说的互信息量mutual information

对于信息增益,我们可以理解为:引入了某个条件后,提供了一定的信息,让这件事情的不确定性下降了,而下降的程度就是信息增益。

它的计算方式为熵减去条件熵:
I ( X , Y ) = H ( Y ) − H ( Y ∣ X ) = H ( X ) − H ( X ∣ Y ) I\left( X,Y\right) =H\left( Y\right) -H\left( Y|X\right) =H\left( X\right) -H\left( X|Y\right) I(X,Y)=H(Y)H(YX)=H(X)H(XY)
同时也等于:
I ( X , Y ) = H ( X ) + H ( Y ) − H ( X , Y ) I\left( X,Y\right) =H\left( X\right) +H\left( Y\right) -H(X,Y) I(X,Y)=H(X)+H(Y)H(X,Y)

4. 互信息

互信息描述的是两个随机变量间相互依赖的程度,用 I ( X , Y ) I\left( X,Y\right) I(X,Y)表示,它度量两个随机变量共享的信息——知道随机变量X,对随机变量Y的不确定性减少的程度(或者知道随机变量Y,对随机变量X的不确定性减少的程度)。

用venn图表示互信息与熵、条件熵之间的关系如下所示:
请添加图片描述

通过上述熵、条件熵以及互信息的计算方法,可以推出:

( X , Y ) ∼ p ( x , y ) \left( X,Y\right) \sim p\left( x,y\right) (X,Y)p(x,y),则X, Y之间的互信息 I ( X , Y ) I\left( X,Y\right) I(X,Y)定义为:
I ( X , Y ) = ∑ x ∈ X ∑ y ∈ Y p ( X , Y ) log ⁡ 2 p ( X , Y ) p ( X ) p ( Y ) I\left( X,Y\right) =\sum^{}_{x\in X} \sum^{}_{y\in Y} p\left( X,Y\right) \log_{2} \frac{p\left( X,Y\right) }{p\left( X\right) p\left( Y\right) } I(X,Y)=xXyYp(X,Y)log2p(X)p(Y)p(X,Y)

5. 举例

血型与皮肤癌
请添加图片描述

横轴代表血型,纵轴代表得皮肤癌的概率,上述是两者的联合概率分布表。
请添加图片描述
0.375这个值表示,当知道了一个人的血型X之后,对于得皮肤癌的概率Y这个随机变量的不确定性减少了0.375。也就是说,在知道了血型之后,或多或少的就知道了这个人患上皮肤癌的概率信息。


http://www.ppmy.cn/news/499480.html

相关文章

gdb mi接口命令入门大全

gdb入门的话,先看看我这个博客 gdb入门教程大全(清晰明了)_标biao的博客-CSDN博客 gdb mi简介 gdb mi接口协议有3个版本 GDB/MI Development and Front Ends (Debugging with GDB) 与gdb版本对应关系如下:(gdb指的是…

MI相关--学习笔记

MI(mutual information): 基于互信息的donsker-varadhan下界,则使用神经网络来估计互信息就转化为了一个优化问题,可以通过梯度上升算法来实现。互信息可以看做加强版的 correlation,correlation 只能反映变…

NVMe-MI协议解读

众所周知,在一个存储系统中,将设备管理与业务分离是一个良好的设计,比如在Nvme协议中就有一个Admin命令集,与IO命令分开。为了能够更规范合理得对NVMe SSD进行管理,NVMe-MI协议应运而生。 Nvme-MI(Management Interfa…

MIMO是什么

在这个万物互联的时代,手机作为我们和外界联系的窗口,似乎已经成为了我们身体的一部分。 而手机是无法自己上网的,无时无刻不和手机进行通信的网络已经变得跟水和电一样,畅快上网的时候感觉不到这些幕后英雄的重要,一…

百度一款前端图片合成工具库MI开源啦!

什么是MI Mi全称mix-img,是一个前端图片合成工具库,它可以将多张图片和文字合成一个全新的图片。作为一个轻量级的图片合成解决方案,Mi支持多张图片并行加载合成,减少图片合成时间,提升前端开发者的开发效率,改善开发…

解决cas aba的问题 解决方案–AtomicStampedReference的引用加版本号

public static void main(String[] args) {//---------------------------- ABA问题解决方式AtomicStampedReference--------------------------------AtomicStampedReference<Integer> integerAtomicStampedReferencenew AtomicStampedReference<>(1,1);new Threa…

数据结构-归并排序:理解和实现(附C++代码)

目录 ## 1. 引言 ## 2. 归并排序概述 ## 3. 归并排序的思想和步骤 ### 3.1 分解 ### 3.2 归并 ### 3.3 合并 ## 4. 归并排序的时间复杂度和空间复杂度 ## 5. C实现归并排序 ### 5.1 实现思路 ### 5.2 代码实现 ## 6. 总结 ## 1. 引言 在计算机科学中&#xff0c;排…

20230524 taro+vue3+webpack5+pdfjs时打包pdfjs进不来的问题

关闭taro的terser就可以了 terser:{enable:false }