没有合适的资源?快使用搜索试试~ 我知道了~
≥软件X 20(2022)101257pyGNMF:一个用于实现广义非负矩阵分解方法的Python库尼拉夫湖Lekinwalaa,Mani Bhushana,b,a印度孟买理工学院化学工程系,孟买400076,印度马哈拉施特拉邦b印度孟买理工学院气候研究跨学科项目,孟买400076,印度马哈拉施特拉邦ar t i cl e i nf o文章历史记录:接收3六月2022收到修订版2022年9月24日接受2022年关键词:最速下降相关误差投影梯度更新代码元数据a b st ra ct本文介绍了一个名为pyGNMF的Python库,它实现了最近提出的广义非负矩阵分解(GNMF)方法。GNMF通过合并数据集不同元素之间的误差协方差信息,将非负矩阵分解在文献中,几种非负矩阵分解(NNMF)方法,如NMF,glsNMF和LS-NMF是可用的;然而,它们假设不同形式的误差协方差矩阵。具体地,NMF假设单位误差协方差矩阵,LS-NMF假设对角误差协方差矩阵,glsNMF假设误差仅在一个方向(行或列)上相关。相比之下,GNMF可以包含完整的误差协方差信息,并且根据误差协方差结构,GNMF将这些方法作为特殊情况包含在内。文章介绍了两种方法来解决这个问题,通过使用投影梯度和乘法更新,并证明了空气污染源解析问题。这两种方法都已被纳入pyGNMF库。GNMF方法的数学性质使其与领域无关,使来自不同领域的用户能够为他们的非负矩阵分解应用部署GNMF。©2022作者(S)。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。当前代码版本v1.1.3用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-22-00146最新版本的GitHub存储库https://github.com/niravl/pyGNMF法律代码许可证MIT许可证使用Git的代码版本控制系统软件代码使用的语言、工具和服务Python 3编译要求、运行环境依赖性1. Python 3.8,2.NumPy [1],3.SciPy [2](使用scipy.io导入和编写*.mat文件),4.rich(https://github.com/Textualize/rich)pyGNMF可以在PyPihttps://pypi.org/project/pyGNMF/上使用pipinstallpyGNMF如果可用,链接到开发人员文档/手册参考README.md文件问题支持电子邮件通过GitHub(https://github.com/niravl/pyGNMF/issues)提出问题或发送发送电子邮件至pyGNMF@gmail.com1. 动机和意义在文献中,几种非负矩阵分解(NNMF)方法,如NMF [3],glsNMF [4]和LS-NMF [5],通讯作者:Department of Chemical Engineering,Indian Institute ofTechnology Bombay,Mumbai 400076,Maharashtra,India.电子邮件地址:nirav. gmail.com(Nirav L.Lekinwala),mbhushan@iitb.ac.in(Mani Bhushan).https://doi.org/10.1016/j.softx.2022.101257可用;然而,它们假设不同形式的误差协方差矩阵。最近的一篇文章[6]介绍了一种名为广义非负矩阵分解(GNMF)的方法,通过引入完整的误差协方差信息,将非负矩阵分解为两个非负矩阵的乘积。GNMF包含其他几种方法,如NMF [3],glsNMF [4]和LS-NMF [5]作为特殊情况。特别地,GNMF方法解决了将非负Xn×m矩阵分解为p个因子以获得Gn×p和Fp×m矩阵的优化问题2352-7110/©2022作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx尼拉夫湖 Lekinwala和Mani Bhushan软件X 20(2022)1012572θ×∈⊙Jθ(k)θθθ×联系我们S.T. Gi,l,Fl,j≥0(1b)我的天θθθθθθ与非负约束,通过将元素明智的更新规则中给出的方程。(2)可以修改为,X矩阵的误差然而,2维X矩阵的协方差矩阵不是2维的,因此,θ (k+1)=P(θ(k)+αk(−θJ(k)(7)简化,X矩阵被向量化,使得协方差矩阵是尺寸为nm nm的2-D矩阵。所考虑的优化问题使以下目标函数(J)最小化,1其中,αk是标量步长值,并且被迭代地选择,使得在后续迭代之间足够的减少,最小JG、F2[(Xv−(GF)v)−1(Xv−(GF)v)](1a)版本给出为,(J(k+1)−J(k))≤[2019 -04 - 25]2019 -04-0100:00: 00(k+1)−(k))(8)i = 1,2,. . . ,n; j = 1,2,. . . ,m;l =1,2,. . . ,p其中,Xv是通过在单个向量中堆叠列的元素或行的转置而获得的X矩阵的向量化形式,k是具有对应于Xv的结构的误差协方差矩阵,p是基础因子的数量在X矩阵中由用户指定。在Eq中讨论的优化问题。(1)关于F是双凸的,G,因此可以通过交替求解保持G不变,反之亦然。给出更新θ(F或G)的一般迭代方案,θ( k+1 ) =θ( k ) +η ( k ) <$ (− <$θJ ( k ) )(2)其中,σ(0, 1)是用户指定的常数。更多的细节可参见母条款[6]。在乘法和投影梯度程序中,F和G的顺序更新都是迭代地继续进行的,直到满足用户指定的收敛标准[6]。2. 包装描述pyGNMF包的开发是为了解决方程中的优化问题。(1)或者通过使用乘法更新(Eq. (5))或投影梯度更新方法(Eq.(七))。pyGNMF包由五个类组成,其中三个主要类对应于到GNMF方法与乘法(gnmf_multiplicative_其中运算符表示的是两个向量(或矩阵),k表示迭代计数器,η(k)更新),投影梯度(gnmf_projected_gradient)向上-的NMF方法,以及带乘性(nmf_θ是步长向量(或标量),并且)更新[3]。 其他类,即θθ是目标函数Jθ相对于θ的梯度,并在θ(k)处求值。它可以用数学表达为,乘法更新internal_functions和covariance_matrix_handling是执行正定性检查的支持类(k)θθθ =θ=θ(三)通过对协方差矩阵进行重构和分解,得到不同方法的协方差矩阵。封装结构示意图如图所示。1.一、关于PyGNMF的一些重要类的详细信息解决优化问题的两种方法(等式2)(一)在母条款[6]中提出。这些对应于步长向量η(k)的不同选择。下面简要讨论这些方法1.1. 乘法更新对于乘法更新,步长向量η(k)被选择为使得所得到的更新(等式2)被更新。(2))在性质上是乘法的。具体地,η(k)是,接下来讨论。2.1. 类此类实现GNMF方法的投影梯度变体,可以使用代码片段中显示的代码调用1. 以下是有关所需输入的详细信息,1. X_matrix(required):要分解为p个因子的大小为nm的矩阵。2. 协方差(必需):协方差矩阵(nm×nm)cor-(k)θ(k)响应于通过行堆叠或ηθ=k+J(k)(四)列堆叠元素。option=('row_stacked',θθ其中除法是逐元素的,并且=+J(k)−−J(k)。3. G_init ='random'和 F_init这里,+(k)θ θ θ θ θG和F的非负初始猜测,大小为n×p,θJθ对应于具有正号的正项,并且−J(k)对应于p×m。如果使用“random”关键字,则G_initθ θ(k)th和F_init在内部随机生成。解析展开θJθ .对于(k1)迭代的结果更新变为,−J(k)4. beta=0.1,sigma=10−4,alpha_init_G=1,alpha_init_F=1(可选): 参数 用于迭代地选择用于G和F的更新的步长。默认θ(k+1) = θ(k)θ θ(五)+J(k)值如所示设置。θ θ5。num_fact=None, num_init=1(必需):参数更多的细节可参见母条款[6]。1.2. 预计梯度更新投影梯度法求解方程中的优化问题。(1)是基于传统的最速下降方法,并通过引入投影算子(P)[7]扩展到NMF方法,=σθθ尼拉夫湖 Lekinwala和Mani Bhushan软件X 20(2022)1012573×表示考虑中的数据集的因子数量和不同初始化的数量。6. max_iter=5 105和tolerance=10−6是参数,为收敛。此外,参数conv_typ在收敛时,函数返回G_upd、F_upd和obj_funcP(θ) θ其中θ0,如果θi0<θi, 否则(六)它们分别是收敛的G、F和相应的目标函数的值。尼拉夫湖 Lekinwala和Mani Bhushan软件X 20(2022)1012574代码1:函数调用Fig. 1. pyGNMF封装结构。multiplicative_update通过指定恒等协方差ma-pyGNMF.gnmf_projected_gradient。1将pyGNMF.gnmf_projected_gradient导入为gproj2G_upd,F_upd,obj_func=gproj. running_method(X_matrix,covariance,G_init=“random”,F_init=“random”,beta=0.1,σ→σ=0.0001,alpha_init_G=1,alpha_init_F=1,→option=('row_stacked','column_stacked'),num_init=1,max_iter=500000,→tolerance=1e-06,conv_typ='relative',→conv_num=3)因此,nmf_multiplicative_update方法更快,因为它在更新规则中不考虑协方差信息,但会产生相同的结果。可以使用代码片段3中所示的代码调用具有乘法更新的NMF方法。代码3:函数调用pyGNMF .nmf_multiplicative_update.1将pyGNMF.nmf_multiplicative_update导入为nmfmul2G_upd,F_upd,obj_func= nmfmul. running_method(3X_matrix,G_init=“random”,F_init=“random”,num_init=1,max_iter=500000,→tolerance=1e-06,conv_typ='relative',→conv_num=3)2.2. 类该类实现了建议的GNMF方法的乘法更新变体,可以使用代码片段2中显示的代码进行调用。所需的输入和参数定义与第2.1节中讨论的内容相似。代码2:函数调用pyGNMF .gnmf_multiplicative_update.1将pyGNMF.gnmf_multiplicative_update导入为gmult2G_upd,F_upd,obj_func=→gmult. running_method(X_matrix,covariance,G_init='random',F_init='random',→option=('row_stacked','column_stacked'),num_init=1,max_iter=500000,→tolerance=1e-06,conv_typ='relative',→conv_num=3)2.3. 类pyGNMF包还包含一个名为nmf_ multiplicative_update的类,它直接实现了NMF [3]方法。 虽然NMF可以使用gnmf_尼拉夫湖 Lekinwala和Mani Bhushan软件X 20(2022)10125753.×4.×2.4. 代码流类gnmf_projected_gradient和gnmf_multiplicative_update由一组用于实现该方法的其他函数组成。下面简单介绍一下pyGNMF的流程及其功能。 图 2示意性地示出了这些功能的使用。1. restruct_covariance_inverse:此函数是covariance_matrix_handling 类 的 一 部 分 , 它 处 理 转换,分裂(用于乘法更新)以及用于更新F和G矩阵的协方差矩阵的逆。2. gnmf_update_F:该函数根据所使用的方法处理F矩阵的更新,并输出大小为p m的更新后的F矩阵。gnmf_update_G:此函数处理G矩阵,并输出大小为n p的更新的G矩阵。objective_function:此函数使用更新的F和G矩阵来计算该迭代时的目标函数值。目标函数使用由Eq. (1a)。尼拉夫湖 Lekinwala和Mani Bhushan软件X 20(2022)1012576××测试数据集( illustrative_example.mat,使用test_data_generation.py生成)和代码文件(test_running_method.py)用于实现不同的方法,作为包的一部分包含在test文件夹中。 代码片段4显示了gnmf_projected_gradient方法在包含的测试数据集上的用法。代码4:使用测试示例的代码gnmf_projected_gradient方法。1来自scipyimportio2将pyGNMF.gnmf_projected_gradient导入为gproj34示例数据=→io。loadmat(“illustrative_example.mat“)5X_matrix= example_data['x_matrix']6协方差=example_data['covariance']7num_fact= 389GMat、FMat、OFunc = gproj。running_method(10X_matrix,##待分解11协方差,##协方差矩阵12G_init='random',##随机初始化13F_init='random',##随机初始化14β=0.1,##参数--步长15sigma=0.0001,##参数--步长16alpha_init_G=1,##alpha_G初始值17alpha_init_F=1,##alpha_F初始值18option='row_stacke d',##Cov. 对应于X矩阵的 行堆叠元素。19num_fact=3,##因子数20num_init=5,##初始化次数21max_iter=500000, ##最大数量n→迭代22公差= 1 e-8##公差值↪→第二十三 章)收敛图 二 . gnmf_projected_gradient 类 中 涉 及 的 不 同 步 骤 的 示 意 图和g n m f _multiplicative_update。蓝色文本表示这些类中函数的名称来源:改编自[6]。3. 说明性示例pyGNMF软件包是由空气污染源评估应用驱动的。在一个典型的源解析应用中,将含有n个样本和m个组分的PM2.5组分浓度矩阵分解为p个因子,得到两个大小分别为np和pm的矩阵G和F在源解析文献中,这些矩阵被称为源贡献和源剖面。然而,数学的Na-NNMF和GNMF的性质使得它们是领域不可知的,并且这些方法可以用于各种应用。为了说明pyGNMF包的使用,一个n=20行的小测试数据集m=6列,p=3个因子,用于演示。4. 影响GNMF是NNMF方法的推广,通过利用协方差信息,它有可能获得改进的矩阵分解。它的动机是空气污染源分配问题,在给定的测量几个物种在一段时间内,目标是确定的基本来源的空气污染,有助于这些测量。这些测量值通过化学分析获得,并且由于各种原因,例如相似的采样、运输、储存条件和化学分析过程,这些测量值可能是相关的(样品中的物质和不同样品之间的物质)。对于母版[6]中讨论的示例,与文献[3]中的其他方法相比,GNMF方法[6]能够获得改进的源识别。NNMF方法及其变体的使用出现在几个领域,例如语音分离[8-在文献中,有一个名为nimfa的Python库[22],它是不同的基于NNMF的方法和初始化方法的集合。然而,NNMF方法,可以将误差协方差信息是缺乏文献。PyGNMF旨在填补这一空白。它的目的是成为一个易于使用的工具,为研究人员在各个领域当误差协方差信息可用时,解决NNMF问题,而不需要在方法细节上花费时间尼拉夫湖 Lekinwala和Mani Bhushan软件X 20(2022)10125775. 结论在这项工作中,提出了一个名为pyGNMF的Python库,它实现了[6]中介绍的GNMF方法。pyGNMF库处理具有投影梯度和乘法更新的GNMF方法以及[3]提出的NMF方法的实现。pyGNMF包在其当前形式下完全可用。然而,附加的特征,诸如在获得稀疏因子矩阵的方法,将其他约束与现有的非负约束结合起来,以及对所获得的结果进行有见地的可视化,可以添加到pyGNMF的未来版本中。竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作数据可用性文章中描述的研究未使用任何数据确认在孟买的印度理工学院,Mani Bhushan和Nirav L. Lekinwala感谢印度政府环境、森林和气候变化部通过第14/10/2014-CC(第二卷)号拨款为NCAP- COALESCE项目(关于碳气溶胶排放、源分配和气候影响的国家碳气溶胶计划项目)提供的资金。本文件中表达的观点仅代表作者的观点,不一定反映该部的观点。该部不认可本出版物中提到的任何产品或商业服务引用[1] Harris CR , Millman KJ , van der Walt SJ , Gommers R , Virtanen P ,Cournapeau D , et al. Array programming with NumPy. Nature 2020;585(7825):357-62. http://dx.doi.org/10.1038/s41586-020-2649-2网站。[2] [10] Virtanen P , Gommers R , Oliphant TE , Haberland M , Reddy T ,Courna-peau D,et al.,SciPy 1.0:Python中科学计算的基本算法。NatureMethods 2020;17:261-72. 网址://dx.doi.org/10.1038/s41592-019-0686-2网站。[3] Lee DD,Seung HS.通过非负矩阵分解学习对象的部分。Nature 1999;401(6755):788-91. http://dx.doi.org/10.1038/44565.[4] Plis SM,Potluru VK,Lane T,Calhoun VD.相关噪声:它如何破坏NMF,以 及 如 何 处 理 它 。 J Signal Process Syst 2010;65 ( 3 ) : 351-9 。http://dx.doi.org/10.1007/s11265-010-0511-8网站。[5]Wang G,Kossenkov AV,Ochs MF.LS-NMF:一种利用不确定性估计的改进非负BMC Bioinformatics 2006;7(1). http://dx.doi.org/10.1186/1471-2105-7-175网站。[6] Lekinwala NL,Bhushan M.大气污染源解析的广义非负矩阵科学总环境2022;156294。http://dx.doi.org/10.1016/j.scitotenv.2022.156294网站。[7] 林C。非负矩阵分解的投影梯度法。神经计算2007;19(10):2756-79.http://dx.doi.org/10.1162/neco.2007的网站。19.10.2756[8]王毅,纳拉亚南A,王D. 对培训目标为超级分离演讲IEEE/ACMTransAudioSpeechLangProcess2014;22(12):1849-58.http://dx.doi.org/10.1109/TASLP.2014.2352935网站。[9]Schmidt MN,Olsson RK.基于稀疏非负矩阵分解的单通道语音分离。 In:Interspeech. Vol. 2,Citeseer; 2006,p. 2比5[10] Esra JS,Sukhi Y.助听器的语音分离方法。计算机系统科学工程2023;44(2):1659-78. http://dx.doi.org/10.32604/csse.2023的网站。025969。[11]顾明,谢荣,金戈,徐春,王胜,刘军,等。基于盲源分离的二维核磁共振谱流体组分定量评价。第332 章. http://dx.doi.org/10.1016/j.jmr.2021.107079网站。[12]Shashua A,Hazan T.非负张量因式分解及其在统计学和计算机视觉中的应用。第22届机器学习国际会议论文集。New York,NY,USA:Associationfor Computing Machinery; 2005,p. 792-9. http://dx.doi.org/10.1145/1102351的网站。1102451[13]Zhi R,Flierl M,Ruan Q,Kleijn WB.保图稀疏非负矩阵分解在人脸表情识别中的应用。IEEETransSyst Man Cybern B 2010;41(1):38-52.[14] 赵毅,邓芳,裴俊,杨晓.渐进式深度非负矩阵分解架构,具有基于图卷积的 基 础图 像 重 组 。 第132 章 . http://dx.doi.org/10.1016/j.patcog 的 网 站。2022.108984。[15] 施丙,吴丙。基于双正则项加权非负矩阵分解的KSII Trans Int Inf Syst2020;14(5):2171http://dx.doi.org/10.3837/tiis.2020.05.017网站。[16]何东,陈明,王伟,宋聪,秦勇。使用部分可用的DNA甲基化数据对肿瘤组成进行反卷积。BMCBioinformatics2022;23(1).http://dx.doi.org/10.1186/s12859-022-04893-7网站。[17]Long Z , Sun C , Tang M , Wang Y , Ma J , Yu J , et al. Single-cellmultiomics analysis reveals regulatory programs in clear cell renal cellcarcinoma. Cell Discov 2022;8 ( 1 ) . http://dx.doi.org/10.1038/s41421-022-00415-0网站。[18]Tangirala AK,Kanodia J,Shah SL.非负矩阵分解用于全厂振荡的检测和诊断。IndEngChemRes2007;46(3):801-17.http://dx.doi.org/10.1021/ie0602299网站。[19]吴丽,周伟,何宏,姚良.基于伪近邻的非线性故障检测稀疏降维方法。IEEETransSyst Man Cybern 2021;51(8):4980-92. http://dx.doi.org/10的网站。1109/TSMC.2019.2945253。[20]Ribeiro B,Silva C,Vieira A,Neves J.在财务困境数据中使用非负矩阵分解提取判别特征。In:Kolehmainen M,Toivanen P,Beliczynski B,editors.自 适 应 和 自 然 计 算 算 法 。 Berlin , Heidelberg : Springer BerlinHeidelberg;2009,p. 537-47[21]Ma D,Mankad S. CP-squared:核心-外围网络中的变点检测方法。196.第一百九十六章:http://dx.doi.org/10的网站。1016/j.eswa.2022.116660的网站。[22]Zitnik M,Zupan B. Nimfa:一个用于非负矩阵分解的Python库。J MachLearn Res2012;13:849-53.
下载后可阅读完整内容,剩余1页未读,立即下载
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- BSC绩效考核指标汇总 (2).docx
- BSC资料.pdf
- BSC绩效考核指标汇总 (3).pdf
- C5000W常见问题解决方案.docx
- BSC概念 (2).pdf
- ESP8266智能家居.docx
- ESP8266智能家居.pdf
- BSC概念 HR猫猫.docx
- C5000W常见问题解决方案.pdf
- BSC模板:关键绩效指标示例(财务、客户、内部运营、学习成长四个方面).docx
- BSC概念.docx
- BSC模板:关键绩效指标示例(财务、客户、内部运营、学习成长四个方面).pdf
- BSC概念.pdf
- 各种智能算法的总结汇总.docx
- BSC概念 HR猫猫.pdf
- bsc概念hr猫猫.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)