Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Cvičení 4 - Shluková analýza

Test: https://goo.gl/forms/1nRnCPNxmsQ1891K3

V dnešním cvičení opět využijeme několik souborů s daty - všechny jsou v následujícím souboru cviceni_10_shluky.zip

Shluková analýza

  1. Co je shluková analýza?
  2. Jaký je rozdíl mezi hierarchickými a nehierarchickými metodami?
  3. Vysvětlete princip algoritmu k-means.
  4. Vysvětlete proč je nutná normalizace dat při shlukování.

Příprava dat

Při shlukování je vždy nutné přemýšlet o normalizaci dat.

mydata <- na.omit(mydata) # smazání chybějících hodnot
mydata <- scale(mydata) # normalizace dat

Tvary shluků

Vyzkoušejte postupně algoritmus k-means na datových souborech kruhy.csv a tvary.csv. Pozor, nezapomeňte vyloučit atribut class ze shlukování. Atribut class použijte pouze pro vizualizaci shluků. Zvolte počet shluků roven 3 (parametr k=3).

kc <- kmeans(data_bez_class, pocet shluku)
print(kc)

  • Jak se shodují shluky získané shlukovou analýzou se shluky v datech? Porovnejte pomocí vizualizace.
  • Jaká je nevýhoda algoritmu k-means vzhledem k tvaru shluků?
  • Vyzkoušejte, jaké výsledky dává kmeans, pokud bychom v datech čekali 2 resp. 4 shluky. Porovnejte.

Počet shluků

U algoritmu k-means je nutné nastavit počet shluků. Ukážeme si, jak je možné počet shluků volit.

Vyzkoušejte následující funkci v R.

cluster_num_plot <- function(data,n){
  result <- vector(length=n-1)
  for(i in 2:n){
    cl <- kmeans(data, i)
    result[i-1] <- sum(cl$withinss)
  }
  plot(2:n,result,xlab="počet shluků", ylab="průměrná vzdálenost")
}

Funkce provede postupně shlukování metodou kmeans pro počet shluků 1n. Kvalitu shlukování odhadneme pomocí parametru cl$withinss (průměrnou vzdálenost uvnitř všech shluků) a uložíme do vektoru result. Následně vykreslíme závislost počtu shluků na objektivní funkci (použijeme právě průměrnou vzdálenost uvnitř všech shluků).

  • Jak byste na základě obrázku odhadli optimální počet shluků?

Gaussian mixture model estimated by expectation maximization algorithm

Gaussian mixture model je flexibilnější než algoritmus k-means. Porovnejte výsledky shlukování pomocí k-means a pomocí GMM EM na datech tvary.csv.

library(mclust)
cl_gmm <- Mclust(data,G=pocet_shluku)
summary(cl_gmm)
plot(cl_gmm)

  • Jak funguje EM algoritmus
  • jaké parametry má GMM
  • Jak byste zhodnotili výsledky k-means a GMM EM na datech tvary.csv

Hierarchické shlukování

Vyzkoušejte hierarchické shlukování na datovém souboru zvirata.csv a známých iris

hc <- hclust(dist(zvirata[,2:14]), method="complete")
plot(hc, hang = -1, labels=zvirata[,1])

help(cutree)

  • Projděte si vytvořenou hierarchii.

courses/a6m33dvz/cviceni/04-shluky.txt · Last modified: 2017/10/26 10:20 by anyzjiri