1 Кластерный анализ

advertisement
1
Кластерный анализ
Автоматическая классификация — основа искусственного интеллекта. Разбиение звездного неба на созвездия — один из примеров, того что нынче
называется кластерным анализом. Типичная задача кластерного анализа
формулируется так: нам дано множество данных, которые можно интерпретировать как точки многомерного пространства и нам нужно разбить
это множество точек на относительно небольшое множество непересекающихся классов, называемых кластерами.
Обычно решение этой задачи начинается с выбора меры близости между
различными точками пространства. Выбор меры близости зависит от специфики данных и мы не будем касаться этого вопроса сегодня. Мы предположим, что этот выбор уже сделан и для каждой пары точек данного множества определено положительное число, выражающее меру близости этой
пары. Например, в качестве меры близости точек плоскости можно рассматривать расстояние между ними. Предполагается, что чем более близки
точки (т. е. чем меньшим числом выражается мера близости между ними)
тем с большим основанием их следует относить к одному кластеру.
В таком случае весьма естественным выглядит следующий подход: выбираем некоторое число ε — порог классификации и считаем, что любая
пара точек, расстояние между которыми не превосходит ε принадлежат
одному и тому же кластеру. Тогда две точки x и y принадлежат одному и
тому же кластеру в том и только случае, когда имеется последовательность
точек x0 , . . . , xk начинающаяся с x0 = x, кончающаяся в xk = y и такая,
что |xi − xi+1 | ≤ ε для любого i. Такую последовательность точек мы будем
называть ε-цепочкой. Выбор порога классификации — дело тонкое. Иногда
нам заранее известно, какое число кластеров должно получиться. В этом
случае порог можно выбрать таким образом, чтобы получилось именно известное заранее количество кластеров.
Оказывается, что и классификацию с данным порогом и классификацию
с заданным количеством кластеров можно проводить весьма эффективными алгоритмами за время O(n2 ), где n — число точек классификации.
Цепное расстояние Пусть для любой пары точек x, y некоторого множества M определено неотрицательное число, обозначаемое |x − y| и называемое мерой близости этой пары. Мы предполагаем от меры близости
выполнение следующих двух условий:
рефлексивность |x − x| = 0 для любого x ∈ M
симметричность |x − y| = |y − x| для любых x, y ∈ M
Для последовательности точек x0 , . . . xk ∈ M определим шаг как максимум
|xi−1 , xi |, i = 1, . . . k. Последовательность точек x0 , . . . xk , начинающуюся с
некоторой точки x = x0 , и заканчивающуюся в точке y = xk , мы будем
называть цепочкой, соединяющей x и y.
Определим цепное расстояние между парой точек x, y ∈ M как минимально возможной шаг цепочки, их соединяющей, и обозначим его |x − y|.
Тогда цепное расстояние удовлетворяет в дополнение к условиям рефлексивности и симметричности следующему неравенству
|x − z| ≤ max{|x − y| , |y − z|} для любых x, y, z ∈ M
1
(1.1)
Если цепные расстояния нам известны, то классификацию с данным порогом можно провести за время O(n2 ). Мы по очереди просматриваем все
точки множества и объявляем некоторые из них порождающими кластеры, а другие распределяем по образованным кластерам. При рассмотрении
новой точки мы проверяем ее цепные расстояния до ранее рассмотренных
точек порождающих кластеры и если обнаруживаем, что расстояние до одной из них меньше порога, то присоединяем ее к кластеру этой точки, в
противном случае объявляем эту точку образующей нового кластера.
Одномерный случай. В случае, когда множество M представляет собой
подмножество точек числовой прямой, а мера близости представляет собой
модуль разности, цепные расстояния находятся очень быстро — в линейное время O(n). Теория этих вычислений основана на следующей лемме,
доказательство которой оставляется слушателям.
Лемма 1.1. Если между точками x, y имеется интервал длины d свободный от точек множества M , то цепное расстояние между x и y не
меньше чем d.
Множество M будем считать занумерованным по возрастанию, так что
xj > xi при j > i. Если оно не было упорядоченным, то упорядочим его.
Сортировка выполняется, как нам известно, за время O(n log n).
Лемма 1.2. Если {xi } возрастающая последовательность точек прямой,
то цепное расстояние между xi и xj (j > i) равняется max{(xk+1 − xk ) |
k = i, . . . j − 1}
Доказательство. Так как цепочка xi , xi+1 , . . . , xj имеет шаг max{(xk+1 −
xk ) | k = i, . . . j − 1}, то цепное расстояние между xi и xj не превосходит
этой величины. С другой стороны это расстояние не может быть меньше
чем любое из |xk − xk+1 |, k = i, . . . j − 1 в силу леммы 1.1.
Алгоритм цепной развертки Итак, мы умеем быстро определять цепные расстояния между точками числового множества. Общий случай сводится к этому частному случаю с помощью следующего построения. Отображение множеств с заданными мерами близости будем называть цепной
изометрией, если цепные расстояния между образами точек совпадают с
цепными расстояниями между самими точками.
Теорема 1.1. Пусть M некоторое множество из n точек с заданной мерой близости. Тогда за время O(n2 ) можно построить цепную изометрию
этого множества на подмножество числовой прямой.
Доказательство. Искомую цепную изометрию f мы будем определять в
цикле длины n. При этом будет определяться растущая цепочка подмножеств M1 , . . . , Mk , . . . Mn = M , такая что Mk содержит ровно k точек подмножества M . И отображение f будет последовательно доопределяться на
множествах Mk .
В качестве M1 можно взять произвольное одноточечное подмножество
и определить f (M1 ) = 0. Предположим, что отображение f уже определено на подмножестве Mk содержащем k точек. Определим точку x ∈
M \ Mk ближайшую к Mk . Положим Mk+1 = Mk ∪ {x} и положим f (x) =
2
maxf (Mk ) + min{|x − y| | y ∈ Mk }. Оценим сложность алгоритма. В цикле
длины n выполняется операция нахождения ближайшей пары точек из Mk
и M \ Mk . Так как всего пар имеется |Mk | × |M \ Mk |, то перебор всех их
занимает не более O(n2 ) времени, но и не менее. Ведь в случае, когда Mk содержит половину элементов M , количество пар будет n2 /4. Итак, на первый
взгляд сложность алгоритма составляет O(n3 ). Но если запоминать предыдущие результаты вычислений, то сложность можно понизить до O(n2 ). Мы
заведем массив текущих расстояний Di от i-ой точки множества M до множества Mk . Для k = 1 этот массив строится в линейное время Di := |xi −x1 |.
Модифицируется он также в линейное время Di := min{Di , |xi − xk+1 |}. И
при наличии такого массива поиск ближайшей точки до Mk проводится в
линейное время.
Задачи.
1. Докажите, что построенное при доказательстве теоремы отображение
f действительно является цепной изометрией.
3
Download