La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Factorizaciones matriciales no negativas

Presentaciones similares


Presentación del tema: "Factorizaciones matriciales no negativas"— Transcripción de la presentación:

1 Factorizaciones matriciales no negativas
Víctor M. García Mollá Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia

2 Factorizaciones matriciales no negativas
Introducción; problema lineal de mínimos cuadrados Problema de mínimos cuadrados no negativos Problema de mínimos cuadrados no negativos con múltiples lados derechos Factorización matricial no negativa Temas relacionados

3 Antecedentes Factorizaciones matriciales “clásicas”
Para Sistemas de ecuaciones Lineales: Factorización LU, Cholesky, LDLt También hay factorizaciones específicas para problemas lineales de mínimos cuadrados:

4 Antecedentes Problema de mínimos cuadrados: Tenemos más ecuaciones que incógnitas (Sistema sobredeterminado): Se trata de resolver el siguiente problema: min 𝑥 𝐴𝑥−𝑏 2 , 𝐴∈ ℝ 𝑚,𝑛 , 𝑥∈ ℝ 𝑛 ,𝑏∈ ℝ 𝑚 , m>n Equivale a minimizar: 𝐴 1,: 𝑥− 𝑏 𝐴 2,: 𝑥− 𝑏 ⋯ 𝐴 𝑚,: 𝑥− 𝑏 𝑚 2 o, análogamente:

5 Ejemplo de problema de mínimos cuadrados
𝐴= 2 0 − ; x= 𝑥 1 𝑥 2 b= 1 0 −1 ; minimizar Resolver este problema equivale a minimizar: f x = 𝐴𝑥−𝑏 2 2 = 2 𝑥 1 − −𝑥 1 + 𝑥 𝑥 Podemos calcular las derivadas respecto a x1 y a x2 e igualar a 0; x1 = 1/3, x2=-1/3

6 Antecedentes Problema de mínimos cuadrados: Tenemos más ecuaciones que incógnitas (Sistema sobredeterminado) min 𝑥 𝐴𝑥−𝑏 2 ,𝐴∈ ℝ 𝑚,𝑛 , 𝑥∈ ℝ 𝑛 ,𝑏∈ ℝ 𝑚 , m>n La solución óptima del problema de mínimos cuadrados es única Resolución directa en Matlab: x=A\b Se puede resolver con la descomposición QR o con la svd: [Q,R]=qr(A); x=R\(Q'*b); Con la svd: [U,S,V]=svd(A,0); x=V*(inv(S)*(U'*b)); (Ojo, S es diagonal, su inversa se obtiene de forma trivial). Los métodos para este problema son métodos “directos” A b x =

7 No negatividad: En la vida real, a veces las soluciones de los problemas solo tienen sentido si son números no negativos: -Optimización de producción de diferentes modelos. Descomposición de un sonido en frecuencias.

8 Problema de mínimos cuadrados no negativos (NNLS)
min 𝑥 𝐴𝑥−𝑏 2 , x>= 0 El problema NNLS es un problema de optimización con restricciones. Es un problema “convexo”: Tiene solución única. Se resuelve adaptando métodos (iterativos) de optimización no lineal con restricciones: Se basan en las condiciones de Karush-Kuhn-Tucker (Condiciones que debe cumplir una solución de un problema de optimización con restricciones para que dicha solución sea óptima)

9 Problema de mínimos cuadrados no negativos (NNLS)
condiciones de Karush Kuhn-Tucker: Sea 𝑥 ∗ una solución óptima del siguiente problema: min 𝑥 𝑓 𝑥 𝑠𝑢𝑗𝑒𝑡𝑜 𝑎 ℎ 𝑥 =0 𝑔(𝑥)≤0 Entonces existen 𝜆 y 𝜇 tales que 𝛻𝑓 𝑥 ∗ + 𝜆 𝑡 𝛻ℎ( 𝑥 ∗ )+ 𝜇 𝑡 𝛻𝑔( 𝑥 ∗ )=0 𝜇 𝑡 𝑔( 𝑥 ∗ )=0 ℎ( 𝑥 ∗ )=0 𝜇≥ 0

10 Problema de mínimos cuadrados no negativos (NNLS)
min 𝑥 𝐴𝑥−𝑏 2 , x>= 0 . En este caso no hay restricciones de igualdad (no hay h), y g(x)=-x; El gradiente es 𝛻𝑓 𝑥 = 𝐴 𝑡 𝐴𝑥−𝑏 las condiciones de Karush Kuhn-Tucker dan lugar a un problema Lineal complementario, con condiciones: 𝑦= 𝐴 𝑡 𝐴𝑥−𝑏 ; y≥0; 𝑥≥0; 𝑥 𝑖 𝑦 𝑖 =0

11 Problema de mínimos cuadrados no negativos (NNLS)
Métodos para resolver min 𝑥 𝐴𝑥−𝑏 2 , x>= 0 Método 1: Fuerza Bruta: Paso 1: x=A\b; %solución sin restricciones Paso 2: x=max(x,0) ; % todas las componentes negativas, las ponemos a 0. No es muy preciso…(Pero se puede utilizar si la precisión no es importante)

12 Problema de mínimos cuadrados no negativos
Min 𝐴𝑥−𝑏 2 , x>= 0 Métodos “exactos”: Métodos de “Conjunto activo” En Matlab hay una función para este problema, lsqnonneg (least squares non negative). Comparemos : tic, x=A\b;toc tic, x=lsqnonneg(A,b); toc Claramente, el algoritmo del problema restringido es mas lento y complicado.

13 Problema de mínimos cuadrados no negativos
Lsqnonneg: Método de “conjunto activo” (Active Set): Se parte de la solución “con todo ceros”, y se intenta mejorar, usando la información que proporciona el gradiente. Si aparecen componentes negativas se “fuerzan” a cero iterativamente. Las variables con valor cero están “activas” en la desigualdad (Estarán en el conjunto activo). Propuesto por Lawson & Hanson (1987) Método bastante eficiente, pero inherentemente secuencial, y relativamente complejo (difícil para programar en GPUs, por ejemplo)

14 Problema de mínimos cuadrados no negativos:LSQNONNEG
Sea x=0 ( 𝑥 𝑖 =0, 𝑖=1..𝑚), 𝐴𝐶𝑇= 1:𝑛 , 𝐼𝑁𝐴𝐶𝑇=∅ Calcular vector 𝑔𝑟𝑎𝑑= 𝐴 𝑡 𝑏−𝐴𝑥 . Si 𝐴𝐶𝑇=∅ o 𝑔𝑟𝑎 𝑑 𝑗 ≤0 ∀𝑗∈𝐴𝐶𝑇, acabar Encontrar 𝑡 ∈𝐴𝐶𝑇 :𝑔𝑟𝑎 𝑑 𝑡 = max 𝑔𝑟𝑎 𝑑 𝑗 :𝑗∈𝐴𝐶𝑇 Mover índice t de ACT a INACT Sea 𝐴 𝐼𝑁𝐴𝐶𝑇 la matriz formada por las columnas con índice en INACT. Resolver el problema de mínimos cuadrados 𝐴 𝐼𝑁𝐴𝐶𝑇 ·𝑧=𝑏. 𝑧 𝑗 = 0 ∀𝑗 ∈𝐴𝐶𝑇

15 Problema de mínimos cuadrados no negativos:LSQNONNEG
Si 𝑧 𝑗 >0 ∀𝑗∈𝐼𝑁𝐴𝐶𝑇, x:=z e ir a paso 2. Encuentra un índice 𝑞∈𝐼𝑁𝐴𝐶𝑇 : 𝑥 𝑞 𝑥 𝑞 − 𝑧 𝑞 =𝑚𝑖𝑛 𝑥 𝑗 𝑥 𝑗 − 𝑧 𝑗 : 𝑧 𝑗 ≤0,𝑗∈𝐼𝑁𝐴𝐶𝑇 𝑥 𝑗 𝑥 𝑗 − 𝑧 𝑗 : 𝑧 𝑗 ≤0,𝑗∈𝐼𝑁𝐴𝐶𝑇 𝛼:= 𝑥 𝑞 𝑥 𝑞 − 𝑧 𝑞 ; 𝑥≔𝑥+𝛼(𝑧−𝑥) Mueve de INACT a ACT todos los índices 𝑗 para los que 𝑥 𝑗 =0 Vuelve al paso 6

16 Problema de mínimos cuadrados no negativos
Método multiplicativo: dada la definición del gradiente para este problema y=𝛻𝑓 𝑥 = 𝐴 𝑡 𝐴𝑥−𝑏 el método multiplicativo está basado en la condición de Karush-Kuhn-Tucker: 𝛻𝑓 𝑥 𝑡 ·𝑥=0, o escrito de otra forma: 𝑦 𝑖 · 𝑥 𝑖 =0 ⇒𝑥. ∗ 𝐴 𝑡 𝐴𝑥 =𝑥. ∗ 𝐴 𝑡 𝑏 La solución óptima debería verificar esta ecuación, si la solución x no es óptima, podemos utilizar esta ecuación para “mejorar la solución”, obteniendo un método iterativo: Repetir hasta convergencia: x(n+1)=x(n) ·( 𝐴 𝑡 𝑏) ./( 𝐴 𝑡 𝐴𝑥(n)) Sólo funciona correctamente si A es también no-negativa

17 Problema de mínimos cuadrados no negativos
Método multiplicativo: código Matlab function [ x ] = lsqnonneg_mult( A,b ) [m,n]=size(A); x=rand(n,1); y=A'*b; mataux=A'*A; While (not conv) prod=max(mataux*x, 𝜀); x=x.*(y./prod); end While end Problema: Si hay ceros en los vectores, aparecen divisiones por cero; es necesario “rectificar” todos los valores próximos a cero, para evitar fallos en el programa. Ventaja: cada iteración es muy rápida

18 Problema de mínimos cuadrados no negativos, con múltiples lados derechos
Cada columna de X se puede calcular en paralelo, independientemente del método=> cualquier método que vaya columna a columna se puede paralelizar El multiplicativo se puede reordenar para utilizar productos de matrices (operaciones Blas 3); aumenta la eficiencia. Si además usamos una versión “threaded” de Blas/Lapack, se paraleliza el método directamente. A B X =

19 Problema de mínimos cuadrados no negativos, con múltiples lados derechos
Algoritmo basado en lsqnonneg: For j=1:k X(:,j)=lsqnonneg(A,B(:,j)) End Algoritmo multiplicativo: …. X=rand(n,k); Y=A'*B; Mat_aux=A'*A; While (not conv) prod=max(Mat_aux*X, 𝜀); X=X.*(Y./prod); end While

20 Aplicaciones de problemas de mínimos cuadrados no negativos con múltiples lados derechos:
1) Separación harmónico-percusiva: Dada una canción, transformada a conjunto de columnas B, separar los sonidos harmónicos y percusivos en dos pistas diferentes Disponemos de dos matrices “diccionarios”, uno para las notas harmónicas (guitarra, piano, bajo,…) A1 y otro para las percusivas (batería) A2. Concatenamos los dos diccionarios. A1 A2

21 Aplicaciones de problemas de mínimos cuadrados no negativos con múltiples lados derechos:
Planteamos el problema : X1 B A1 A2 = X2

22 Aplicaciones de problemas de mínimos cuadrados no negativos con múltiples lados derechos:
Al resolverlo como un problema de mínimos cuadrados con múltiples lados derechos, en A1*X1 aparecerá la parte harmónica de la canción, y en A2*X2 aparece la parte percusiva.

23 Factorización Matricial no negativa (NMF)
Similar a problema de mínimos cuadrados no negativos con múltiples lados derechos, pero no tenemos tampoco la matriz A (diccionario). -Dada una matriz de datos 𝐵∈ ℝ 𝑚,𝑛 , obtener 𝐴∈ ℝ 𝑚,𝑘 , 𝑋∈ ℝ 𝑘,𝑛 , que minimicen 𝐴𝑋−𝐵 𝑓𝑟𝑜 Un primer problema es determinar la “dimensión interna” k (número de columnas del diccionario). Típicamente k<<n,m (se persigue comprimir los datos). A B X =

24 Factorización Matricial no negativa (NMF)
La NMF toma gran interés a partir del artículo: - Lee, Daniel D., AU - Seung, H. Sebastian, “ Learning the parts of objects by non-negative matrix factorization”, Nature, 1999

25 Factorización Matricial no negativa
Los métodos son iterativos; Partiremos de unas matrices iniciales “adivinadas” (probablemente aleatorias), y se irá convergiendo hacia un par de matrices solución (aproximada) A diferencia de los problemas anteriores, el problema de optimización de la NMF no es convexo y puede haber “mínimos locales”: Podemos obtener diferentes soluciones si inicializamos el algoritmo con matrices diferentes (Sucede muy a menudo) A veces se repite el cálculo en paralelo con diferentes inicializaciones para intentar obtener un óptimo global

26 Factorización Matricial no negativa; Experimentos con Matlab
>> B=rand(200,600); >>[A,X]=nnmf(B,50); >>Norm(A*X-B) Podemos comprobar que repitiendo las ejecuciones , el resultado es diferente. >>A0=rand(200,50);X0=rand(50,600); >> [A,X]=nnmf(B,50,'w0',A0,'h0',X0); >>norm(A*X-B)

27 Factorización Matricial no negativa: Mínimos cuadrados “Alternados”
La idea mas popular es resolver el problema NMF mediante una secuencia de problemas de mínimos cuadrados no negativos con múltiples lados derechos: 1)Escoger “orden interno” k, escoger A y X no negativas aleatorias 2) Repetir hasta la convergencia: 2.1) Fijar A; Obtener X resolviendo el problema min 𝑋 𝐵−𝐴𝑋 2.2) Fijar X; Obtener A resolviendo el problema min 𝐴 𝐵−𝐴𝑋

28 Factorización Matricial no negativa: Mínimos cuadrados “Alternados”
Los algoritmos mas populares siguen esta idea, diferenciándose en la forma en que se resuelven los problemas de mínimos cuadrados no negativos “internos”. Como hay una iteración “externa”, para resolver de forma eficiente es interesante no resolver los problemas internos con “demasiada precisión”.

29 Factorización Matricial no negativa: Método Multiplicativo para subproblemas internos
Resolvemos mediante multiplicativo. Es el método más popular entre investigadores de reconocimiento automático, por ser robusto y sencillo Condiciones de Karush-Kuhn-Tucker para problema NMF: 𝐴.∗ 𝐴𝑋 𝑋 𝑡 −𝐵 𝑋 𝑡 =0; 𝑋.∗ 𝐴 𝑡 𝐴𝑋− 𝐴 𝑡 𝐵 =0 Con lo que obtenemos las expresiones de actualización: 𝐴←𝐴.∗ 𝐵 𝑋 𝑡 max⁡(𝐴𝑋 𝑋 𝑡 ,𝜀) ; X←𝑋.∗ 𝐴 𝑡 𝐵 max⁡(𝐴 𝑡 𝐴𝑋,𝜀)

30 Factorización Matricial no negativa: Método Multiplicativo para subproblemas internos
Inicializar A,X, positivas, aleatorias Repetir hasta convergencia For j=1:k For i=1:m 𝐴 𝑖,𝑗 =𝐴 𝑖,𝑗 · 𝐵· 𝑋 𝑡 𝑖,𝑗 max⁡( 𝐴𝑋 𝑋 𝑡 𝑖,𝑗 ,𝜀) end for For j=1:n For i=1:k 𝑋 𝑖,𝑗 =𝑋 𝑖,𝑗 · 𝐴 𝑡 𝐵 𝑖,𝑗 max⁡( 𝐴 𝑡 𝐴𝑋 𝑖,𝑗 ,𝜀) Fin Repetir Habitualmente, después de cada iteración las columnas de A se dividen por su norma, para que tengan norma 1.

31 Factorización Matricial no negativa: Método Multiplicativo para subproblemas internos, versión con notación matricial Inicializar A,X, positivas, aleatorias Repetir hasta convergencia A=A.∗(𝐵· 𝑋 𝑡 )./ 𝐴𝑋 𝑋 𝑡 +𝜀 𝑋=𝑋.∗ 𝐴 𝑡 𝐵 ./( 𝐴 𝑡 𝐴𝑋+𝜀) Fin Repetir Este tipo de versiones (evitando los bucles, usando notación matricial) son mucho más rápidas en Matlab/Octave/Python

32 Factorización Matricial no negativa: Método ALS (alternated least squares)
Resolvemos mediante mínimos cuadrados , sin restricciones; pero pueden salir números negativos; las componentes negativas de la solución se ponen a cero (o a un número positivo muy próximo a cero) (Fuerza bruta)

33 Factorización Matricial no negativa: : Método ALS (alternated least squares)
Inicializar A,X, positivas, aleatorias Repetir hasta convergencia A=max(X\B, 𝜀); X=max(A\B, 𝜀) Fin Repetir Habitualmente, después de cada iteración las columnas de A se dividen por su norma, para que tengan norma 1.

34 Factorización Matricial no negativa: Método ANLS (alternated nonnegative least squares)
Resolvemos los subproblemas internos mediante lsqnonneg, o un algoritmo similar. Este es posiblemente el método que alcanza mayor precisión, pero es bastante lento (inaceptable para tamaños grandes).

35 Factorización Matricial no negativa: Método ANLS (alternated nonnegative least squares)
Inicializar A,X, positivas, aleatorias Repetir hasta convergencia For j=1:k A(j,:)’=lsqnonneg(X’,B(:,j)) End X(:,j)=lsqnonneg(A,B’(:,j)) Fin Repetir

36 Factorización Matricial no negativa: Método HALS (hierarchical alternated least squares)
𝐴·𝑋= 𝑖=1 𝑘 𝐴 𝑖 · 𝑋 𝑖 𝑡 = A 1 · 𝑋 1 𝑡 + A 2 · 𝑋 2 𝑡 +…+ A k · 𝑋 𝑘 𝑡 Dado el producto de matrices A·X, donde 𝐴∈ ℝ 𝑚,𝑘 , 𝑋∈ ℝ 𝑘,𝑛 , se puede escribir como una suma de matrices de rango 1 (obtenidas como vector columna por vector fila): 𝐴·𝑋 == += +….

37 Factorización Matricial no negativa: Método HALS (hierarchical alternated least squares)
Como en los casos anteriores, se parte de matrices aleatorias no negativas, A y X El método HALS se aplica sobre la matriz “residual”= B-A·X, de forma que la norma de B-A·X tienda (idealmente) a 0. Vamos a ir modificando las matrices A y X; Tendremos un bucle que va sobre la dimensión “interna” k, y para cada paso j=1…k vamos a intentar mejorar, Tanto como sea posible, la columna j-ésima de A y la fila j-ésima de X. Veamos el procedimiento para la columna 1 de A y la fila 1 de X: Sea B−𝐴·𝑋; Le restamos la matriz de rango 1 A 1 · 𝑋 1 𝑡 𝑅= B−𝐴·𝑋− A 1 · 𝑋 1 𝑡 Deseamos calcular nueva columna A 1 y fila 𝑋 1 𝑡 de forma que aproxime lo mas posible a 𝑅 Una vez calculadas, se añaden a 𝑅: 𝑅=𝑅+ A 1 · 𝑋 1 𝑡 , y se repite el proceso con columna 2 de A, fila 2 de X

38 Factorización Matricial no negativa: Método HALS (Hierarchical Alternated Least Squares)
Necesitamos resolver el problema de calcular los vectores u columna y v fila de forma que se minimice: 𝑅−𝑢·𝑣 , 𝑢≥0, 𝑣≥0. Planteando las condiciones de Karush-Kuhn-Tucker para este problema, llegamos a dos expresiones que deben cumplir los valores óptimos de u y v: 𝑢·𝑣· 𝑣 𝑡 =𝑅· 𝑣 𝑡 ; 𝑢 𝑡 ·𝑢· 𝑣 𝑡 =𝑅·𝑢 Que nos proporcionan dos métodos iterativos para u y v: 𝑢 (𝑛+1) = 𝑅· 𝑣 (𝑛) 𝑡 𝑣 (𝑛) · 𝑣 (𝑛) 𝑡 𝑣 (𝑛+1) = 𝑅· 𝑢 (𝑛) 𝑢 (𝑛) 𝑡 · 𝑢 (𝑛)

39 Factorización Matricial no negativa: Método HALS (Hierarchical Alternated Least Squares)
Algoritmo HALS: entrada 𝐵∈ ℝ 𝑚,𝑛 (no negativa), 𝐴∈ ℝ 𝑚,𝑘 (aleatoria positiva), 𝑋∈ ℝ 𝑘,𝑛 (aleatoria positiva) Salida: matrices 𝐴∈ ℝ 𝑚,𝑘 , 𝑋∈ ℝ 𝑘,𝑛 , positivas, que minimicen 𝐴𝑋−𝐵 𝑓𝑟𝑜 (Implementación del libro Cichocki et al.) For j=1:k, 𝐴(:,𝑗)=𝐴(:,𝑗)/ 𝐴 :,𝑗 2 End For 𝑅=𝐵−𝐴∗𝑋 Repetir hasta convergencia For j=1:k 𝑅=𝑅+A(:,j)·X(j,:) 𝑋(𝑗,:)=max( 𝑅 𝑡 ·𝐴(:,𝑗) 𝑡 ,0) 𝐴 :,𝑗 =max⁡(𝑅·𝑋 𝑗,: 𝑡 ,0) 𝑅=𝑅−A(:,j)·X(j,:) Fin Repetir

40 Factorización Matricial no negativa: Método HALS (Hierarchical Alternated Least Squares)
En esta versión, se aplica una iteración por cada par columna/fila y se pasa al siguiente par columna/fila Existe una versión bastante más eficiente, llamada Fast HALS, en las que bastantes de las operaciones matriz por vector se condensan en productos matriz por matriz (Cichocki et. Al.)

41 Cálculo de NMF en tiempo real: Updating
Supongamos que deseamos realizar separación de fuentes sonoras en tiempo real Idea clave: Sea X una matriz de datos, y X=W·H su factorización NMF ya calculada. Supongamos que queremos añadir una columna b a X (un nuevo dato o datos) , y calcular la factorización NMF de la matriz ampliada [X b] = 𝑊 · H . (Esto supone añadir una columna a H) Al ir añadiendo columnas a H y a X, el problema va creciendo. Si los nuevos datos llegan muy deprisa, el coste va creciendo rápidamente. b W 𝑊 H H = X = X

42 Cálculo de NMF en tiempo real: Updating
Si utilizamos la factorización NMF ya calculada para iniciar el cálculo, este converge mucho más deprisa: >>B=rand(3000,600); >>A0=rand(3000,200);X0=rand(200,600); >>tic,[A,X]=nnmf(B,200,'w0',A0,'h0',X0);toc Modificamos el problema, añadimos una columna a B y a X >> B=[B, rand(3000,1)]; X=[X,rand(200,1)]; >> tic,[A,X]=nnmf(B,200,'w0',A,'h0',X);toc

43 (Separación armónico percusiva)
Algoritmos de actualización rápida de la NMF, para proceso en tiempo real de aplicaciones de sonido: (Separación armónico percusiva) Se ha observado que en este problema, si se usa la descomposición NMF de la matriz X para inicializar el algoritmo para el cálculo de la NMF de la matriz ampliada, el algoritmo converge muy rápido, en dos o tres iteraciones. De forma similar se puede recalcular la NMF de forma rápida si quitamos una columna de la matriz de datos. Se elimina Se añade Se guarda W Se añade H = Se repite el proceso, añadiendo nuevos datos, descartando viejos X = Esto puede acelerar diversas aplicaciones, haciendo viable el uso de la NMF en aplicaciones en tiempo real.

44 Problemas relacionados.
-restricciones de “dispersidad” (sparsity) -cambio de ´”distancia”: beta-divergencia, o alfa-divergencia, en vez de norma de Frobenius.

45 Para concluir…. -La NMF, y otras factorizaciones matriciales no negativas, son herramientas muy interesantes para análisis de datos. -Hay aplicaciones en campos muy diversos. -Todavía es un campo bastante abierto, con mucha investigación activa. -Los algoritmos básicos son sencillos, bastante paralelizables, y hay versiones disponibles en Matlab.

46 Referencias Golub & Van Loan, Matrix Computations.
C. L. Lawson and R. J. Hanson, Solving Least Squares Problems, Prentice-Hall, 1987 Learning the parts of objects by non-negative matrix factorization, Daniel D. Lee & H. Sebastian Seung, Nature, 401, 788–791 (21 October 1999) doi: /44565 Cichocki, A., Zdunek, R., Phan, A.H., Amari,S., Nonnegative Matrix and Tensor Factorization, John Wiley & Sons, Ltd, (2009). San Juan, P., Vidal, A. M., Garcia-Molla, V.M., Updating/downdating the NonNegative Matrix Factorization, Journal Of Computational And Applied Mathematics, Vol. (318), pp (2017).


Descargar ppt "Factorizaciones matriciales no negativas"

Presentaciones similares


Anuncios Google