Как объединить результаты кластеризации для разных подходов кластеризации? - PullRequest
0 голосов
/ 15 февраля 2019

Проблема: Мне кажется, что фундаментальное свойство метода кластеризации c() заключается в том, можем ли мы объединить результаты c(A) и c(B) с помощью некоторой функции f() двух кластеризаций втаким образом, нам не нужно снова применять полную кластеризацию c(A+B), а вместо этого делать f(c(A),c(B)) и все равно в итоге получить тот же результат:

c(A+B) == f(c(A),c(B))

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

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


Пример: В данный момент я думаю о DBSCAN, который должен быть детерминированным, если я позволю пограничным точкам одновременно принадлежать нескольким кластерам (без их подключения):

  1. Одна точка достижима из другой точки, если она находится в ее окрестности eps
  2. Точка ядра - это точка, по крайней мере, достижимая minPts
  3. edge проходит от каждой базовой точки ко всем достижимым точкам
  4. Каждая точка с входящей ребром из базовой точки находится в том же кластере, что и последняя

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

1 Ответ

0 голосов
/ 16 февраля 2019

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

Точно для DBSCAN, у вас есть проблема, что свойство базовой точки может измениться при добавлении данных.Таким образом, c (A + B), вероятно, имеет точки ядра, которые не были ядрами ни в A, ни в B. Это может привести к слиянию кластеров.Предполагается, что f () необходимо повторно проверить все точки данных, т. е. повторно запустить DBSCAN.Хотя вы можете использовать, чтобы основные точки подмножества были ядром всего набора, вам все равно нужно будет найти соседей и недостающие основные точки.

...