Unsupervised Learning: Clusteranalyse

DS3 - Vom experimentellen Design zur
explorativen Datenanalyse & Data Mining

Saskia Otto

Universität Hamburg, IMF

Wintersemester 2024/2025

Lernziele

Am Ende dieser VL- und Übungseinheit werden Sie

  • einen groben Überblick über Analysetechniken zu multivariaten Datensätzen in der Biologie haben.
  • wissen, was eine Assoziationsmatrix ist und wie diese berechnet wird.
  • die Grundprinzipien der hierarchischen Clusteranalyse verstanden haben.
  • in der Lage sein, den geeigneten Clustering-Algorithmus für verschiedene Datensätze und Fragestellungen auszuwählen.

Analysen multivariater Daten

Biologische Daten sind oft multivariat… | 1

Biologische Daten sind oft multivariat… | 2

  • Mehrere (Antwort-)Variablen (Abundanzen von Arten, Umweltvariablen, Messungen von biologischen Merkmalen (‘traits’), Gensequenzen, …)
  • Mehrere Objekte (z. B. Standorte, Zeit, Individuen, experimentelle Einheiten,…)

Beispiele multivariater Daten | 1

Genomdaten

  • Microarray-Daten, die aus 6.830 Genexpressionsmessungen (Variablen: kontinuierlich) an 64 Krebszelllinien bestehen.
  • Mögliche Fragestellung: Lassen sich die Krebszelllinien auf Grundlage ihres Genexpressionsprofils in verschiedene Gruppen oder Cluster einordnen?
    • → Schwierige Frage, weil es sehr viele Genexpressionsmessungen pro Zelllinie gibt, was es schwierig macht, die Daten zu visualisieren!

Bildquelle: James et al. (2013): Introduction to Statistical Learning

Beispiele multivariater Daten | 2

Physiologische Daten

  • Fettsäurenzusammensetzung des Blubbers (Variablen: kontinuierlich) bei 89 Schweinswalen.
  • Mögliche Fragestellung: Können wir Gruppen von Individuen mit unterschiedlichen Ernährungsgewohnheiten identifizieren?

Beispiele multivariater Daten | 3

Trait-Daten

  • Merkmale oder traits (Variablen: quantitativ/ qualitativ) verschiedener Fisch- oder Zooplanktonarten.
  • Mögliche Fragestellung: Lassen sich die Arten in funktionelle Gruppen zusammenlegen?

Beispiele multivariater Daten | 4

Abundanzsdaten einer biol. Gemeinschaft

  • Abundanzen von Wolfspinnen (und Umweltparameter) (Variablen: diskret/kontinuerlich), die an verschiedenen Standorten eines Dünenengebiets in den Niederlande gemessen wurden.
  • → Problematisch bei Abundanzdaten: enthalten oft viele Nullen!
  • Mögliche Fragestellungen:

Wie können wir multivariate Daten analysieren?

Indizes berechnen

Diversitätsindizes

  • Diversitätsindizes sind quantitative Maße, die verwendet werden, um die biologische Vielfalt oder Diversität in einem bestimmten Ökosystem, einer Population oder einer Gemeinschaft zu bewerten.
  • Je nach Index wird die Anzahl der verschiedenen Arten sowie deren Häufigkeit, Abundanz bzw. Verteilung, deren Traits und/oder Phylogenie berücksichtigt.
  • Unterscheidet in
    • taxonomische Diversität → hier ist das R Paket vegan nützlich
    • funktionelle Diversität → R Paket mFD
    • phylogenetische Diversität → R Pakete ape und picante
Artenreichtum S und Shannon Index H mit 'vegan' berechnen:
spiderA |> transmute(samples = 1:28,
    S = vegan::specnumber(x = spiderA),
    H =  vegan::diversity(x = spiderA, index = "shannon") ) |>
  arrange(desc(S), desc(H))
   samples  S         H
1       13 11 1.8742271
2        3 11 1.8732193
3        7 10 1.7221199
4        4 10 1.6520490
5        5 10 1.5403056
6       25  9 1.9276654
7       14  9 1.5284480
8        6  8 1.7591828
9        1  8 1.7309509
10       2  8 1.5204418
11       8  8 1.3896573
12      11  7 0.7440770
13      23  6 1.4848760
14      21  6 1.1565256
15      12  6 1.1410240
16       9  6 0.7752108
17      28  5 1.2769439
18      22  5 1.2373886
19      16  5 1.1035352
20      19  5 1.0708014
21      24  4 1.1601124
22      20  4 0.9938215
23      26  4 0.9724515
24      27  4 0.9272491
25      10  4 0.6551416
26      15  3 0.7464108
27      18  3 0.5785328
28      17  3 0.5221718

→ Messung #13 weist die höchste Artenzahl auf (12) und Messung #25 die höchste Shannon Diversität (bei der auch die relative Häufigkeit berücksichtigt wird.)

Einfluss der Umweltbedingungen auf das Artenreichtum (S)

spiderE |> mutate(S = vegan::specnumber(x = spiderA),) |>
  pivot_longer(WaterCon:ReflLux, names_to = "EnvVar", values_to = "Value") |> 
  ggplot(aes(x = Value, y = S)) +
  geom_point() + geom_smooth() + facet_wrap(~EnvVar)

Assoziationsmatrix

2 Typen von Assoziationsmatrix

Q-Mode | Euklidische Distanz 1

Vektorieller Abstand zwischen Punkten in einem p (Anzahl der Variablen) dimensionalen Raum, dem euklidischen Raum.

Q-Mode | Euklidische Distanz 2

Blubber Beispiel

Q-Mode | Euklidische Distanz 3

  • Hängt stark vom Wert der Variablen ab, und dieser Wert wird durch die Skala jeder Variablen beeinflusst. Wird beispielsweise g in mg umgewandelt, so wird der Beitrag dieser Variablen zum euklidischen Abstand mit 1000 multipliziert. Wenn die Variablen unterschiedliche Einheiten haben, müssen sie daher alle standardisiert werden (z-Transformation):
    • \frac{x-\hat{x}}{s} → in R Funktion scale(x, center = TRUE, scale = TRUE)
  • = symmetrischer Koeffizient: betrachtet 0 als genauso aussagekräftig wie jeden anderen Wert. Beispiel Temperatur:
    • Standort1 = 0 °C vs. Standort2 = 15 °C → Es ist kälter bei Standort1unterschiedlich
    • Standort1 = 0 °C vs. Standort2 = 0.2 °C → Es ist bei beiden Standorten kalt → gleich
Anwendung in R: Umweltdaten im spider Datensatz
# Standardisierung
spiderE_scaled <- scale(x = spiderE)
# Und nun die Euklidische Distanz
spiderE_edist <- dist(spiderE_scaled, method = "euclidean") # default

Q-Mode | Artvorkommen

Das Problem der doppelten Nullen!

  • Bei Abundanz- oder Biomassedaten von Arten:
    • Standort1 = 10 vs. Standort2 = 10 → die Standorte bieten ähnliche Umweltbedingungen für das Überleben der Art → ähnlich
    • Standort1 = 0 vs. Standort2 = 0 → bieten sie ähnlich ungünstige Bedingungen für das Überleben der Art? → ähnlich? Nicht unbedingt…
  • Das Fehlen einer Art an zwei Standorten bedeutet nicht direkt eine Ähnlichkeit zwischen diesen Standorten, da dieses doppelte Fehlen verschiedene Gründe haben kann.
  • Die Anzahl der doppelten Abwesenheiten in einer Artenmatrix hängt von der Anzahl der Arten im Datensatz ab und nimmt mit der Anzahl der seltenen Arten in der Matrix stark zu.

Q-Mode | Artvorkommen

Das Problem der doppelten Nullen!

Lösungen

  1. Asymmetrischen Koeffizienten wählen, z.B. Bray-Curtis-(Dis)similaritätsindex → Nachteil: für einige Methoden wie PCA ist Euklidische Distanz Grundlage.
  2. Folgende Standardisierung & anschl. Euklidische Distanz:
    • Chord-Standardisierung (+ Euklidische Distanz = Chord Distanz)
      • Variablen werden auf Länge 1 normalisiert.
    • Hellinger-Standardisierung (+ Euklidische Distanz = Hellinger Distanz)
      • Abundanzen werden durch die Gesamthäufigkeit des Standorts (Objekts) geteilt und dann die Quadratwurzel gezogen.
    • Chord-Standardisierung wurzeltransformierter Abundanzen = Hellinger-Standardisierung → wenn seltene Arten mehr Gewicht bekommen sollen: Hellinger





vegan::decostand()
library(vegan)

### Chord Distanzmatrix
# Chord-Standardisierung
spiderA_chord <- decostand(spiderA, 
  method = "normalize")
# Nun Euklidische Distanz
spiderA_cdist <- dist(spiderA_chord) 

### Hellinger Distanzmatrix
# Hellinger-Standardisierung
spiderA_hell <- decostand(spiderA, 
  method = "hellinger")
# Nun Euklidische Distanz
spiderA_hdist <- dist(spiderA_hell)  

Standardisierung bedeutet im Gegensatz zu Transformation, dass die Einträge relativ zu anderen Einträgen transformiert werden.

Clusteranalyse

Was ist Clustering?

  • Clustering bezieht sich auf ein sehr breites Spektrum von Techniken zum Auffinden von Untergruppen oder Clustern in einem Datensatz.
  • Wenn wir die Beobachtungen eines Datensatzes clustern, versuchen wir, sie in verschiedene Gruppen aufzuteilen, so dass die Beobachtungen innerhalb jeder Gruppe einander recht ähnlich sind, während sich die Beobachtungen in verschiedenen Gruppen recht stark voneinander unterscheiden.

Typen von Clusteranalyse

  • Beim hierarchischen Clustering weiß man nicht im Voraus, wie viele Cluster man haben möchte; man erhält eine baumartige visuelle Darstellung der Beobachtungen, ein so genanntes Dendrogramm, das es ermöglicht, die für jede mögliche Anzahl von Clustern (von 1 bis n) erhaltenen Cluster auf einmal zu betrachten.
  • Beim k-means-Clustering versuchen wir, die Beobachtungen in eine vorgegebene Anzahl von Clustern zu unterteilen.

Hierarchische Clusteranalyse

HC-Algorithmen | Clusterbildung 1

‘Single linkage’ oder ‘nearest neighbor’:

  • Basierend auf dem kürzesten paarweisen Abstand der Objekte.
  • Dendrogramm zeigt oft lange Ketten von Objekten und ist nützlich, um einen ersten Überblick zu erhalten
hc_sing <- hclust(spiderA_hdist, method = "single")


‘Complete linkage’ oder ‘furthest neighbor’:

  • Basiert auf dem weitesten paarweisen Abstand der Objekte
  • Neigt dazu, viele kleine Gruppen zu bilden, die sich bei größeren Abständen zusammenballen.
  • Ist kontrastreicher und nützlich, um Diskontinuitäten in den Daten zu erkennen.
hc_comp <- hclust(spiderA_hdist, method = "complete")


HC-Algorithmen | Clusterbildung 2

‘Arithmetic average’:

  • Basiert auf den paarweisen Durchschnittsabständen aller Objekte.
  • Gewichtet oder ungewichtet nach der Anzahl der Objekte
hc_ave <- hclust(spiderA_hdist, method = "average") # ungewichtet (UPGMC)
hc_mcq <- hclust(spiderA_hdist, method = "mcquitty") # gewichtet (WPGMC)


‘Centroids’:

  • Basiert auf dem Abstand zwischen den Schwerpunkten der Cluster.
  • Gewichtet oder ungewichtet mit der Anzahl der Objekte
hc_cent <- hclust(spiderA_hdist, method = "centroid") # ungewichtet
hc_med <- hclust(spiderA_hdist, method = "median") # gewichtet


‘Ward’s minimum variance’:

  • Minimierung der Summe der quadrierten Fehler innerhalb der Gruppe = Summe der quadrierten Abstände zwischen den Mitgliedern eines Clusters geteilt durch die Anzahl der Objekte.
hc_ward <- hclust(spiderA_hdist, method = "ward.D2")

HC-Algorithmen | Vergleich

# Standard-Dendrogram erstellen mit plot()
plot(hc_sing, main = "Single", hang = -1)
plot(hc_comp, main = "Complete", hang = -1)
...

HC-Algorithmus: Aber welcher? | 1

  • Es kommt auf das Ziel der Studie an!
  • Clustering ist eine explorative Methode, kein statistischer Test!
  • Die Wahl des Assoziationsmaßes und der Clustering-Methode beeinflusst die Ergebnisse.
  • Es gibt Kriterien wie
    • Kophenetische Korrelation (je höher, desto besser): Korrelation zwischen den Abständen der ursprünglichen Distanzmatrix und den Abständen der Objekte oder Cluster im Dendrogramm (kophenetische Distanzen).
    • Gower-Distanz (je geringer, desto besser): die Summe der quadrierten Differenzen zwischen den ursprünglichen Distanzen und den kophenetischen Distanzen.
    • → Bei diesen beiden Kriterien schneidet der Average linkage (UPMGA) Algorithmus (method = average) meist am besten ab!

Wie viele Gruppen?

Das hängt ganz vom Ziel der Studie ab! Die Auswahl ist oft subjektiv.
Es gibt viele verfügbare Analysen, die auf verschiedenen Kriterien basieren und bei der Entscheidung helfen können (siehe z.B. Borcard et al. 2011; Kassambara 2017…).

Grafische Darstellung der Fusionsstufen/Fusionshöhe Die ‘Fusionsstufen’ eines Dendrogramms sind die Unähnlichkeits- bzw. Distanzwerte, bei denen eine Fusion zwischen zwei Zweigen eines Dendrogramms stattfindet. Die Diagramme können bei der Entscheidungsfindung helfen; es gibt aber nicht die eine beste Wahl und alles hängt von der Zielsetzung ab.

Code
par(mfrow = c(1,2))
plot(hc_ave, main = "Average: unweighted", hang = -1)

# Plot der Fusionshöhen und Clusteranzahlen
plot(hc_ave$height,
  nrow(spiderA_hell):2,  # Anzahl der Cluster von n bis 2
  type = "S",  # "S" für Step-Plot
  main = "Fusionslevel - Average Unweighted Algorithmus",
  ylab = "k (Anzahl der Cluster)",
  xlab = "h (Fusionshöhe)"
)
# Text in rot für die Clusteranzahlen
text(hc_ave$height,
  nrow(spiderA_hell):2,  # Clusteranzahl entlang der Y-Achse
  labels = nrow(spiderA_hell):2,  # Beschriftung der Clusteranzahl
  col = "red"
)

Finales Dendrogramm

Für Visualisierungen von Clusteranalysen und PCA ist das R Paket factoextra empfehlenswert:

Code
factoextra::fviz_dend(hc_ave, k = 4, # 4 Gruppen
  cex = 0.8, k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
  color_labels_by_k = TRUE, rect = TRUE, lower_rect = -0.2, 
  main = "Cluster Dendrogram: Average unweighted")

Heatmap mit Dendrogramm

Code
library(pheatmap)
rownames(spiderA_hell) <- spider$samples # damit die Standorte als labels erscheinen

# Wir transponieren hier den Datensatz, damit die Darstellung 
# wie im vorherigen Dendrogramm ist
pheatmap::pheatmap(t(spiderA_hell), cutree_cols = 4, 
  clustering_method = "average", cluster_rows = FALSE)

Eine Heatmap ist eine grafische Darstellung von Daten, bei der Farben verwendet werden, um die Intensität oder Häufigkeit von Werten in einem zweidimensionalen Bereich zu visualisieren.

Übungen

Übungswoche 6

Gemeinschaftsstruktur von Wolfsspinnen und mögliche Umwelteinflüsse (Teil 1)

Vorbereitung @home

  • Univariate Analyse der Umweltbedingungen
    • Datenexploration
  • Multivariate Analyse der Wolfspinnengemeinschaft
    • Wiederholung der Analyse (inkl. dem R Code) und die Ergebnisse zur Spinnengemeinschaft aus der Vorlesung.
  • Beantworten Sie vor der sechsten Übungsstunde die Fragen zu diesem Datensatz und der hierarchischen Clusteranalyse im Moodle-Quiz.

Fragen..??

Total konfus?

Buchkapitel zum Nachlesen

  • The R Book von M.J. Crawley:
    • Kapitel 25.3 Cluster analysis
  • Experimental Design and Data Analysis for Biologists von G.P. Quinn & M.J. Keough:
    • Kapitel 15 Introduction to multivariate analyses
    • Kapitel 18 Multidimensional scaling and cluster analysis
  • Weitere empfehlenswerte Bücher:
    • P. Legendre & L. Legendre (2012): Numerical Ecology, Elsevier Offizielle Webseite
    • Borcard, Gillet & Legendre (2011): Numerical Ecology with R, Springer Offizielle Webseite
    • A. Kassambara (2017): Practical Guide To Cluster Analysis in R. Sthda.com (factoextra package)

Cheetsheets

Empfehlenswert ist auch das Cheatsheet des ‘vegan’ Pakets: https://github.com/rstudio/cheatsheets/blob/main/vegan.pdf

Total gelangweilt?

Dann testen Sie doch Ihr Wissen in folgendem Abschlussquiz…

Abschlussquiz

Bei weiteren Fragen: saskia.otto(at)uni-hamburg.de

Creative Commons License
Diese Arbeit is lizenziert unter einer Creative Commons Attribution-ShareAlike 4.0 International License mit Ausnahme der entliehenen und mit Quellenangabe versehenen Abbildungen.