Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

nnmf

Factorización de matriz no negativa

Sintaxis

[W,H] = nnmf(A,k)
[W,H] = nnmf(A,k,param1,val1,param2,val2,...)
[W,H,D] = nnmf(...)

Descripción

[W,H] = nnmf(A,k) factores la no-negativa-por-matriz en factores no negativos (-por-) y (-por-).nmAWnkHkm La factorización no es exacta; es una aproximación de menor rango a.W*HA Los factores y son elegidos para minimizar el residuo medio cuadrado de la raíz entre y:WHDAW*H

D = norm(A-W*H,'fro')/sqrt(N*M)

La factorización utiliza un método iterativo que comienza con valores iniciales aleatorios para y.WH Debido a que la raíz-media cuadrada residual puede tener minima local, factorizaciones repetidas pueden producir diferente y.DWH A veces el algoritmo converge a una solución de rango inferior que, lo que puede indicar que el resultado no es óptimo.k

y se normalizan para que las filas tengan una longitud de unidad.WHH Las columnas de se ordenan por la longitud decreciente.W

[W,H] = nnmf(A,k,param1,val1,param2,val2,...) especifica los pares de nombre/valor de parámetro opcionales de la tabla siguiente.

ParámetroValor
'algorithm'

O bien (el valor predeterminado) para utilizar un algoritmo de mínimos cuadrados alternos, o para utilizar un algoritmo de actualización multiplicativa.'als''mult'

En general, el algoritmo converge de forma más rápida y coherente.'als' El algoritmo es más sensible a los valores iniciales, lo que lo convierte en una buena opción cuando se utiliza para buscar y de varios valores iniciales aleatorios.'mult''replicates'WH

'w0'

Un-por-matriz para ser utilizado como el valor inicial para.nkW

'h0'

A-por-matriz para ser utilizado como el valor inicial para.kmH

'options'

Estructura de opciones creada por la función. utiliza los siguientes campos de la estructura de opciones:statsetnnmf

  • — Nivel de visualización.Display Opciones:

    • (predeterminado): no se muestra'off'

    • — Mostrar el resultado final'final'

    • — Visualización iterativa de los resultados intermedios'iter'

  • — Número máximo de iteraciones.MaxIter El valor predeterminado es.100 A diferencia de la configuración de optimización, alcanzar iteraciones se trata como convergencia.MaxIter

  • — Tolerancia de terminación en el cambio de tamaño del residuo.TolFun El valor predeterminado es.1e-4

  • — Tolerancia de terminación en el cambio relativo de los elementos de y.TolXWH El valor predeterminado es.1e-4

  • : Se configura para que se calcule en paralelo.UseParalleltrue El valor predeterminado es.false

  • : Se configura para que se calcule en paralelo de forma reproducible.UseSubstreamstrue El valor predeterminado es.false Para calcular reproduciblemente, establezca un tipo que permita subsecuencias: o.Streams'mlfg6331_64''mrg32k3a'

  • — Un objeto o matriz de celdas de estos objetos.StreamsRandStream Si no se especifica, utiliza la secuencia o secuencias predeterminadas.Streamsnnmf Si decide especificar, utilice un único objeto excepto en el casoStreams

    • EsUseParalleltrue

    • EsUseSubstreamsfalse

    En ese caso, utilice una matriz de celdas del mismo tamaño que el grupo paralelo.

Para calcular en paralelo, es necesario.Parallel Computing Toolbox™

'replicates'

El número de veces que se repite la factorización, utilizando nuevos valores iniciales aleatorios para y, excepto en la primera replicación si y se dan.WH'w0''h0' Esto es más beneficioso con el algoritmo.'mult' El valor predeterminado es.1

[W,H,D] = nnmf(...) también devuelve, el residuo cuadrado medio de la raíz.D

Ejemplos

contraer todo

Cargue los datos de ejemplo.

load fisheriris

Calcule un rango no negativo-dos aproximacion de las mediciones de las cuatro variables en los datos del iris de Fisher.

rng(1) % For reproducibility [W,H] = nnmf(meas,2); H
H = 2×4

    0.6945    0.2856    0.6220    0.2218
    0.8020    0.5683    0.1834    0.0149

La primera y la tercera variable en (longitud del sétalo y longitud del pétalos, con los coeficientes 0,6945 y 0,6220, respectivamente) proporcionan pesos relativamente fuertes a la primera columna de.measW La primera y la segunda variables en (longitud del sépalo y ancho del sépalo, con los coeficientes 0,8020 y 0,5683) proporcionan pesos relativamente fuertes a la segunda columna de.measW

Cree una de los datos y las variables en el espacio de columnas de.biplotmeasW

biplot(H','scores',W,'varlabels',{'sl','sw','pl','pw'}); axis([0 1.1 0 1.1]) xlabel('Column 1') ylabel('Column 2')

A partir de una matriz aleatoria con el rango 20, intente unas cuantas iteraciones en varias réplicas usando el algoritmo multiplicativo:X

X = rand(100,20)*rand(20,50); opt = statset('MaxIter',5,'Display','final'); [W0,H0] = nnmf(X,5,'replicates',10,...                    'options',opt,...                    'algorithm','mult');
    rep    iteration    rms resid   |delta x|       1        5     0.560887    0.0245182       2        5      0.66418    0.0364471       3        5     0.609125    0.0358355       4        5     0.608894    0.0415491       5        5     0.619291    0.0455135       6        5     0.621549    0.0299965       7        5     0.640549    0.0438758       8        5     0.673015    0.0366856       9        5     0.606835    0.0318931      10        5     0.633526    0.0319591 Final root mean square residual = 0.560887 

Continúe con más iteraciones del mejor de estos resultados usando los mínimos cuadrados alternos:

opt = statset('Maxiter',1000,'Display','final'); [W,H] = nnmf(X,5,'w0',W0,'h0',H0,...                  'options',opt,...                  'algorithm','als');
    rep    iteration    rms resid   |delta x|       1       24     0.257336   0.00271859 Final root mean square residual = 0.257336 

Referencias

[1] Berry, M. W., et al. “Algorithms and Applications for Approximate Nonnegative Matrix Factorization.” Computational Statistics and Data Analysis. Vol. 52, No. 1, 2007, pp. 155–173.

Capacidades ampliadas

Consulte también

| |

Introducido en R2008a