Визуализация данных
June 28

Красим с помощью R кластеры дерева иерархической кластеризации

Выделим в дереве иерархической кластеризации кластеры и красиво их раскрасим.


Результат кластеризации

hc <- hclust(dist, method="complete")

преобразуем в дендрограмму

dend.c <- as.dendrogram(hc)

Рисуем дерево

plot(hc)

и рисуем дендрограмму

plot(dend.c)

Дендрограмма выглядит более аккуратной.

В построенном дереве выделяютя кластеры: три явных, остальные проявляются по мере спуска.

Красим кластеры

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

Палитра

Палитру сгенерируем при помощи библиотеки paletteer.

library(paletteer)

Палитра бывает трех типов: расходящаяся непрерывная, последовательная непрерывная и дискретная. (Не ручаюсь за точность перевода; в оригинале: diverging, sequential, discrete.)

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

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

Дискретная палитра состоит из фиксированного числа цветов. Она используется для визуализации категориальных данных.

Для выделения кластеров используем дискретную категориальную палитру.

Палитру выберем из галереи.

cols <- paletteer_d("MetBrewer::Austria")
cols <- paletteer_d("PrettyCols::Bold")

И начнем красить кластеры.

plot( color_branches(dend, k=num.clusters, col=cols) )

Complete linkage

Начнем со связности "complete linkage" и 5, 7, 9 кластеров.

plot( color_branches(dend.c, k=5, col=cols) )
5 кластеров
7 кластеров
9 кластеров

ward.D

Теперь посмотрим на связность "ward.D".

dend.w <- as.dendrogram( hclust(dist_matrix, method = "ward.D") )

Обрежем на картинках верх, так как он очень высокий и покрасим 9 и 11 кластеров.

9 клатеров

Хочется еще больше кластеров.

11 кластеров

ward.D2

А теперь изучим связность "ward.D2".

dend.w2 <- as.dendrogram( hclust(dist_matrix, method = "ward.D2") )
9 кластеров
11 кластеров
21 кластер

21 кластер

Остановимся на 21 кластере. Посмотрим, как они выглядят на трех сгенерированных деревьях.

complete
ward.D
ward.D2

Красиво.

Далее можно нареpать дендрограммы на кластеры.