Factorizaciones positivas de matrices igualmente positivas

Cuando tenía 18 años, pensaba, llegué a aprender todo lo que había que saber sobre factorización de matrices. Incluida la inutilidad de Jordan. El otro día, con un ciento y pico por ciento más de años, he descubierto una clase entera de factorizaciones que aquellos planes de estudios viejunos no contemplaban y que, ¡carajo!, aparte de útiles engarzan con otras ideas la mar de interesantes.

Se trata de factorizaciones positivas de matrices igualmente positivas.

Y no, las matrices positivas, es decir, sin elementos negativos, no son una rareza: piénsese en las tabulaciones (o tablas de contingencia).

Al grano. Dada A =(a_{ij}) donde cada a_{ij} > 0 es posible encontrar dos matrices W y H también positivas tales que A \approx WH. La no demostración por ejemplo y construcción mediante caja negra es la siguiente:

library(MASS)
library(NMF)
 
a <- as.matrix(caith)
res <- nmf(a, rank = 2)
 
a
 
# fair red medium dark black
# blue    326  38    241  110     3
# light   688 116    584  188     4
# medium  343  84    909  412    26
# dark     98  48    403  681    85
 
res@fit@W %*% res@fit@H
 
# fair       red   medium      dark     black
# blue   276.37021  45.58136 296.3578  96.37782  3.312852
# light  635.93433 102.81758 656.0355 182.10365  3.108965
# medium 456.68567  92.14988 700.5967 482.32648 42.241237
# dark    86.00979  45.45118 484.0100 630.19204 69.336946

Lo del algoritmo es lo de menos. Hay muchos y diversos que pueden consultarse en la bibliografía que acompaña al paquete anterior y en muchas otras partes.

También es medio irrelevante lo de la pérdida de la ortogonalidad (aunque véase esto y esto para ver cómo otro tipo de factorizaciones más convencionales se relaciona con lo de la milonga de la \chi^2) por lo que se gana. Que es, dividiendo filas y columnas adecuadamente, esto:

A \approx WH= DW^\prime H^\prime

donde D es una matriz diagonal positiva y W^\prime y H^\prime son matrices positivas cuyas filas suman 1: ¡son probabilidades!

En concreto, las filas de H^\prime son funciones de probabilidad sobre las filas de A y las filas de W^\prime determinan el peso de las anteriores en la mixtura que genera cada una de ellas. Es decir, se cuenta con un modelo generativo de la matriz (o tabla de contingencia). Los valores de la diagonal de D, por su parte, indican de alguna manera cuántas observaciones hay en cada fila, es decir, cuántas veces tengo que muestrear cada fila.

Y esto, a su vez, es puro LDA y entronca con otra familia entera de algoritmos, muchos de ellos bayesianos en espíritu, para el análisis de cosas que son (pero que la gente no llama así cuando tienen las dimensiones que uno encuentra en la práctica) tablas de contingencia.

Temo no haber sido claro. A ver si otro día me encuentro más animado para escribir y explico con un ejemplo elaborado cómo se puede obtener muestras de A usando el modelo anterior.

Termino comentando para qué podría servir lo anterior y que no se piense hablo por hablar. Supóngase que las filas son clientes y que las columnas son productos que estos han comprado en cierto periodo de tiempo. La descomposición anterior revelaría factores no explícitos (las distribuciones de probabilidad sobre las filas) que hacen que algunos clientes compren determinados productos (juntos) y no otros; luego cada cliente tendría asignada una cierta propensión (dada por las filas de la matriz W^\prime) a cada uno de los factores.

Algunas cuestiones adicionales que me planteo respecto al asunto de hoy se refieren a, por ejemplo:

  • La unicidad (material) de la representación
  • Su estabilidad
  • La posibilidad de incrementar el número de ceros en las matrices (de manera similar a como se hace con las rotaciones de los componentes principales)
  • Si eso que llaman trabajo pero que, en el fondo, es solo ruido, me va a dejar tiempo para seguir indagando en la materia
  • Cómo demonios voy a factorizar algunas matrizotas que tengo en el disco duro

Un comentario sobre “Factorizaciones positivas de matrices igualmente positivas

  1. José Luis 19 junio, 2014 19:27

    Muy interesante, pero me he perdido un poco, tengo que releerlo.. No sé si tiene algo que ver pero este tipo de factorización podría ser una alternativa a las reglas de asociación, de forma que se pudieran agrupar filas (clientes), relacionadas (que compran) con algunas columnas (productos) .. Espero que nos cuentes algo más.

Los comentarios están desabilitados.