Как вы сравниваете "сходство" между двумя дендрограммами (в R)?

У меня есть две дендрограммы, которые я хочу сравнить друг с другом, чтобы узнать, как они "похожи". Но я не знаю ни одного метода для этого (не говоря уже о коде для его реализации, скажем, в R).

Любые выводы?

ОБНОВЛЕНИЕ (2014-09-13):

Спрашивая этот вопрос, я написал R-пакет под названием dendextend, для визуализации, манипуляции и сравнения дендрограмма. Этот пакет находится на CRAN и поставляется с подробной виньеткой. Он включает в себя такие функции, как cor_cophenetic, cor_bakers_gamma и Bk/Bk_plot. Также как функция tanglegram для визуального сравнения двух деревьев.

Ответ 1

Сравнение дендрограмм не совсем то же самое, что сравнение иерархических кластеров, потому что первое включает в себя длины ветвей, а также расщепления, но я также думаю, что хорошее начало. Я бы посоветовал вам прочитать E. B. Fowlkes и C. L. Mallows (1983). "Метод сравнения двух иерархических кластеров". Журнал Американской статистической ассоциации 78 (383): 553-584 (ссылка).

Их подход основан на разрезании деревьев на каждом уровне k, получении меры Bk, которая сравнивает группировки в k кластеров, а затем изучает графики Bk vs k. Мера Bk основана на рассмотрении пар объектов и наблюдении, попадают ли они в один и тот же кластер или нет.

Я уверен, что можно написать код на основе этого метода, но сначала нам нужно знать, как дендрограммы представлены в R.

Ответ 2

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

Ответ 3

посмотрите эту страницу:

У меня также есть аналогичный вопрос здесь

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

РЕДАКТИРОВАТЬ на 2014,9,18:  Функция cophenetic в пакете stats способна вычислять матрицу разнородности. и корреляция может быть рассчитана с использованием функции cor. поскольку @Tal указал, что функция as.dendrogram возвращает дерево с другим порядком, что приведет к неправильным результатам, если мы вычислим корреляцию, основанную на результатах дендрограммы. Как показано в примере функции cor_cophenetic в пакете dendextend:

set.seed(23235)
ss <- sample(1:150, 10 )
hc1 <- iris[ss,-5] %>% dist %>% hclust("com")
hc2 <- iris[ss,-5] %>% dist %>% hclust("single")
dend1 <- as.dendrogram(hc1)
dend2 <- as.dendrogram(hc2)
# cutree(dend1)
cophenetic(hc1)
cophenetic(hc2)
# notice how the dist matrix for the dendrograms have different orders:
cophenetic(dend1)
cophenetic(dend2)
cor(cophenetic(hc1), cophenetic(hc2)) # 0.874
cor(cophenetic(dend1), cophenetic(dend2)) # 0.16
# the difference is becasue the order of the distance table in the case of
# stats:::cophenetic.dendrogram will change between dendrograms!

Ответ 4

Если у вас есть доступ к базовой матрице расстояний, которая генерирует каждую дендрограмму (вы, вероятно, делаете, если генерируете дендрограммы в R), не могли бы вы просто использовать корреляцию между соответствующими значениями двух матриц? Я знаю, что это не касается буквы того, что вы просили, но это хорошее решение в духе того, что вы просили.

Ответ 5

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

Ответ 6

В сообществе филогенетиков имеется богатая литература для метрик расстояния деревьев, которая, по-видимому, игнорируется с точки зрения компьютерной науки. См. dist.topo пакета ape для двух метрик расстояния дерева и нескольких ссылок (Penny and Hardy 1985, Kuhner and Felsenstein 1994), который рассматривает сходство разделов дерева, а также показатель Робинсона-Фулда, который имеет реализацию R в phangorn.

Одна из проблем заключается в том, что эти метрики не имеют фиксированного масштаба, поэтому они полезны только в случаях: 1) сравнения дерева или 2) сравнения с некоторой исходной базой, возможно, через перестановки, аналогичные тому, что Таль сделал с Baker Gamma в своем фантастическом пакете dendextend.

Если у вас есть объекты hclust или dendrogram, созданные из иерархической кластеризации R, использование as.phylo из пакета ape преобразует ваши дендрограммы в филогенетические деревья для использования в этих функциях.