La factorización de matrices no negativas (NNMF) tiene como objetivo factorizar las $n \times m$ matriz $V$ en dos matrices factoriales no negativas $W$ ( $n \times k$ ) y $H$ ( $k \times m$ ) tal que : \begin{align} min_{W,H} || V - WH||_F \end{align} es decir, la norma de Frobenius del matriz residual $D = V - WH$ se minimiza, esto sugiere que $V \approx WH$ . A veces, las restricciones adicionales que inducen propiedades de escasez y/o suavidad en las matrices $W$ y $H$ se añaden, pero no forman parte de la tarea fundamental de la NNMF. Por lo tanto (utilizando el ejemplo de la documentación de la función rnmf
) después de recuperar los resultados de la NNMF:
data("tumor")
tumor.corrupted <- tumor
set.seed(1)
tumor.corrupted[sample(1:4900, round(0.05 * 4900), replace = FALSE)] <- 1
res.rnmf1 <- rnmf(X = tumor.corrupted, gamma = FALSE, my.seed = 1)
Podemos calcular la norma de Frobenius asociada utilizando:
norm( tumor.corrupted - res.rnmf1$W %*% res.rnmf1$H, type = 'f')
Tenga en cuenta que es una buena práctica realizar varias ejecuciones utilizando diferentes semillas aleatorias para generar la solución inicial cuando se utiliza una descomposición NNMF. La tarea de minimización resuelta tiene mínimos locales que pueden dar lugar a diferentes matrices $W$ y $H$ .
Recomiendo encarecidamente leer el artículo de Berry et al. Algoritmos y aplicaciones para la factorización aproximada de matrices no negativas "Está muy bien escrito y ofrece una visión general de la mecánica interna de NNMF, así como de sus aplicaciones.