ADMM求解优化NMF

article/2025/9/21 12:57:53

本文拟对文章:“An Alternating Direction Algorithm for Matrix Completion with Nonnegative Factors”中利用ADMM进行非负矩阵分解部分进行推导。

min_{U,V}\|X-WH\|_2^2;\\ s.t\quad W,H\geq 0

他的 augmented Lagrangian 可写成如下形式:

{​{\cal L}_A}(X,{\rm{W}},H,Hp,Wp,\tilde H,\tilde W) = \frac{1}{2}\|X - WH\|_F^2 + \tilde W \bullet (W - Wp) + \tilde H \bullet (H - Hp) + \frac{\rho }{2}\|W - Wp\|_F^2 + \frac{\rho }{2}\|H - Hp\|_F^2(1)
(1)优化W

\frac{​{\partial L}}{​{\partial W}} = - X{​{\rm{H}}^T} + WH{H^T} + \tilde W + \rho \left( {W - Wp} \right) = 0;W\left( {H{H^T} + \rho I} \right) = X{​{\rm{H}}^T} + \rho Wp - \tilde W,W = \left( {X{​{\rm{H}}^T} + \rho Wp - \tilde W} \right){\left( {H{H^T} + \rho I} \right)^{ - 1}}

(2)优化H:

\frac{​{\partial L}}{​{\partial H}} = - {W^T}X + {W^T}WH + \tilde H + \rho \left( {H - Hp} \right) = 0;\left( {​{W^T}W + \rho I} \right)H = {W^T}X - \tilde H + \rho Hp;H = {\left( {​{W^T}W + \rho I} \right)^{ - 1}}\left( {​{W^T}X - \tilde H + \rho Hp} \right).

(3)优化Wp,Hp:

\begin{array}{*{20}{l}} {\frac{​{\partial L}}{​{\partial Hp}} = - \tilde H - \rho \left( {H - Hp} \right) = 0;Hp = \max \left( {H + \rho \tilde H,0} \right)}\\ {\frac{​{\partial L}}{​{\partial Wp}} = - \tilde W - \rho \left( {W - Wp} \right) = 0;Wp = \max \left( {W + \rho \tilde W,0} \right)} \end{array}

(4)优化\widetilde{W},\widetilde{H}:

\begin{array}{l} \tilde H = \tilde H + \gamma \rho {\left( {H - Hp} \right)^T}\\ \tilde W = \tilde W + \gamma \rho {\left( {W - Wp} \right)^T} \end{array}

迭代终止条件:

orl人脸库(32*32)上,目标函数收敛曲线:

 聚类结果比较:

略好于传统NMF优化方法基于原始数据的聚类结果。

matlab代码:

function [W, H] = nmf_admm(V, W, H)
% nmf_admm(V, W, H)%
% inputs
%    V: matrix to factor 
%    W, H: initializations for W and H
%
% outputs
%    W, H: factorization such that V \approx W*H% determine dimensions[m,n] = size(V);[~,k] = size(W);rho = 1;gamma = 0.01;% initializations for other variablesX = V';Wplus = W;Hplus = H;alphaW = zeros(size(W));alphaH = zeros(size(H));maxiter = 10000;for iter=1:maxiter% update for WP = H*H' + rho*eye(k);Q = X*H' + rho*Wplus - alphaW;W = ( P'\ Q' )';% update for HH = (W'*W + rho*eye(k)) \ (W'*X- alphaH + rho*Hplus);% update for H_+ and W_+Hplus = max((H + 1/rho*(alphaH)), 0);Wplus = max(W + 1/rho*alphaW, 0);% update for dual variablesalphaH = alphaH + gamma*rho*(H - Hplus);alphaW = alphaW + gamma*rho*(W - Wplus);temp1 = 0.5*trace((X-W*H)'*(X-W*H));temp2 = trace(alphaW'*(W-Wplus)) + trace(alphaH'*(H-Hplus));temp3 = 0.5*rho*(trace((Wplus - W)*(Wplus - W)')+trace((Hplus - H)*(Hplus - H)'));fk = temp1 + temp2 + temp3;fk0 = fk/trace(X*X').^0.5;if iter>1err(iter-1) = fk;if abs(fk0-fk1)/max(1,abs(fk))<1e-6 break;endendfk1=fk0;
%         alphaW1 = alphaW;
%         alphaH1 = alphaH;endW = Wplus;H = Hplus; end

 

 

 


http://chatgpt.dhexx.cn/article/IJfiRrpe.shtml

相关文章

NMF降维算法与聚类模型的综合运用

NMF降维算法与聚类模型的综合运用 前言一&#xff1a;NMF算法二&#xff1a;NMF算法的使用三&#xff1a;NMF算法与层次聚类的综合使用四&#xff1a;总结 前言 这一章&#xff0c;我们讨论下另一个比较有效的降维手段&#xff1a;NMF&#xff08;非负矩阵分解&#xff09;。N…

NMF(非负矩阵分解)分子分型

<~生~信~交~流~与~合~作~请~关~注~公~众~号生信探索> Non-Negative Matrix Factorization (NMF). Find two non-negative matrices, i.e. matrices with all non-negative elements, (W, H) whose product approximates the non-negative matrix X. This factorization c…

LSA、pLSA、LDA、NMF、BERTopic、Top2Vec进行主题建模

在自然语言处理(NLP)中,主题建模是一种技术,用于从文本数据中发现隐藏的语义主题(或主题)。这是一个无监督机器学习问题,即在没有标签或标签的情况下学习模式。主题建模的应用非常广泛,可用于搜索引擎、情感分析、新闻聚类和摘要生成等许多任务。 在这里将探讨主题建模…

NMF通俗理解及python实现

一、通俗理解概念 NMF(Non-negative matrix factorization)&#xff0c;即对于任意给定的一个非负矩阵 V&#xff0c;其能够寻找到一个非负矩阵 W 和一个非负矩阵 H&#xff0c;满足条件 V W H VW \times H VWH&#xff0c;即将一个非负的矩阵分解为左右两个非负矩阵的乘积…

NMF-CC

题目&#xff1a;Multi-view clustering by non-negative matrix factorization with co-orthogonal constraints 一、创新点 和其他使用NMF的方法一样&#xff0c;这篇文章也是加约束&#xff0c;使创造出来的representation matrices更好。这篇文章加的约束叫做co-orthogon…

用python实现NMF降维

非负矩阵分解(Non-negative Matrix Factorization) NMF简介 NMF用于文本降维 NMF的可解释性 NMF用于归纳单篇文章主题 NMF用于推荐多篇相似文章 NMF简介 NMF也是一种降维方法&#xff0c;相比PCA具有以下特点&#xff1a; 1&#xff0c;可解释性 2&#xff0c;可以用于所…

nmf java_NMF pLSA

今天在围脖中看到自动化所刘康的围脖中给了一个关于NMF和pLSA对比分析的链接http://ezcodesample.com/plsaidiots/NMFPLSA.html&#xff0c;大体读了一下&#xff0c;下面用中文对文中的思想重新解释&#xff0c;版权归原作者Andrew Polar。 一、名词解释 (1)NMF, nonnegative …

nmf java_NMF的算法原理

NMF(Non-negative matrix factorization&#xff0c;非负矩阵分解)&#xff0c;即对于任意给定的一个非负矩阵V&#xff0c;其能够寻找到一个非负矩阵W和一个非负矩阵H&#xff0c;满足条件VW*H,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。其中&#xff0c;V矩阵中每一…

NMF降维的本质,NMF和PCA的区别

一、NMF的本质 1.当数据完全一样时 # 将如下数据的行向量用NMF降到3维&#xff0c;初始化策略全部用nndsvd&#xff0c;不能用random&#xff0c;下同 Xnp.array([[5,5,5,5],[5,5,5,5],[5,5,5,5],[5,5,5,5]])结果是这样的&#xff1a; 2.当数据分布全部递增时 # 原数据 Xn…

非负矩阵分解NMF简介

本文整理NMF相关知识。 简介 非负矩阵分解(Nonnegative Matrix Factorization)&#xff0c;简称NMF&#xff0c;是由Lee和Seung于1999年在自然杂志上提出的一种矩阵分解方法&#xff0c;它使分解后的所有分量均为非负值(要求纯加性的描述)&#xff0c;并且同时实现非线性的维数…

NMF

计算机是人类解决难题、探索未知以及提供娱乐的绝佳工具。在高效运行着的各种计算机应用背后&#xff0c;融汇了人类在物理、电子和数学等多门学科的高超智慧。严密的数学使得计算机能高效执行人类指令&#xff0c;控制内部各种数据流的走向&#xff0c;因此在现代计算机科学研…

无监督学习——非负矩阵分解(NMF)

序 非负矩阵分解&#xff08;NMF&#xff09;是一种无监督学习算法&#xff0c;其目的在于提取有用的特征。它的工作原理类似于PCA&#xff0c;也可以用于降维。与PCA相同&#xff0c;我们试图将每个数据点写成一些分量的加权求和。但在PCA中&#xff0c;我们想要的是正负分量…

非负矩阵分解NMF

http://blog.csdn.net/pipisorry/article/details/52098864 非负矩阵分解(NMF,Non-negative matrix factorization) NMF的发展及原理 著名的科学杂志《Nature》于1999年刊登了两位科学家D.D.Lee和H.S.Seung对数学中非负矩阵研究的突出成果。该文提出了一种新的矩阵分解思想—…

非负矩阵分解(NMF)的Matlab实例与说明

原理啥的到处都有&#xff0c;就直接跳过了。这里主要是NMF的基础实验。下一篇是NMF的高光谱实验总结。 1. matlab示例解说 这一节的图片来自官方文档。 这里第一和第三变量在第一行的值0.6945和0.62220对W的第一列有相当强的权重。第一个第二变量在第二行的值0.8020和0.568…

【机器学习】NMF(非负矩阵分解)

写在篇前 本篇文章主要介绍NMF算法原理以及使用sklearn中的封装方法实现该算法&#xff0c;最重要的是理解要NMF矩阵分解的实际意义&#xff0c;将其运用到自己的数据分析中&#xff01; 理论概述 NMF(Non-negative matrix factorization)&#xff0c;即对于任意给定的一个非负…

vs快捷键与vs自定义快捷键

文章目录 :star: 主题&#xff1a;VS快捷键1.常用的默认快捷键2.自定义快捷键2.1 添加快捷键2.2 移除快捷键2.3 重置快捷键&#xff0c;恢复默认 :bookmark: 小结 ⭐️ 主题&#xff1a;VS快捷键 &#x1f4cd; 来自&#xff1a;中南林业科技大学软件协会学术部&#xff1a;谢…

vs注释与反注释快捷键

使用VS C语言编译器的快捷注释按键&#xff1a; 选中部分注释&#xff1a; Ctrl KD &#xff08;按住Ctrl然后先按K再按D&#xff09; 注释前&#xff1a; 注释后&#xff1a; 反注释&#xff1a; Ctrl KU &#xff08;按住Ctrl然后先按K再按U&#xff09; 操作完就恢复了…

VS(visual studio)注释快捷键及自定义设置

注释&#xff1a; CtrlKC 取消注释&#xff1a; CtrlKU 【工具】→【选项】→【环境】→【键盘】→【搜索注释】 点击【编辑.注释选定内容】→【移除】 输入快捷键&#xff0c;点击【分配】→【确定】 取消注释的自定义快捷键同理设置即可&#xff0c;注释和取消注释不…

Visual Studio Code2022无法使用注释快捷键

用了一个月vscode&#xff0c;使用ctrl/发现注释始终无法使用&#xff0c;最开始一直以为是系统或者版本问题&#xff0c;因为之前机器做过一次修改机器码的操作。 今天尝试解决了一下&#xff0c;发现问题可以通过键盘映射方案进行解决 文件->账户设置或者右上角头像图标 搜…

vs2019注释快捷键设置

vs2019默认的注释快捷键为ctrl&#xff0b;k&#xff0b;c 取消注释快捷键为ctrl&#xff0b;k&#xff0b;u 我们也可以自己设置 当然&#xff0c;也可以设置自己习惯的快捷键