主要内容

nnmf

非负矩阵分解

描述

例子

(W,H)= nnmf (一个,k)因素的n——- - - - - -矩阵一个为负的因素W(n——- - - - - -k),H(k——- - - - - -)。分解是不确切的;W * H是一个低等级近似一个。的因素WH最小化均方根残留D之间的一个W * H

D =标准(H - W *,“摇来摇去”)/√(n *米)

分解使用迭代算法从随机的初始值WH。因为均方根残留D可能有局部最小值,重复分解会产生不同的WH。有时低排名的算法收敛于一个解决方案k,它可以表明结果不是最优的。

例子

(W,H)= nnmf (一个,k,名称,值)修改使用一个或多个名称-值对参数分解。例如,您可以要求重复分解通过设置“复制”一个整数值大于1。

(W,H,D)= nnmf (___)还返回均方根残留D使用任何输入参数组合在前面的语法。

例子

全部折叠

加载示例数据。

负载fisheriris

计算一个负的二阶近似的测量四个变量在费雪的虹膜数据。

rng (1)%的再现性[W H] = nnmf(量,2);H
H =2×40.6945 0.2856 0.6220 0.2218 0.8020 0.5683 0.1834 0.0149

第一个和第三个变量(萼片和花瓣长度长度,系数为0.6945和0.6220,分别)提供的第一列权重相对强劲W。在第一和第二变量(花萼长度和萼片宽,系数为0.8020和0.5683,分别)提供的第二列权重相对强劲W

创建一个biplot的数据和变量的列空间W

biplot (H ',“分数”W,“VarLabels”,{“sl”,“西南”,“pl”,“pw”});轴([0 0 1.1 1.1])包含(第一列的)ylabel (第2列的)

图包含一个坐标轴对象。坐标轴对象包含列1,ylabel第2列包含8线类型的对象,文本。一个或多个行显示的值只使用标记

从一个随机的数组X排名20,尝试几次迭代,并在几个复制使用乘法算法。

rng默认的%的再现性X =兰德(100年,20)*兰德(20、50);选择= statset (“麦克斯特”5,“显示”,“最后一次”);[W0, H0] = nnmf (X 5“复制”10“选项”选择,“算法”,“乘”);
代表迭代rms渣油δx | 1 | 5 0.560887 0.66418 - 0.0364471 0.0245182 - 2 5 3 5 0.619291 - 0.0455135 0.608894 - 0.0415491 0.609125 0.0358355 - 4 5 5 5 6 5 0.621549 - 0.0299965 7 5 0.640549 - 0.0438758 8 5 0.633526 - 0.0319591 0.673015 - 0.0366856 9 5 0.606835 - 0.0318931 10 5最后均方根剩余= 0.560887

继续更多的迭代使用交替最小二乘法从最好的这些结果。

选择= statset (“麦克斯特”,1000,“显示”,“最后一次”);[W H] = nnmf (X, 5,“W0”W0,“H0”H0,“选项”选择,“算法”,“als”);
代表迭代rms渣油δx | 1 | 24 0.257336 - 0.00271859最终均方根剩余= 0.257336

输入参数

全部折叠

因式分解矩阵,指定为一个真正的矩阵。

例子:兰特(20、30)

数据类型:|

排名因素,指定为一个正整数。由此产生的因素WHk分别列和行。

例子:3

数据类型:|

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:[W H] = nnmf (k,“算法”,“乘”、“复制”,10)选择了乘法十复制更新算法和改进的结果

分解算法,指定为逗号分隔组成的“算法”“als”(交替最小二乘)或“乘”(一个乘法更新算法)。

“als”算法通常更稳定和更少的迭代收敛。每次迭代需要更长的时间。因此,默认的最大是50,这通常在内部测试给了令人满意的结果。

“乘”算法通常更快的迭代和要求更多的人。默认的最大数量为100。该算法往往是更敏感的起始值,因此,似乎从运行多个复制获益更多。

例子:“算法”,“乘”

数据类型:字符|字符串

初始值的W,指定为逗号分隔两人组成的“W0”和一个n——- - - - - -k矩阵,n的行数一个,k是第二个输入参数的nnmf

数据类型:|

初始值的H,指定为逗号分隔两人组成的“H0”和一个k——- - - - - -矩阵,k是第二个输入参数的nnmf,列的数量吗一个

数据类型:|

算法选项,指定为逗号分隔组成的“选项”和一个返回的结构statset函数。nnmf使用以下选项的字段结构。

描述
显示 水平的迭代显示
  • “关闭”(默认),不显示

  • “最后一次”——显示最终的结果

  • “通路”——迭代中间结果的显示

麦克斯特 最大迭代次数 正整数。默认值是50“als”算法和One hundred.“乘”算法。与优化设置,达到麦克斯特迭代作为收敛。
TolFun 终止公差在剩余的大小的变化 非负价值。默认值是1的军医
TolX 终止宽容相对变化的元素WH 非负价值。默认值是1的军医
UseParallel 表明并行计算 逻辑值。默认的表明不是并行计算,真正的表明并行计算。并行计算需要并行计算工具箱™许可证。
UseSubstreams 当并行计算类型的再现性
  • (默认),不计算重复性良好

  • “mlfg6331_64”

  • “mrg32k3a”

有关详细信息,请参见统计计算并行再现性

一个RandStream这样的对象的对象或单元阵列
  • 如果你不指定,nnmf使用默认的河流或溪流。

  • 如果UseParallel真正的UseSubstreams指定的单元阵列RandStream对象的大小平行池。否则,指定一个RandStream对象。

例子:“选项”,statset(‘显示’,‘iter’,‘麦克斯特’,50)

数据类型:结构体

多次重复分解,指定为逗号分隔组成的“复制”和一个正整数。该算法选择新的随机起始值WH在每一个复制,除了在第一个复制如果指定“W0”“H0”。如果你指定一个值大于1通过设置,您可以获得更好的结果算法“乘”。看到改变算法

例子:10

数据类型:|

输出参数

全部折叠

非负左因素一个,作为一个返回n——- - - - - -k矩阵。n的行数一个,k是第二个输入参数的nnmf

WH归一化,这样行吗H单位长度。的列W通过减少长度是有序的。

非负的因素一个,返回k——- - - - - -矩阵。k是第二个输入参数的nnmf,列的数量吗一个

WH归一化,这样行吗H单位长度。的列W通过减少长度是有序的。

均方根残余,作为一个非负标量返回。

D =标准(H - W *,“摇来摇去”)/√(n *米)

引用

[1]浆果,迈克尔W。,Murray Browne, Amy N. Langville, V. Paul Pauca, and Robert J. Plemmons. “Algorithms and Applications for Approximate Nonnegative Matrix Factorization.”计算统计和数据分析52岁的没有。1(2007年9月):155 - 73。https://doi.org/10.1016/j.csda.2006.11.006

扩展功能

版本历史

介绍了R2008a