Понимание сравнений результатов кластеризации

13

Я экспериментирую с классификацией данных по группам. Я довольно новичок в этой теме, и пытаюсь понять вывод некоторых из анализа.

Используя примеры из Quick-R , предлагается несколько Rпакетов. Я попытался использовать два из этих пакетов ( fpcс помощью kmeansфункции и mclust). Один из аспектов этого анализа, который я не понимаю, - это сравнение результатов.

# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)

Я прочитал соответствующие части fpc руководства и до сих пор не ясно, к чему я должен стремиться. Например, это результат сравнения двух разных подходов кластеризации:

$n
[1] 521

$cluster.number
[1] 4

$cluster.size
[1] 250 119  78  74

$diameter
[1]  5.278162  9.773658 16.460074  7.328020

$average.distance
[1] 1.632656 2.106422 3.461598 2.622574

$median.distance
[1] 1.562625 1.788113 2.763217 2.463826

$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264

$average.toother
[1] 3.442575 3.929158 4.068230 4.425910

$separation.matrix
          [,1]      [,2]      [,3]      [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000

$average.between
[1] 3.865142

$average.within
[1] 1.894740

$n.between
[1] 91610

$n.within
[1] 43850

$within.cluster.ss
[1] 1785.935

$clus.avg.silwidths
         1          2          3          4 
0.42072895 0.31672350 0.01810699 0.23728253 

$avg.silwidth
[1] 0.3106403

$g2
NULL

$g3
NULL

$pearsongamma
[1] 0.4869491

$dunn
[1] 0.01699292

$entropy
[1] 1.251134

$wb.ratio
[1] 0.4902123

$ch
[1] 178.9074

$corrected.rand
[1] 0.2046704

$vi
[1] 1.56189

Мой основной вопрос здесь состоит в том, чтобы лучше понять, как интерпретировать результаты этого кластерного сравнения.


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

Предыдущая часть вопроса : если я делаю кластеризацию любого типа, всегда ли мне нужно масштабировать данные? Например, я использую функцию dist()в моем масштабированном наборе данных в качестве входных данных для cluster.stats()функции, однако я не до конца понимаю, что происходит. Я читал о dist() здесь, и это заявляет, что:

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

celenius
источник
Вы ищете дальнейшие разъяснения или недовольны ответом @ mariana? Я думаю, это касается вашего самого первого вопроса (2-й §). Если это так, возможно, вам следует обновить свой вопрос, чтобы люди поняли, почему вы назначаете вознаграждение по этому вопросу.
ХЛ
@chl Я обновлю его, чтобы было понятнее. Я просто ищу руководство по интерпретации сравнений кластеризации, так как не понимаю, что означает вывод. Ответ @ mariana был очень полезным, объясняя некоторые термины, связанные с этим методом.
Целениус

Ответы:

13

Сначала позвольте мне сказать вам, что я не собираюсь объяснять точно все меры здесь, но я собираюсь дать вам представление о том, как сравнить, насколько хороши методы кластеризации (предположим, мы сравниваем 2 метода кластеризации с одинаковым числом кластеров).

  1. Например, чем больше диаметр кластера, тем хуже кластеризация, потому что точки, принадлежащие кластеру, являются более рассеянными.
  2. Чем выше среднее расстояние каждой кластеризации, тем хуже метод кластеризации. (Предположим, что среднее расстояние - это среднее расстояние от каждой точки кластера до центра кластера.)

Это две наиболее часто используемые метрики. Проверьте эти ссылки, чтобы понять, что они означают:

  • межкластерное расстояние (чем выше, тем лучше, является суммой расстояния между различными центроидами кластера)
  • внутрикластерное расстояние (чем меньше, тем лучше, является суммой расстояния между элементами кластера до центра кластера)

Чтобы лучше понять показатели выше, проверьте это .

Затем вам следует прочитать руководство по библиотеке и функциям, которые вы используете, чтобы понять, какие показатели представляют каждый из них, или, если они не включены, попытайтесь найти значение включенного. Тем не менее, я не стал бы беспокоиться и придерживаться тех, которые я здесь изложил.

Давайте продолжим с вопросами, которые вы задали:

  1. Относительно масштабирования данных: Да, вы всегда должны масштабировать данные для кластеризации, в противном случае разные масштабы разных измерений (переменных) будут по-разному влиять на то, как данные кластеризуются: чем выше значения в переменной, тем более влиятельной является эта переменная. будет в том, как кластеризация сделана, хотя на самом деле все они должны иметь одинаковое влияние (если только по какой-то конкретной странной причине вы не хотите этого так).
  2. Функции расстояния вычисляют все расстояния от одной точки (экземпляра) до другой. Наиболее распространенная мера расстояния - евклидова, поэтому, например, давайте предположим, что вы хотите измерить расстояние от экземпляра 1 до экземпляра 2 (предположим, у вас есть только 2 экземпляра для простоты). Также давайте предположим, что каждый экземпляр имеет 3 значения (x1, x2, x3), I1=0.3, 0.2, 0.5и I2=0.3, 0.3, 0.4поэтому евклидово расстояние от I1 и I2 будет:, sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17следовательно, матрица расстояний приведет к:

        i1    i2
    i1  0     0.17
    i2  0.17  0

Обратите внимание, что матрица расстояний всегда симметрична.

Евклидова формула расстояния не единственная, которая существует. Есть много других расстояний, которые можно использовать для расчета этой матрицы. Проверьте, например, в Википедии Manhattain Distance и как его рассчитать. В конце страницы Википедии о Евклидовом расстоянии (где вы также можете проверить его формулу) вы можете проверить, какие существуют другие расстояния.

Мариана Софер
источник
Спасибо за ваш очень полный ответ - это очень полезно.
Целениус
Я очень рад, что это было полезно для вас.
Мариана Соферфер
@marianasoffer ссылка на страницу Стэнфорда не работает. Пожалуйста, обновите его или сделайте его доступным. Спасибо
Herman Toothrot
7

Я думаю, что лучшим показателем качества для кластеризации является предположение о кластере, как оно дано Сигером в Обучении с помеченными и немаркированными данными :

Например, предположим, что X = Rd и справедливость «кластерного предположения», а именно, что две точки x, x должны иметь одинаковую метку t, если между ними в X есть путь, который проходит только через области с относительно высоким P (x). ).

Да, это сводит всю идею центроидов и центров вниз. В конце концов, это довольно произвольные понятия, если вы думаете о том, что ваши данные могут лежать в нелинейном подмногообразии пространства, в котором вы фактически работаете.

Вы можете легко создать синтетический набор данных, в котором модели смесей будут разбиты. Например , этот: круг внутри облака.

Короче говоря: я бы оценил качество алгоритма кластеризации минимаксным способом. Лучший алгоритм кластеризации - это тот, который минимизирует максимальное расстояние от точки до ближайшего соседа того же кластера, в то время как он максимизирует минимальное расстояние от точки до ближайшего соседа от другого кластера.

Вы также можете быть заинтересованы в Непараметрический алгоритм теоретической кластеризации информации .

bayerj
источник
Как мне пройти проверку соответствия кластера, используя минимаксный подход? Мой уровень знаний по кластеризации очень прост, поэтому в данный момент я просто пытаюсь понять, как сравнить два разных подхода к кластеризации.
Целениус
Не могли бы вы поделиться кодом R для прилагаемой фигуры?
Андрей
@ Андрей Я думаю, это гауссово облако ( x<-rnorm(N);rnorm(N)->y), разделенное на 3 части по r (одна из которых удалена).
Я не знаю практического алгоритма, который бы соответствовал этому критерию качества. Вы, вероятно, все еще хотите использовать K-Means et al. Но если вышеприведенная мера не работает, вы знаете, что данные, которые вы просматриваете, не подходят (пока!) Для этого алгоритма.
Bayerj
@ Андрей Я не использую R (исходя из ML, а не из статистики :), но то, что предлагает mbq, кажется хорошим.
Bayerj