Reponderación de componentes: un ejemplo

Esta entrada es la continuación de La escala natural de la varianza. En ella vimos cómo los componentes de un PCA pueden tener un peso que pudiera no guardar relación con su importancia práctica.

Si uno quiere trabajar con las principales componentes de un PCA sobre unos datos, puede que la escala sea irrelevante (p.e., si quiere utilizar modelos lineales). Pero hay casos egregios en los que no sucede así.

Voy a presentar uno. Se trata de un clústering simple:

n <- 100
m <- matrix(rnorm(2 * n), n, 2)
m[, 1] <- m[, 1] * 3
rot <- sqrt(2) * 0.5 * matrix(c(1, 1, -1, 1), 2, 2)
m <- m %*% rot

tmp <- kmeans(m, 2)

plot(m, col = tmp$cluster, asp = 1)

clust_00

Pero puede darse el caso de que haya motivos para pensar que la dirección NO-SE tiene demasiado peso en el resultado final. Es posible entonces reducir la distancia en esa dirección:

m.pca <- princomp(m, 2)$scores

head(m.pca)
##        Comp.1   Comp.2
## [1,]  0.05277  0.01147
## [2,] -1.02216 -0.73577
## [3,]  1.88354  0.46371
## [4,] -0.48757  0.30708
## [5,] -0.89224 -0.41297
## [6,] -1.89838  0.28717

plot(m.pca, asp = 1, col = tmp$cluster)

clust_01

Ahí estan las dos componentes. La más importante es la primera, que tiene el rango (-3, 3) mientras que la otra va de -1 a 1 (aproximadamente). Pero es posible comprimir la primera dirección

m.pca.squeezed <- m.pca
m.pca.squeezed[, 1] <- 0.2 * m.pca.squeezed[, 1]

para entonces usar kmeans sobre las componentes reponderadas

tmp.squeezed <- kmeans(m.pca.squeezed, 2)
plot(m.pca.squeezed, col = tmp.squeezed$cluster, asp = 1)

clust_02

Finalmente, es posible representar los clústers sobre las variables originales:

tmp.squeezed <- kmeans(m.pca.squeezed, 2)
plot(m, col = tmp.squeezed$cluster, asp = 1)

clust_03

Puede apreciarse cómo ha decrecido el impacto de la dirección NO-SE en el resultado final.

¿Qué significa todo esto? Que siempre es posible —de hecho, recomendable— reajustar el peso de las componentes a mano cuando haya buenos motivos para ello. Y que, de hecho, es legítimo; particularmente cuando su peso original (en términos matemáticos) no corresponde a su importancia en la aplicación en cuestión.