Conglomerados

Índice

1 No jerárquicos

  • Requieren fijar de antemano el número de conglomerados.
  • Probar distintos números para
    • Adaptar al objetivo
    • Mejorar la interpretación
  • Número de grupos mayor que el deseado permite detectar atípicos

1.1 \(k\) medias

  • El más usado.
  • Algoritmo
    1. Elegir los "centros" de cada clase (habitualmente, al azar).
    2. Asignar a cada individuo la clase con el centro más próximo.
    3. Recalcular los centros minimizando suma de distancias cuadráticas.
    4. Repetir hasta que los centros no cambien.
  • kmeans en R
    • Devuelve lista con
      cluster
      Vector de enteros indicando a qué conglomerado pertenece cada individuo.
      centers
      Matriz con coordenadas de los centros.
      totss
      Suma de cuadrados total.
      withinss
      Vector de sumas de cuadrados intra conglomerado.
      tot.withinss
      sum(withinss)
      betweenss
      totss-tot.withinss (suma de cuadrados entre conglomerados).
      size
      Número de individuos en cada conglomerado.
      iter
      Número de iteraciones.
    • Ejemplo (?kmeans)

      x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
                 matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
      colnames(x) <- c("x", "y")
      (cl <- kmeans(x, 2))
      plot(x, col = cl$cluster)
      points(cl$centers, col = 1:2, pch = 8, cex = 2)
      points(x, col = rep(1:2, each=50), pch=16, cex=.7)
      
    • Ejemplo (?kmeans)

      ## nstart para repetir varias veces
      ## y considerar el mejor ajuste:
      (cl <- kmeans(x, 5, nstart = 25))
      plot(x, col = cl$cluster)
      points(cl$centers, col = 1:5, pch = 8)
      
    • Ejemplo (iris)

      c2 = kmeans (subset (iris, , -Species), 2)
      plot (iris[,grep("Petal",names(iris))], col=c2$cluster)
      c3 = kmeans (subset (iris, , -Species), 3)
      plot (iris[,grep("Petal",names(iris))], col=c3$cluster)
      

2 Jerárquicos

2.1 Distancias

  • euclídea (por omisión) \[\sqrt{\sum (x_i-y_i)^2}\]

    d = dist (iris[,1:4])
    D = as.matrix (d)
    D[1:5,48:52] # de 5 setosas a 3 setosas (48:50) y 2 versi (51:52)
    which (D == max(d), arr.ind=TRUE) # las más separadas
    
    dist (rbind (c(0,0), c(1,1), c(1,2)))
    
  • maximum (norma del supremo) \[\|\vec x-\vec y\|_\infty = \max |x_i-y_i|\]

    dist (rbind (c(0,0), c(1,1), c(1,2)), "maximum")
    
  • manhattan (ensanche hipodámico) \[{\sum |x_i-y_i|}\]

    dist (rbind (c(0,0), c(1,1), c(1,2)), "manhattan")
    
  • canberra (relativa) \[\sum\dfrac{|x_i-y_i|}{|x_i|+|y_i|}\]
    • los términos 0/0 se omiten
    • usada con recuentos
  • binary (binaria asimétrica) \[\dfrac{\text{(número de 01)} + \text{(número de 10)}} {\text{(número de 01)} + \text{(número de 10)} + \text{(número de 11)}}\]
    • proporción de distintos entre aquéllos que no son 00
  • minkowski \[\left(\sum(x_i-y_i)^p\right)^{\frac1p}\]

2.2 Agrupación

  • Inicialmente, cada individuo se asigna a su propio conglomerado.
  • En cada etapa
    • Se juntan los conglomerados más cercanos.
    • Se recalculan las distancias entre conglomerados.
  • Se acaba con un conglomerado único.
  • Hay distintos métodos de recálculo o agrupación.

2.2.1 Ward

  • Método de varianza mínima.
  • Encuentra conglomerados compactos, esféricos.
  • Dos versiones
    • ward.D (usa distancias crudas)
    • ward.D2 (usa distancias al cuadrado)

2.2.2 complete

  • "Vecino más lejano" o "salto máximo".
  • Distancia entre los dos individuos más alejados.
  • Usado por omisión.
  • Encuentra conglomerados similares.

2.2.3 single

  • "Amigos de amigos", "salto mínimo" o "vecino más próximo".
  • Distancia entre los dos individuos más próximos.
  • Suele dar los resultados más distintos a los otros métodos.

2.2.4 centroid

  • Considera distancias entre medias de conglomerados (sus centros de gravedad).

2.2.5 median

  • Considera distancias entre medianas de conglomerados.

2.2.6 average

  • UPGMA, Unweighted Pair Group Method with Arithmetic Mean
  • Media de las distancias entre un individuo \(\vec x\) de un conglomerado \(C_i\)y un individuo \(\vec y\) del otro \(C_j\). \[a(C_i,C_j)=\displaystyle \frac1{n_i n_j} \sum_{\vec x\in C_i}\sum_{\vec y\in C_j} d(\vec x,\vec y) \]

2.2.7 mcquitty

  • WPGMA, Weighted Pair Group Method with Arithmetic Mean
  • Parecido al average, pero tiene en cuenta la subdivisión previa de los conglomerados:
    • Sea un conglomerado \(C_i\cup C_j\) formado al unirse \(C_i\) y \(C_j\) en la etapa anterior.
    • Se quiere calcular su distancia respecto a otro conglomerado \(C_k\).
    • average usa \[a(C_i\cup C_j,C_k) = \displaystyle \frac{n_i}{n_i+n_j}a(C_i,C_k) + \frac{n_j}{n_i+n_j}a(C_j,C_k)\]
    • mcquitty usa \[a(C_i\cup C_j,C_k) = \displaystyle \frac12a(C_i,C_k) + \frac12a(C_j,C_k)\]

2.3 Ejemplo

d <- dist (scale (mtcars))
h <- hclust (d)
plot (h)
## cinco grupos
cutree (h, 5)
plot (h)
rect.hclust (h, 5)
## vecinos cercanos
h <- hclust (d, "single")
plot (h)

Autor: UniOvi - MAnáDINe

Created: 2022-05-04 mié 15:56

Validate