news 2026/4/15 11:45:35

MATLAB实现基于Sinkhorn距离的非负矩阵分解(SDNMF)算法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MATLAB实现基于Sinkhorn距离的非负矩阵分解(SDNMF)算法详解

非负矩阵分解(NMF)是一种经典的无监督学习方法,广泛用于数据降维、特征提取和主题建模等领域。标准NMF通过最小化Frobenius范数来逼近数据矩阵X ≈ U V^T,但它忽略了样本之间的几何结构信息,导致分解结果有时缺乏判别性和局部保持能力。

为了解决这一问题,基于Sinkhorn距离的非负矩阵分解(SDNMF)引入了样本间的相似性图W,并用Sinkhorn距离(一种带熵正则化的最优传输距离)作为正则项,鼓励相邻样本在低维表示空间(即V)中保持相似。这种方法特别适合处理具有内在流形结构的数据,如图像、文本、生物信息等,能得到更具语义的基矩阵U和系数矩阵V。

算法目标

给定非负数据矩阵X(m × n),相似性权重矩阵W(n × n),以及隐因子数k,SDNMF求解:

[

\min_{U \geq 0, V \geq 0} D_S(U, V) + \alpha \cdot \text{Tr}(V^T L V)

]

其中:

  • D_S表示Sinkhorn距离(也称熵正则化的Wasserstein距离),用于度量重构误差X与U V^T之间的差异,比Frobenius范数更鲁棒。

  • 第二项是经典的图正则化项,L为图拉普拉斯矩阵,α控制结构保持强度。

  • 当α=0时,算法退化为基于Sinkhorn距离的纯NMF(EMDNMF)。

核心实现特点

该函数提供了灵活的参数配置和优化方式:

  • 输入

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 2:13:21

Altium Designer混合信号电路PCB布局的隔离技术详解

混合信号PCB设计实战:用Altium Designer搞定噪声隔离难题你有没有遇到过这样的情况?电路原理图明明没问题,ADC前端也用了高精度仪表放大器,结果采样数据却总在“跳舞”,信噪比远低于手册标称值。或者,系统一…

作者头像 李华
网站建设 2026/4/15 11:07:28

实战案例:基于BJT的模拟电子技术基础放大器设计

从零搭建一个BJT共射放大器:不只是算公式,更是理解模拟电路的灵魂你有没有过这样的经历?在实验室里搭好了一个看起来“教科书级”的BJT放大电路,电源一上电,示波器一接——输出不是削顶就是底部塌陷,噪声比…

作者头像 李华
网站建设 2026/4/10 14:35:10

工业控制PCB绘制:手把手教程(从零实现)

工业控制PCB绘制:从零实现的实战指南你有没有遇到过这样的情况?板子焊好了,通电后MCU却频繁重启;明明代码没问题,RS-485通信就是丢包严重;ADC采样值像坐过山车一样跳动不止……这些问题,往往不是…

作者头像 李华
网站建设 2026/4/12 13:36:42

DUT时钟分配网络设计:稳定性提升核心要点

DUT时钟分配网络设计:如何让每一皮秒都精准无误在高速集成电路测试的世界里,一个微不足道的时钟偏差,可能就是决定一颗芯片“生”或“死”的关键。随着5G通信、AI加速器和雷达系统对采样率与带宽的要求逼近10 GSPS甚至更高,被测器…

作者头像 李华
网站建设 2026/4/10 10:06:43

VSCode - 显示EOL字符的插件

VSCode自身没有显示EOL字符的功能,可以通过扩展插件来实现。 在插件市场搜索到: Render Line Endings。 点击安装,Publisher:Josip Medved,选择相信第一次从此publisher安装程序。 This extension renders end of li…

作者头像 李华
网站建设 2026/4/9 16:58:05

继电器控制电路设计:从零实现方案

从零搭建一个可靠的继电器控制电路:不只是“接上线就能用” 你有没有遇到过这样的情况? 写好了代码,MCU GPIO也配置正确了,可一通电——继电器不动作、单片机复位、甚至烧了个IO口……明明只是想控制个灯泡或插座,怎么…

作者头像 李华