Причина нормализации в евклидовых мерах расстояния в иерархической кластеризации

19

Очевидно, что в иерархической кластеризации, в которой мерой расстояния является евклидово расстояние, данные должны быть сначала нормализованы или стандартизированы, чтобы предотвратить кластеризацию с помощью ковариации с наибольшей дисперсией. Почему это? Разве этот факт не желателен?

user1202664
источник

Ответы:

20

Это зависит от ваших данных. И на самом деле это не имеет ничего общего с иерархической кластеризацией, но с самими функциями расстояния.

Проблема в том, что у вас смешанные атрибуты .

Скажем, у вас есть данные о людях. Вес в граммах и размер обуви. Размеры обуви отличаются очень мало, в то время как различия в массе тела (в граммах) намного больше. Вы можете придумать десятки примеров. Вы просто не можете сравнить разницу в 1 г и 1 размер обуви. Фактически, в этом примере вы вычисляете что-то, что будет иметь физическую единицу !граммразмер обуви

Обычно в этих случаях евклидово расстояние просто не имеет смысла. Но это может все еще работать, во многих ситуациях, если вы нормализуете свои данные. Даже если это на самом деле не имеет смысла, это хорошая эвристика для ситуаций, когда у вас нет «доказанной правильной» функции расстояния, например, евклидово расстояние в физическом мире человеческого масштаба.

Аноним-Мусс-Восстановить Монику
источник
Вы только что ответили на мои мысли, я думаю, сидя в одиночестве, в то время как чрезмерное мышление помогает.
Карл Моррисон
13

Если вы не стандартизируете свои данные, то переменные, измеренные в больших оцененных единицах, будут доминировать над вычисленной разницей, а переменные, которые измеряются в небольших значимых единицах, будут вносить очень незначительный вклад.

Мы можем визуализировать это в R через:

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содержит евклидово расстояние для 100 наблюдений, основанное на всех трех переменных, в то время как dist2содержит евклидово расстояние, основанное на var1одном.

> 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

Обратите внимание, насколько схожи распределения расстояний, что указывает на небольшой вклад от var2и var3, а фактические расстояния очень похожи:

> 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

Если мы стандартизируем данные

dist3 <- dist(scale(dat))
dist4 <- dist(scale(dat[,1, drop = FALSE]))

затем происходит большое изменение расстояний, основанных только на расстояниях, var1основанных на всех трех переменных:

> 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

Поскольку иерархическая кластеризация использует эти расстояния, то, будет ли желательно стандартизировать или нет, будет зависеть от типа данных / переменных, которые у вас есть, и от того, хотите ли вы, чтобы большие вещи доминировали над расстояниями и, следовательно, доминировали при формировании кластеризации. Ответ на этот вопрос зависит от конкретной области и набора данных.

Восстановить Монику - Дж. Симпсон
источник
4

Anony-Mousse дал отличный ответ . Я бы просто добавил, что метрика расстояния, которая имеет смысл, будет зависеть от формы многомерных распределений. Для многомерного гауссова расстояние Махаланобиса является подходящей мерой.

Майкл Р. Черник
источник