В теории кластерного анализа алгоритм цепочки ближайших соседей — это алгоритм , который может ускорить несколько методов агломеративной иерархической кластеризации . Это методы, которые берут набор точек в качестве входных данных и создают иерархию кластеров точек путем многократного слияния пар меньших кластеров для формирования более крупных кластеров. Методы кластеризации, для которых может использоваться алгоритм цепочки ближайших соседей, включают метод Уорда , кластеризацию с полной связью и кластеризацию с одиночной связью ; все они работают путем многократного слияния двух ближайших кластеров, но используют разные определения расстояния между кластерами. Расстояния кластеров, для которых работает алгоритм цепочки ближайших соседей, называются сокращаемыми и характеризуются простым неравенством между определенными расстояниями кластеров.
Основная идея алгоритма заключается в поиске пар кластеров для слияния путем следования по путям в графе ближайших соседей кластеров. Каждый такой путь в конечном итоге заканчивается парой кластеров, которые являются ближайшими соседями друг друга, и алгоритм выбирает эту пару кластеров в качестве пары для слияния. Чтобы сэкономить работу, повторно используя как можно больше каждого пути, алгоритм использует структуру данных стека для отслеживания каждого пути, которому он следует. Следуя по путям таким образом, алгоритм цепочки ближайших соседей объединяет свои кластеры в другом порядке, чем методы, которые всегда находят и объединяют ближайшую пару кластеров. Однако, несмотря на это различие, он всегда генерирует одну и ту же иерархию кластеров.
Алгоритм цепочки ближайших соседей строит кластеризацию за время, пропорциональное квадрату числа точек, подлежащих кластеризации. Это также пропорционально размеру его входных данных, когда входные данные предоставляются в виде явной матрицы расстояний . Алгоритм использует объем памяти, пропорциональный количеству точек, когда он используется для методов кластеризации, таких как метод Уорда, которые позволяют вычислять расстояние между кластерами за постоянное время. Однако для некоторых других методов кластеризации он использует больший объем памяти во вспомогательной структуре данных, с помощью которой он отслеживает расстояния между парами кластеров.
Многие проблемы в анализе данных касаются кластеризации , группировки элементов данных в кластеры тесно связанных элементов. Иерархическая кластеризация — это версия кластерного анализа, в которой кластеры образуют иерархию или древовидную структуру, а не строгое разбиение элементов данных. В некоторых случаях этот тип кластеризации может быть выполнен как способ выполнения кластерного анализа в нескольких различных масштабах одновременно. В других случаях данные, которые должны быть проанализированы, естественно имеют неизвестную древовидную структуру, и цель состоит в том, чтобы восстановить эту структуру путем выполнения анализа. Оба эти вида анализа можно увидеть, например, в применении иерархической кластеризации к биологической таксономии . В этом приложении различные живые существа группируются в кластеры в различных масштабах или уровнях сходства ( вид, род, семейство и т. д. ). Этот анализ одновременно дает многомасштабную группировку организмов настоящего века и направлен на точное восстановление процесса ветвления или эволюционного дерева , которое в прошлые века произвело эти организмы. [1]
Входные данные для задачи кластеризации состоят из набора точек. [2] Кластер — это любое правильное подмножество точек, а иерархическая кластеризация — это максимальное семейство кластеров со свойством, что любые два кластера в семействе либо вложены, либо не пересекаются . В качестве альтернативы иерархическая кластеризация может быть представлена в виде бинарного дерева с точками на его листьях; кластеры кластеризации — это наборы точек в поддеревьях, спускающихся от каждого узла дерева. [3]
В методах агломеративной кластеризации входные данные также включают функцию расстояния, определенную на точках, или численную меру их несходства. Расстояние или несходство должны быть симметричными: расстояние между двумя точками не зависит от того, какая из них рассматривается первой. Однако, в отличие от расстояний в метрическом пространстве , оно не обязательно должно удовлетворять неравенству треугольника . [2] Затем функция несходства расширяется с пар точек на пары кластеров. Различные методы кластеризации выполняют это расширение по-разному. Например, в методе кластеризации с одной связью расстояние между двумя кластерами определяется как минимальное расстояние между любыми двумя точками из каждого кластера. Учитывая это расстояние между кластерами, иерархическая кластеризация может быть определена жадным алгоритмом , который изначально помещает каждую точку в свой собственный кластер из одной точки, а затем многократно формирует новый кластер путем слияния ближайшей пары кластеров. [2]
Узким местом этого жадного алгоритма является подзадача поиска двух кластеров для слияния на каждом шаге. Известные методы многократного нахождения ближайшей пары кластеров в динамическом наборе кластеров либо требуют сверхлинейного пространства для поддержания структуры данных , которая может быстро находить ближайшие пары, либо они тратят больше линейного времени на нахождение каждой ближайшей пары. [4] [5] Алгоритм цепочки ближайших соседей использует меньшее количество времени и пространства, чем жадный алгоритм, объединяя пары кластеров в другом порядке. Таким образом, он избегает проблемы многократного нахождения ближайших пар. Тем не менее, для многих типов задач кластеризации можно гарантированно получить ту же иерархическую кластеризацию, что и жадный алгоритм, несмотря на другой порядок слияния. [2]
Интуитивно понятно, что алгоритм цепочки ближайших соседей многократно следует цепочке кластеров A → B → C → ... , где каждый кластер является ближайшим соседом предыдущего, пока не будет достигнута пара кластеров, которые являются ближайшими соседями друг друга. [2]
Более подробно алгоритм выполняет следующие шаги: [2] [6]
Когда возможно, что один кластер может иметь несколько равных ближайших соседей, то алгоритм требует последовательного правила разрешения конфликтов. Например, можно назначить произвольные индексные номера всем кластерам, а затем выбрать (среди равных ближайших соседей) тот, у которого наименьший индексный номер. Это правило предотвращает определенные виды непоследовательного поведения в алгоритме; например, без такого правила соседний кластер D может оказаться в стеке раньше, чем предшественник C. [7 ]
Каждая итерация цикла выполняет один поиск ближайшего соседа кластера и либо добавляет один кластер в стек, либо удаляет из него два кластера. Каждый кластер добавляется в стек только один раз, потому что при повторном удалении он немедленно становится неактивным и объединяется. Всего в стек добавляется 2 n − 2 кластера: n одноточечных кластеров в исходном наборе и n − 2 внутренних узла, отличных от корня, в двоичном дереве, представляющем кластеризацию. Таким образом, алгоритм выполняет 2 n − 2 итераций push и n − 1 итераций pop. [2]
Каждая из этих итераций может тратить время на сканирование n − 1 межкластерных расстояний для поиска ближайшего соседа. Таким образом, общее количество вычислений расстояний, которые он делает, меньше 3 n 2 . По той же причине общее время, используемое алгоритмом вне этих вычислений расстояний, составляет O( n 2 ) . [2]
Поскольку единственной структурой данных является набор активных кластеров и стек, содержащий подмножество активных кластеров, требуемое пространство линейно зависит от количества входных точек. [2]
Для того чтобы алгоритм был правильным, необходимо, чтобы извлечение и слияние двух верхних кластеров из стека алгоритма сохраняли свойство, что оставшиеся кластеры в стеке образуют цепочку ближайших соседей. Кроме того, необходимо, чтобы все кластеры, созданные в ходе алгоритма, были такими же, как кластеры, созданные жадным алгоритмом , который всегда объединяет два ближайших кластера, даже если жадный алгоритм в общем случае будет выполнять свои слияния в другом порядке, чем алгоритм цепочки ближайших соседей. Оба эти свойства зависят от конкретного выбора способа измерения расстояния между кластерами. [2]
Корректность этого алгоритма основана на свойстве его функции расстояния, называемом сводимостью . Это свойство было выявлено Брюнооге (1977) в связи с более ранним методом кластеризации, который использовал пары взаимных ближайших соседей, но не цепочки ближайших соседей. [8] Функция расстояния d на кластерах определяется как сводимая, если для каждых трех кластеров A , B и C в жадной иерархической кластеризации, таких, что A и B являются взаимными ближайшими соседями, выполняется следующее неравенство: [2]
Если функция расстояния обладает свойством сводимости, то слияние двух кластеров C и D может вызвать изменение ближайшего соседа E только в том случае, если этот ближайший сосед был одним из C и D. Это имеет два важных последствия для алгоритма цепочки ближайших соседей. Во-первых, с помощью этого свойства можно показать, что на каждом шаге алгоритма кластеры в стеке S образуют допустимую цепочку ближайших соседей, поскольку всякий раз, когда ближайший сосед становится недействительным, он немедленно удаляется из стека. [2]
Во-вторых, и что еще важнее, из этого свойства следует, что если два кластера C и D оба принадлежат к жадной иерархической кластеризации и являются взаимными ближайшими соседями в любой момент времени, то они будут объединены жадной кластеризацией, поскольку они должны оставаться взаимными ближайшими соседями до тех пор, пока не будут объединены. Из этого следует, что каждая пара взаимных ближайших соседей, найденная алгоритмом цепочки ближайших соседей, также является парой кластеров, найденных жадным алгоритмом, и, следовательно, алгоритм цепочки ближайших соседей вычисляет точно такую же кластеризацию (хотя и в другом порядке), как и жадный алгоритм. [2]
Метод Уорда — это метод агломеративной кластеризации, в котором различие между двумя кластерами A и B измеряется величиной, на которую объединение двух кластеров в один более крупный кластер увеличит среднеквадратичное расстояние точки до ее кластерного центроида . [9] То есть,
Выраженная через центроид и мощность двух кластеров, она имеет более простую формулу:
позволяя вычислять его за постоянное время на расчет расстояния. Хотя метод Уорда очень чувствителен к выбросам , он является наиболее популярной вариацией агломеративной кластеризации как из-за круглой формы кластеров, которые он обычно формирует, так и из-за его принципиального определения как кластеризации, которая на каждом шаге имеет наименьшую дисперсию в пределах своих кластеров. [10] В качестве альтернативы это расстояние можно рассматривать как разницу в стоимости k-средних между новым кластером и двумя старыми кластерами.
Расстояние Уорда также может быть сокращено, что можно легко увидеть из другой формулы для расчета расстояния объединенного кластера из расстояний кластеров, из которых он был объединен: [9] [11]
Формулы обновления расстояния, такие как эта, называются формулами "типа Ланса–Вильямса" в честь работы Ланса и Уильямса (1967). Если — наименьшее из трех расстояний в правой части (что обязательно было бы верно, если бы и были взаимными ближайшими соседями), то отрицательный вклад его члена отменяется коэффициентом одного из двух других членов, оставляя положительное значение, добавленное к средневзвешенному значению двух других расстояний. Таким образом, объединенное расстояние всегда по крайней мере так же велико, как минимум и , что соответствует определению сводимости.
Поскольку расстояние Уорда является сокращаемым, алгоритм цепочки ближайших соседей, использующий расстояние Уорда, вычисляет точно такую же кластеризацию, как и стандартный жадный алгоритм. Для n точек в евклидовом пространстве постоянной размерности требуется время O ( n 2 ) и пространство O ( n ) . [6]
Кластеризация с полной связью или кластеризация с дальним соседом — это форма агломеративной кластеризации, которая определяет несходство между кластерами как максимальное расстояние между любыми двумя точками из двух кластеров. Аналогично, кластеризация со средним расстоянием использует среднее попарное расстояние в качестве несходства. Как и расстояние Уорда, эти две формы кластеризации подчиняются формуле типа Ланса–Вильямса. При полной связи расстояние является максимальным из двух расстояний и . Следовательно, оно по крайней мере равно минимальному из этих двух расстояний, что является требованием сокращаемости. Для среднего расстояния — это просто средневзвешенное значение расстояний и . Опять же, это по крайней мере столько же, сколько минимальное из двух расстояний. Таким образом, в обоих этих случаях расстояние сокращаемо. [9] [11]
В отличие от метода Уорда, эти две формы кластеризации не имеют метода постоянного времени для вычисления расстояний между парами кластеров. Вместо этого можно поддерживать массив расстояний между всеми парами кластеров. Всякий раз, когда два кластера объединяются, формулу можно использовать для вычисления расстояния между объединенным кластером и всеми другими кластерами. Поддержание этого массива в ходе алгоритма кластеризации занимает время и пространство O ( n 2 ) . Алгоритм цепочки ближайших соседей может использоваться в сочетании с этим массивом расстояний, чтобы найти ту же кластеризацию, что и жадный алгоритм для этих случаев. Его общее время и пространство, используя этот массив, также составляют O ( n 2 ) . [12]
Те же самые временные и пространственные ограничения O ( n 2 ) могут быть достигнуты и другим способом, с помощью техники, которая накладывает структуру данных очереди приоритетов на основе квадродерева поверх матрицы расстояний и использует ее для выполнения стандартного жадного алгоритма кластеризации. Этот метод квадродерева является более общим, поскольку он работает даже для методов кластеризации, которые не являются редуцируемыми. [4] Однако алгоритм цепочки ближайших соседей соответствует своим временным и пространственным ограничениям, используя более простые структуры данных. [12]
В кластеризации с одиночной связью или кластеризации по ближайшему соседу, старейшей форме агломеративной иерархической кластеризации, [11] различие между кластерами измеряется как минимальное расстояние между любыми двумя точками из двух кластеров. С этим различием,
удовлетворяя требованию сводимости как равенство, а не неравенство. (Односвязность также подчиняется формуле Лэнса–Вильямса [9] [11], но с отрицательным коэффициентом, из которого сложнее доказать сводимость.)
Как и в случае с полной связью и средним расстоянием, сложность вычисления расстояний кластеров приводит к тому, что алгоритму цепочки ближайших соседей требуется время и пространство O ( n 2 ) для вычисления кластеризации с одной связью. Однако кластеризация с одной связью может быть найдена более эффективно с помощью альтернативного алгоритма, который вычисляет минимальное остовное дерево входных расстояний с помощью алгоритма Прима , а затем сортирует ребра минимального остовного дерева и использует этот отсортированный список для управления слиянием пар кластеров. В алгоритме Прима каждое последующее ребро минимального остовного дерева может быть найдено последовательным поиском по несортированному списку наименьших ребер, соединяющих частично построенное дерево с каждой дополнительной вершиной. Этот выбор экономит время, которое алгоритм в противном случае потратил бы на корректировку весов вершин в своей очереди приоритетов . Использование алгоритма Прима таким образом потребовало бы времени O ( n 2 ) и пространства O ( n ) , что соответствует наилучшим границам, которые могут быть достигнуты с помощью алгоритма цепочки ближайших соседей для расстояний с постоянным временем вычислений. [13]
Другой мерой расстояния, обычно используемой в агломеративной кластеризации, является расстояние между центроидами пар кластеров, также известное как метод взвешенной группы. [9] [11] Его можно легко вычислить за постоянное время на расчет расстояния. Однако он не является сокращаемым. Например, если входные данные образуют набор из трех точек равностороннего треугольника, объединение двух из этих точек в более крупный кластер приводит к уменьшению расстояния между кластерами, что является нарушением сокращаемости. Поэтому алгоритм цепочки ближайших соседей не обязательно найдет ту же кластеризацию, что и жадный алгоритм. Тем не менее, Муртаг (1983) пишет, что алгоритм цепочки ближайших соседей обеспечивает «хорошую эвристику» для метода центроидов. [2] Другой алгоритм Дэя и Эдельсбруннера (1984) можно использовать для поиска жадной кластеризации за время O ( n 2 ) для этой меры расстояния. [5]
Представление выше явно запрещает расстояния, чувствительные к порядку слияния. Действительно, разрешение таких расстояний может вызвать проблемы. В частности, существуют кластерные расстояния, чувствительные к порядку, которые удовлетворяют сводимости, но для которых вышеуказанный алгоритм вернет иерархию с субоптимальными затратами. Поэтому, когда кластерные расстояния определяются рекурсивной формулой (как некоторые из рассмотренных выше), необходимо следить за тем, чтобы они не использовали иерархию способом, чувствительным к порядку слияния. [14]
Алгоритм цепочки ближайших соседей был разработан и реализован в 1982 году Жаном-Полем Бензекри [15] и Дж. Хуаном. [16] Они основали этот алгоритм на более ранних методах, которые строили иерархические кластеризации с использованием пар взаимных ближайших соседей без использования цепочек ближайших соседей. [8] [17]