Wenn Sie Ihre Daten nicht standardisieren, dominieren die in großen Einheiten gemessenen Variablen die berechnete Unähnlichkeit, und Variablen, die in kleinen Einheiten gemessen werden, tragen sehr wenig dazu bei.
Wir können dies in R visualisieren über:
set.seed(42)
dat <- data.frame(var1 = rnorm(100, mean = 100000),
var2 = runif(100),
var3 = runif(100))
dist1 <- dist(dat)
dist2 <- dist(dat[,1, drop = FALSE])
dist1
enthält die euklidischen Abstände für die 100 Beobachtungen basierend auf allen drei Variablen, während dist2
der euklidische Abstand var1
allein basierend auf enthalten ist .
> summary(dist1)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.07351 0.77840 1.15200 1.36200 1.77000 5.30200
> summary(dist2)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.000072 0.470000 0.963600 1.169000 1.663000 5.280000
Beachten Sie, wie ähnlich die Entfernungsverteilungen sind, was auf einen geringen Beitrag von var2
und hinweist var3
, und dass die tatsächlichen Entfernungen sehr ähnlich sind:
> head(dist1)
[1] 1.9707186 1.0936524 0.8745579 1.2724471 1.6054603 0.1870085
> head(dist2)
[1] 1.9356566 1.0078300 0.7380958 0.9666901 1.4770830 0.1405636
Wenn wir die Daten standardisieren
dist3 <- dist(scale(dat))
dist4 <- dist(scale(dat[,1, drop = FALSE]))
dann gibt es eine große Veränderung in den Entfernungen, die nur auf var1
und denen basieren, die auf allen drei Variablen basieren:
> summary(dist3)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.09761 1.62400 2.25000 2.28200 2.93600 5.33100
> summary(dist4)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.000069 0.451400 0.925400 1.123000 1.597000 5.070000
> head(dist3)
[1] 2.2636288 1.7272588 1.7791074 3.0129750 2.5821981 0.4434073
> head(dist4)
[1] 1.8587830 0.9678046 0.7087827 0.9282985 1.4184214 0.1349811
Da hierarchische Cluster diese Abstände verwenden, hängt es von der Art der Daten / Variablen ab, über die Sie verfügen, und ob die großen Dinge die Abstände und damit die Bildung der Cluster dominieren sollen. Die Antwort darauf ist domänenspezifisch und datensatzspezifisch.