基于直方图自适应与核密度估计的MATLAB深度互信息计算平台
项目介绍
互信息(Mutual Information, MI)是信息论中用于衡量两个随机变量间相互依赖程度的核心指标。不同于相关系数,互信息能够有效捕获变量间的非线性复杂关系。本项目是一套基于MATLAB开发的高精度互信息计算分析平台,集成了多种主流的互信息估计算法。该系统旨在解决传统方法在处理连续数据时的离散化误差、带宽选择困难以及高维计算精度下降的问题,为科研与工程实践提供一个健壮、高效且结果可回溯的计算工具。
功能特性
- 多算法集成:包含基于自适应分箱的直方图法、高斯核密度估计(KDE)以及最先进的KSG非参数估计算法。
- 自适应分箱逻辑:内置Freedman-Diaconis法则,能够根据数据分布特征自动计算最优分桶宽度,最大限度保留原始信息分布。
- 高精度平滑估计:采用高斯核函数对连续变量进行平滑处理,并支持Silverman带宽准则,提升对复杂概率密度的模拟精度。
- 非参数化KNN估计:实现KSG(Kraskov-Stögbauer-Grassberger)估计算法,通过计算K-最近邻空间体积直接推导互信息,避免了密度估计带来的偏差,尤其适用于高维分析。
- 全面可视化分析:程序自动生成多维度的计算报告,包括原始分布散点图、概率分布面图、KDE联合密度面图以及边缘熵分量的柱状对比图。
- 高性能计算优化:采用MATLAB全向量化运算,针对大规模样本数据进行了计算效率优化,并支持bit与nat两种信息单位切换。
系统要求- 软件环境:MATLAB R2018b 或更高版本。
- 依赖工具箱:Statistics and Machine Learning Toolbox(用于执行k-最近邻搜索及距离计算)。
实现功能与逻辑说明程序的执行流程严格遵循数据模拟、参数配置、算法多路径计算、结果汇总与可视化的逻辑顺序:
- 模拟数据生成:系统首先生成800组非线性相关的样本点。通过正弦函数与二次方函数构建复杂的变量关系,并添加随机高斯噪声,用以验证算法在非线性与噪声环境下的捕捉能力。
- 环境配置与参数化:用户可自定义计算单位(bit/nat)、KSG算法中的邻域数(K值)以及KDE的核带宽。若带宽设为0,系统将自动触发Silverman准则计算。
- 计算逻辑执行:
*
自适应直方图路径:基于变量的四分位距(IQR)确定分箱数,利用二维直方图统计联合概率,通过Shannon熵公式计算MI。
*
KDE密度平滑路径:对数据进行标准化处理,利用向量化欧氏距离阵计算每个样本点的局部密度,通过对数平均法估算信息熵。
*
KSG邻域路径:通过Chebychev距离寻找每个样本的第k个最近邻。在边际空间内通过统计邻域内的点数,结合digamma函数实现无偏估计。
- 结果输出:系统会将计算出的互信息(MI)与标准化互信息(NMI)以字符报表的形式打印在命令行窗口,并弹出交互式图表页面。
关键函数与算法细节分析
1. 自适应分箱计算函数
该功能块的核心在于通过Freedman-Diaconis法则计算分桶宽度。它计算变量的四分位距,公式为 $h = 2 cdot IQR cdot n^{-1/3}$。为防止内存异常,该逻辑还加入了10到100个分箱的限制阈值,确保了直方图计算的效率。
2. 核密度估计(KDE)函数
该功能块实现了基于高斯核的二维密度估计。其技术细节在于使用了向量化的计算方式,利用 pdist2 和 permute 快速构建距离矩阵,从而高效地获得每个采样点的联合概率密度(dxy)和边缘概率密度(dx, dy)。这种采样法估计熵的处理方式在处理中大规模数据时比纯积分法更具性能优势。
3. KSG非参数估计函数
这是本项目最核心的高精度估计算法。它完全避开了显式的概率分布估计,通过以下步骤实现:
- 添加 $10^{-10}$ 级别的微小扰动以解决数据点重叠导致的奇异值问题。
- 利用
knnsearch 在全空间查找第k个邻居。 - 在边缘维度(X和Y)分别计算切比雪夫距离内的邻域点数 nx 和 ny。
- 应用 digamma 函数修正公式 $I(X;Y) = psi(k) - langle psi(nx+1) + psi(ny+1) rangle + psi(n)$,实现对互信息的最优估计。
4. 结果可视化逻辑
可视化模块通过四象限子图完整呈现了从原始信号到概率表面再到信息量度对比的全过程:
- 散点图:直观展示变量间的非线性相关形态。
- 联合分布热力图:展示直方图法下的离散化密度。
- 3D KDE曲面图:利用
shading interp 技术展示平滑的概率密度面,形象地揭示了变量间的耦合强度。 - 柱状图对比:将不同算法得出的边缘熵(HX, HY)进行横向对照,辅助评估不同估计方法的鲁棒性。
5. 鲁棒性保障机制
代码底层在对数运算前统一加入了
eps(极小浮点数),有效避免了在概率为零或极小时出现的 log(0) 错误,确保了在大规模计算时的系统稳定性。同时,提供了标准化互信息(NMI)的计算,将MI值映射到 [0, 1] 区间,便于不同数据集间的横向比对。