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

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

Есть зацепки?

ОБНОВЛЕНИЕ (13 сентября 2014 г.):

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


person Tal Galili    schedule 07.02.2010    source источник
comment
:: смотрит дендрограмму :: Теперь мне любопытно. Какие показатели существуют для таких сравнений в первую очередь?   -  person dmckee --- ex-moderator kitten    schedule 08.02.2010
comment
Вы уверены, что хотите это сделать? Дендрограммы - это просто представление данных. Я думаю, что сравнение (напрямую) данных, разделенных на эти две дендрограммы, было бы более информативным.   -  person doug    schedule 16.02.2010


Ответы (6)


Сравнение дендрограмм - это не совсем то же самое, что сравнение иерархических кластеров, потому что первое включает длину ветвей, а также разбиения, но я также думаю, что это хорошее начало. Я предлагаю вам прочитать Э. Б. Фаулкса и К. Л. Мэллоуз (1983). «Метод сравнения двух иерархических кластеров». Журнал Американской статистической ассоциации 78 (383): 553–584 (ссылка).

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

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

person Aniko    schedule 08.02.2010
comment
Это ОЧЕНЬ помогло, Анико - спасибо! Я буду читать дальше. - person Tal Galili; 08.02.2010
comment
Уважаемая Анико! С тех пор, как я начал эту тему, я написал пакет R под названием dendextend с несколькими функциями для сравнения дендрограмм. Официально: cor_cophenetic, cor_bakers_gamma и Bk / Bk_plot. В пакете также есть подробное описание этих функций. - person Tal Galili; 13.09.2014
comment
Ссылка на виньетку: cran.r-project.org/ Интернет / пакеты / dendextend / vignettes / - person Tal Galili; 13.09.2014

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

person Paul    schedule 08.02.2010
comment
Привет, Пол, Спасибо за ответ, прочитаю позже. Спасибо таль - person Tal Galili; 08.02.2010

взгляните на эту страницу:

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

Кажется, мы можем использовать кофенетическую корреляцию, чтобы измерить сходство между двумя дендрограммами. Но, похоже, в настоящее время в 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!
person pengchy    schedule 12.09.2014
comment
Уважаемый @pengchy, такая функция есть в R. Это функция cor_cophenetic из пакета dendextend. - person Tal Galili; 13.09.2014

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

person dsimcha    schedule 07.02.2010
comment
Привет dsimcha, Спасибо за идею. В моей конкретной ситуации у меня есть матрица расстояний только для одного из двух. Так что ваше решение неприменимо. Но еще раз спасибо! - person Tal Galili; 08.02.2010

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

person kc2001    schedule 14.05.2011

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

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

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

person jayelm    schedule 27.06.2016