Иерархическая кластеризация группирует данные в различных шкалах путем создания дерева или dendrogram кластера. Дерево не является единичным набором кластеров, а скорее многоуровневой иерархией, где кластеры на одном уровне объединяются как кластеры на следующем уровне. Это позволяет вам определить уровень или шкалу кластеризации, наиболее подходящий для вашего приложения. Функция clusterdata
поддерживает агломеративную кластеризацию и выполняет для вас все необходимые шаги. Он включает в себя pdist
, linkage
, и cluster
функций, которые можно использовать отдельно для более детального анализа. dendrogram
графики функций дерева кластеров.
Чтобы выполнить агломерационный иерархический кластерный анализ на наборе данных с помощью функций Statistics and Machine Learning Toolbox™, выполните следующую процедуру:
Найдите подобие или различие между каждой парой объектов в наборе данных. На этом шаге вы вычисляете расстояние между объектами, используя pdist
функция. The pdist
функция поддерживает много различных способов вычислить это измерение. Смотрите Измерения Подобия для получения дополнительной информации.
Сгруппировать объекты в двоичное иерархическое дерево кластеров. На этом шаге вы связываете пары объектов, которые находятся в непосредственной близости, используя linkage
функция. The linkage
функция использует информацию о расстоянии, сгенерированную на шаге 1, чтобы определить близость объектов друг к другу. Когда объекты спарены в двоичные кластеры, вновь сформированные кластеры сгруппированы в большие кластеры, пока не сформировано иерархическое дерево. Для получения дополнительной информации см. редактирования».
Определите, где срезать иерархическое дерево в кластеры. На этом шаге вы используете cluster
функция для обрезки ветвей в нижней части иерархического дерева и назначения всех объектов под каждым вырезом одному кластеру. Это создает раздел данных. The cluster
функция может создать эти кластеры путем обнаружения естественных группировок в иерархическом дереве или путем отсечения иерархического дерева в произвольной точке.
В следующих разделах приведены дополнительные сведения о каждом из этих шагов.
Примечание
Функция clusterdata
выполняет все необходимые шаги для вас. Вам не нужно выполнять pdist
, linkage
, или cluster
функционирует отдельно.
Вы используете pdist
функция для вычисления расстояния между каждой парой объектов в наборе данных. Для набора данных, состоящего из m объектов, в наборе данных есть m * (m - 1 )/2 пары. Результат этого расчета обычно известен как матрица расстояния или различия.
Существует много способов вычислить эту информацию о расстоянии. По умолчанию в pdist
функция вычисляет евклидово расстояние между объектами; однако можно задать один из нескольких других опций. Посмотрите pdist
для получения дополнительной информации.
Примечание
Можно, опционально, нормализовать значения в наборе данных перед вычислением информации о расстоянии. В наборе данных реального мира переменные могут быть измерены относительно различных шкал. Например, одна переменная может измерить счета теста Intelligence Quotient (IQ), а другая переменная может измерить окружность головы. Эти расхождения могут искажать вычисления близости. Использование zscore
можно преобразовать все значения в наборе данных в ту же пропорциональную шкалу. Посмотрите zscore
для получения дополнительной информации.
Для примера рассмотрим набор данных, X
, состоящий из пяти объектов, где каждый объект является набором координат x, y.
1:1 объекта, 2
Объект 2: 2.5, 4.5
3:2 объекта, 2
Объектные 4:4, 1,5
Объектные 5:4, 2,5
Можно задать этот набор данных как матрицу
rng default; % For reproducibility X = [1 2;2.5 4.5;2 2;4 1.5;... 4 2.5];
и передайте его в pdist
. The pdist
функция вычисляет расстояние между объектом 1 и объектом 2, объектом 1 и объектом 3 и так далее, пока не будут вычислены расстояния между всеми парами. Следующий рисунок строит графики этих объектов. Евклидово расстояние между объектом 2 и объектом 3 показано, чтобы проиллюстрировать одну интерпретацию расстояния.
pdist
функция возвращает эту информацию о расстоянии в векторе, Y
, где каждый элемент содержит расстояние между парой объектов.
Y = pdist(X)
Y = 1×10
2.9155 1.0000 3.0414 3.0414 2.5495 3.3541 2.5000 2.0616 2.0616 1.0000
Чтобы облегчить просмотр связи между информацией о расстоянии, сгенерированной pdist
и объекты в исходном наборе данных, можно переформатировать вектор расстояния в матрицу, используя squareform
функция. В этой матрице элемент i, j соответствует расстоянию между объектом i и объектом j в исходном наборе данных. В следующем примере элемент 1,1 представляет расстояние между объектом 1 и самим собой (что равняется нулю). Элемент 1,2 представляет расстояние между объектом 1 и объектом 2 и так далее.
squareform(Y)
ans = 5×5
0 2.9155 1.0000 3.0414 3.0414
2.9155 0 2.5495 3.3541 2.5000
1.0000 2.5495 0 2.0616 2.0616
3.0414 3.3541 2.0616 0 1.0000
3.0414 2.5000 2.0616 1.0000 0
После вычисления близости между объектами в наборе данных можно определить, как объекты в наборе данных должны быть сгруппированы в кластеры, используя linkage
функция. The linkage
функция принимает информацию о расстоянии, сгенерированную pdist
и связывает пары объектов, которые близки друг к другу, в двоичные кластеры (кластеры, состоящие из двух объектов). The linkage
затем функция связывает эти вновь сформированные кластеры друг с другом и с другими объектами, чтобы создать большие кластеры, пока все объекты в исходном наборе данных не будут связаны вместе в иерархическом дереве.
Для примера, учитывая вектор расстояния Y
сгенерирован pdist
из выборочных множеств x данных и y-координат, linkage
функция генерирует иерархическое дерево кластеров, возвращая информацию о редактировании в матрице Z
.
Z = linkage(Y)
Z = 4×3
4.0000 5.0000 1.0000
1.0000 3.0000 1.0000
6.0000 7.0000 2.0616
2.0000 8.0000 2.5000
В этом выходе каждая строка определяет ссылку между объектами или кластерами. Первые два столбца определяют объекты, которые были связаны. Третий столбец содержит расстояние между этими объектами. Для множества x выборочных данных и y-координат linkage
функция начинается путем группировки объектов 4 и 5, которые имеют самую близкую близость (значение расстояния = 1,0000). The linkage
функция продолжается путем группировки объектов 1 и 3, которые также имеют значение расстояния 1,0000.
Третья строка указывает, что linkage
сгруппированные по функциям объекты 6 и 7. Если исходный набор выборочных данных содержал только пять объектов, что такое объекты 6 и 7? Объект 6 является вновь сформированным двоичным кластером, созданным группировкой объектов 4 и 5. Когда linkage
функция группирует два объекта в новый кластер, она должна назначить кластеру уникальное значение индекса, начиная со значения m + 1, где m - количество объектов в исходном наборе данных. (Значения от 1 до m уже используются исходным набором данных.) Точно так же объект 7 является кластером, образованным группировками объектов 1 и 3.
linkage
использует расстояния, чтобы определить порядок, в котором он кластеризует объекты. Вектор расстояния Y
содержит расстояния между исходными объектами с 1 по 5. Но редактирование должно также быть способно определять расстояния с участием кластеров, которые оно создает, таких как объекты 6 и 7. По умолчанию linkage
использует метод, известный как одно редактирование. Однако существует ряд различных методов. См. linkage
Страница с описанием для получения дополнительной информации.
Как конечный кластер, linkage
сгруппированный по функциям объект 8, вновь сформированный кластер, состоящий из объектов 6 и 7, с объектом 2 из исходного набора данных. Следующий рисунок графически иллюстрирует способ linkage
группирует объекты в иерархию кластеров.
Иерархическое двоичное дерево кластера, созданное linkage
функция наиболее легко понимается при просмотре графически. Функция dendrogram
строит график дерева следующим образом.
dendrogram(Z)
На рисунке цифры вдоль горизонтальной оси представляют индексы объектов в исходном наборе данных. Ссылки между объектами представлены в виде перевернутых U-образных линий. Высота U указывает расстояние между объектами. Для примера ссылка, представляющая кластер, содержащий объекты 1 и 3, имеет высоту 1. Ссылка, представляющая кластер, который группирует объект 2 вместе с объектами 1, 3, 4 и 5 (которые уже кластеризованы как объект 8), имеет высоту 2,5. Высота представляет расстояние linkage
вычисляет между объектами 2 и 8. Для получения дополнительной информации о создании схемы дендрограммы смотрите dendrogram
страница с описанием.
После связывания объектов в наборе данных в иерархическое дерево кластеров может потребоваться проверить, что расстояния (то есть высоты) в дереве точно отражают исходные расстояния. В сложение можно хотеть исследовать естественные деления, которые существуют между ссылками между объектами. Statistics and Machine Learning Toolbox доступны для обеих этих задач, как описано в следующих разделах.
В иерархическом дереве кластеров любые два объекта в исходном наборе данных в конечном счете связываются вместе на некотором уровне. Высота ссылки представляет расстояние между двумя кластерами, которые содержат эти два объекта. Эта высота известна как копенетическое расстояние между двумя объектами. Один из способов измерения того, насколько хорошо дерево кластера сгенерировано linkage
функция отражает ваши данные, чтобы сравнить кофенетические расстояния с исходными данными о расстоянии, сгенерированными pdist
функция. Если кластеризация действительна, связывание объектов в дереве кластеров должно иметь сильную корреляцию с расстояниями между объектами в векторе расстояния. cophenet
функция сравнивает эти два множеств значений и вычисляет их корреляцию, возвращая значение, называемое кофенетическим коэффициентом корреляции. Чем ближе значение коэффициента копенетической корреляции к 1, тем точнее решение кластеризации отражает ваши данные.
Можно использовать кофенетический коэффициент корреляции, чтобы сравнить результаты кластеризации того же набора данных с помощью различных методов вычисления расстояния или алгоритмов кластеризации. Для примера можно использовать cophenet
функция для вычисления кластеров, созданных для набора выборочных данных.
c = cophenet(Z,Y)
c = 0.8615
Z
- матрица, выводимая linkage
функции и Y
- вектор расстояния, выходной параметр pdist
функция.
Выполните pdist
снова на том же наборе данных, на этот раз задав метрику городского блока. После запуска linkage
функция на этом новом pdist
выход с использованием метода среднего редактирования, вызов cophenet
для оценки решения кластеризации.
Y = pdist(X,'cityblock'); Z = linkage(Y,'average'); c = cophenet(Z,Y)
c = 0.9047
Кофенетический коэффициент корреляции показывает, что использование другого метода расстояния и редактирования создает дерево, которое представляет исходные расстояния немного лучше.
Один из способов определить естественные кластерные деления в наборе данных - сравнить высоту каждой ссылки в дереве кластеров с высотами соседних ссылок под ним в дереве.
Ссылка, которая имеет примерно ту же высоту, что и ссылки, расположенные под ней, указывает на отсутствие различных делений между объектами, соединенными на этом уровне иерархии. Эти ссылки, как говорят, показывают высокий уровень согласованности, потому что расстояние между соединяемыми объектами приблизительно совпадает с расстояниями между содержащимися в них объектами.
С другой стороны, ссылка, высота которого заметно отличается от высоты ссылок под ним, указывает, что объекты, соединенные на этом уровне в дереве кластеров, намного дальше друг от друга, чем их компоненты, когда они были объединены. Эта ссылка, как говорят, несовместима со ссылками под ним.
В кластерном анализе несогласованные ссылки могут указывать границу естественного деления в наборе данных. cluster
функция использует количественную меру несогласованности, чтобы определить, где разбить набор данных на кластеры.
Следующая дендрограмма иллюстрирует несогласованные ссылки. Обратите внимание, что объекты в дендрограмме делятся на две группы, которые соединяются ссылками на гораздо более высоком уровне в дереве. Эти ссылки являются несовместимыми по сравнению со ссылками под ними в иерархии.
Относительная согласованность каждой ссылки в иерархическом дереве кластера может быть количественно определена и выражена как коэффициент несоответствия. Это значение сравнивает высоту ссылки в иерархии кластеров со средней высотой ссылок ниже нее. Ссылки, которые присоединяются к отдельным кластерам, имеют высокий коэффициент несогласованности; ссылки, которые соединяются в неясные кластеры, имеют низкий коэффициент несоответствия.
Чтобы сгенерировать список коэффициентов несоответствия для каждой ссылки в дереве кластера, используйте inconsistent
функция. По умолчанию в inconsistent
функция сравнивает каждую ссылку в иерархии кластеров со смежными ссылками, которые находятся ниже двух уровней в иерархии кластеров. Это называется глубиной сравнения. Можно также задать другие глубины. Объекты в нижней части дерева кластеров, называемые листовыми узлами, которые не имеют других объектов ниже них, имеют коэффициент несогласованности нуля. Кластеры, которые соединяются с двумя листьями, также имеют нулевой коэффициент несогласованности.
Для примера можно использовать inconsistent
функция для вычисления значений несогласованности для ссылок, созданной linkage
функция в редактированиях.
Во-первых, пересчитайте значения расстояния и редактирования с помощью настроек по умолчанию.
Y = pdist(X); Z = linkage(Y);
Далее используйте inconsistent
для вычисления значений несогласованности.
I = inconsistent(Z)
I = 4×4
1.0000 0 1.0000 0
1.0000 0 1.0000 0
1.3539 0.6129 3.0000 1.1547
2.2808 0.3100 2.0000 0.7071
The inconsistent
функция возвращает данные о ссылках в матрице (m-1) -by-4, столбцы которой описаны в следующей таблице.
Столбец | Описание |
---|---|
1 | Среднее значение высот всех ссылок, включенных в расчет |
2 | Стандартное отклонение всех ссылок, включенных в расчет |
3 | Количество ссылок, включенных в расчет |
4 | Коэффициент несогласованности |
В выходе выборки первая строка представляет ссылку между объектами 4 и 5. Этому кластеру присваивается индекс 6 linkage
функция. Поскольку оба 4 и 5 являются листовыми узлами, коэффициент несоответствия для кластера равен нулю. Вторая строка представляет ссылку между объектами 1 и 3, оба из которых также являются листовыми узлами. Этому кластеру присвоен индекс 7 функцией редактирования.
Третья строка оценивает ссылку, которая соединяет эти два кластера, объекты 6 и 7. (Этому новому кластеру назначается индекс 8 в linkage
выход). Столбец 3 указывает, что в вычислении рассматриваются три ссылки: сама ссылка и две ссылки непосредственно под ним в иерархии. Столбец 1 представляет среднее значение высоты этих ссылок. The inconsistent
функция использует информацию о высоте, выводимую linkage
функция для вычисления среднего значения. Столбец 2 представляет стандартное отклонение между ссылками. Последний столбец содержит значение несогласованности для этих ссылок 1.1547. Это - различие между высотой ссылки тока и средним значением, нормированная стандартным отклонением.
(2.0616 - 1.3539) / .6129
ans = 1.1547
Следующий рисунок иллюстрирует ссылки и высоты, включенные в этот расчет.
Примечание
На предыдущем рисунке нижний предел на оси y установлен в 0
для отображения высот ссылок. Чтобы установить нижний предел равным 0
, выберите Axes Properties
в Edit меню щелкните вкладку Y Axis и введите 0
в поле сразу справа от Y Limits.
Строка 4 в выходной матрице описывает ссылку между объектом 8 и объектом 2. Столбец 3 указывает, что в этом вычислении включены две ссылки: сама ссылка и непосредственно под ним в иерархии. Коэффициент несоответствия для этой ссылки 0,7071.
Следующий рисунок иллюстрирует ссылки и высоты, включенные в этот расчет.
После создания иерархического дерева двоичных кластеров можно срезать дерево, чтобы разбить данные на кластеры, используя cluster
функция. The cluster
позволяет создавать кластеры двумя способами, как описано в следующих разделах:
Иерархическое дерево кластеров может естественно разделить данные на отдельные, хорошо разделенные кластеры. Это может быть особенно очевидно в схеме дендрограммы, созданной из данных, где группы объектов плотно упакованы в определенных областях, а не в других. Коэффициент несоответствия ссылок в дереве кластера может идентифицировать эти деления, где сходства между объектами резко изменяются. (Дополнительные сведения о коэффициенте несоответствия см. в разделе «Проверка дерева кластеров».) Вы можете использовать это значение, чтобы определить, где cluster
функция создает контуры кластера.
Для примера, если вы используете cluster
функция для группирования набора выборочных данных в кластеры, задающая порог коэффициента несоответствия 1.2
как значение cutoff
аргумент, cluster
функция группирует все объекты в наборе выборочных данных в один кластер. В этом случае ни одна из ссылок в иерархии кластера не имела коэффициента несоответствия, большего 1.2
.
T = cluster(Z,'cutoff',1.2)
T = 5×1
1
1
1
1
1
The cluster
функция выводит вектор, T
, то есть того же размера, что и исходный набор данных. Каждый элемент в этом векторе содержит номер кластера, в который был помещен соответствующий объект из исходного набора данных.
Если вы снижаете порог коэффициента несоответствия до 0.8
, а cluster
функция разделяет набор выборочных данных на три отдельных кластера.
T = cluster(Z,'cutoff',0.8)
T = 5×1
3
2
3
1
1
Этот выход указывает, что объекты 1 и 3 находятся в одном кластере, объекты 4 и 5 находятся в другом кластере, а объект 2 находится в своем собственном кластере.
Когда кластеры формируются таким образом, значение среза применяется к коэффициенту несоответствия. Эти кластеры могут, но не обязательно, соответствовать горизонтальному срезу через дендрограмму на определенной высоте. Если необходимо, чтобы кластеры соответствовали горизонтальному срезу дендрограммы, можно использовать criterion
опция, чтобы указать, что срез должен основываться на расстоянии, а не на несогласованности, или можно задать количество кластеров непосредственно, как описано в следующем разделе.
Вместо того, чтобы позволить cluster
function создают кластеры, определяемые естественными делениями в наборе данных, можно задать количество кластеров, которые необходимо создать.
Например, можно указать, что вы хотите, чтобы cluster
функция для разбиения набора выборочных данных на два кластера. В этом случае cluster
функция создает один кластер, содержащий объекты 1, 3, 4 и 5, и другой кластер, содержащий объект 2.
T = cluster(Z,'maxclust',2)
T = 5×1
2
1
2
2
2
Чтобы помочь вам визуализировать, как cluster
функция определяет эти кластеры, следующий рисунок показывает дендрограмму иерархического дерева кластеров. Горизонтальная штриховая линия пересекается с двумя линиями дендрограммы, соответствующими настройке 'maxclust'
на 2
. Эти две строки разбивают объекты на два кластера: объекты под левой линией, а именно 1, 3, 4 и 5, принадлежат одному кластеру, в то время как объект под правой линией, а именно 2, принадлежит другому кластеру.
С другой стороны, если вы задаете 'maxclust'
на 3функция кластера группирует объекты 4 и 5 в одном кластере, объекты 1 и 3 во втором кластере и объект 2 в третьем кластере. Следующая команда иллюстрирует это.
T = cluster(Z,'maxclust',3)
T = 5×1
2
3
2
1
1
На этот раз, cluster
функция обрезает иерархию в нижней точке, соответствующей горизонтальной линии, которая пересекает три строки дендрограммы на следующем рисунке.