Svd

NMF: una técnica mergente de análisis no supervisado

[N]NMF (se encuentra con una o dos enes) es una técnica de análisis no supervisado emergente. Se cuenta entre mis favoritas.

[N]NMF significa non negative matrix factorization y, como SVD, descompone una matriz M como UDV'. Solo que, en este caso, las entradas de M son todas positivas. Y la descomposición es UV', donde las entradas de ambas matrices son también positivas.

¿Qué tipo de matrices tienen entradas estrictamente positivas?

  • Las resultantes de cuestionarios donde sujetos (filas) valoran (de 0 a 10) objetos, propuestas, etc. (columnas).
  • Las que respresentan clientes (filas) que compran (un determinado número >= 0) de productos (columnas).

Y acabo con un instrumento (el paquete NMF de R) y el análisis de una encuesta realizado con dicha técnica para que la veáis en acción.

Compresión con SVD

svd_greco

lo he creado con

library(png)

tmp.file <- tempfile()
download.file("http://datanalytics.com/uploads/greco.png", tmp.file)
m <- readPNG(tmp.file)

svd.m <- svd(m)

filtra.svd <- function(svd, k){
  tmp <- svd
  tmp$d[(k+1):length(tmp$d)] <- 0
  res <- tmp$u %*% diag(tmp$d) %*% t(tmp$v)

  res[res > 1] <- 1
  res[res < 0] <- 0

  plot(1:2, type='n', xlab = "",
        ylab = "", xaxt = "n", yaxt = "n",
        main = paste(k, "primeras componentes", sep = " "))
  rasterImage(res, 1, 1, 2, 2)
}

layout(matrix(1:9, 3, 3, byrow = T))

sapply(c(1,2,3,5,10,15,20,30,50),
        function(k) filtra.svd(svd.m, k))

Una feliz conjunción estadístico-algebraica (y II)

Abandonamos el otro día nuestra discusión sobre la feliz conjunción estadístico-algebraica que subyace a esa técnica conocida como análisis de correspondencias en el punto en que habíamos descompuesto la matriz $latex B$ de la forma $latex B = PDQ^\prime$, donde $latex P$ y $latex Q$ son matrices cuyas columnas son vectores ortonormales $latex p_i$ y $latex q_j$ y $latex D$ es una matriz diagonal (aunque no necesariamente cuadrada) cuyos elementos de la diagonal (en orden decreciente) son $latex \lambda_k$.

Una feliz conjunción estadístico-algebraica

Tomemos una tabla de contingencia, p.e.,

library(MASS)
a <- as.matrix(caith)

#        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

que se refiere a los habitantes de una población de Escocia clasificados según el color de los ojos y el pelo. ¿Habrá una relación entre ambas variables?