Upload
cs-center
View
191
Download
7
Embed Size (px)
Citation preview
Big Data’15Лекция IX: алгоритмы кластеризации
Дмитрий Барашев[email protected]
Computer Science Center
21 апреля 2015
1/52
Этот материал распространяется под лицензией
Creative Commons ”Attribution - Share Alike” 3.0http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru
сверстано в онлайн LATEX редакторе
Pa
peeriapapeeria.com
2/52
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Попытки улучшенийCURE – clustering using representativesЗонтичная кластеризация
3/52
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Попытки улучшенийCURE – clustering using representativesЗонтичная кластеризация
4/52
Что хотим
▶ Дано▶ некоторый набор точек▶ функция расстояния между точками
▶ Что хотим▶ сгруппировать точки в некоторое количествокластеров по каким-то правилам
▶ Сколько кластеров?▶ Какие правила?▶ Какая функция расстояния?
5/52
Что хотим
▶ Дано▶ некоторый набор точек▶ функция расстояния между точками
▶ Что хотим▶ сгруппировать точки в некоторое количествокластеров по каким-то правилам
▶ Сколько кластеров?▶ Какие правила?▶ Какая функция расстояния?
5/52
Точки и расстояние
▶ Обычно точки в евклидовом многомерномпространстве
▶ А может и в неевклидовом▶ в евклидовом пространстве обычно можно найтинекую ”среднюю” точку, возможноотсутствующую в исходном множестве
▶ Функция расстояния – Евклидово, косинусное,Жаккардово, Левенштейна, Хэмминга
6/52
Четкие кластеры
7/52
Цели кластеризации
▶ понимание данных▶ Сжатие данных▶ Обнаружение новых объектов
8/52
Приложения
▶ Кластеризация результатов поиска
▶ Поиск сегментов рынка по характеристикампокупателей
▶ Поиск тесно связанных между собойпользователей контактика
▶ Поиск научных статей, похожих по темам навашу
▶ Определение оптимального местоположениябазовых станций сотовой сети
9/52
Приложения
▶ Кластеризация результатов поиска▶ Поиск сегментов рынка по характеристикампокупателей
▶ Поиск тесно связанных между собойпользователей контактика
▶ Поиск научных статей, похожих по темам навашу
▶ Определение оптимального местоположениябазовых станций сотовой сети
9/52
Приложения
▶ Кластеризация результатов поиска▶ Поиск сегментов рынка по характеристикампокупателей
▶ Поиск тесно связанных между собойпользователей контактика
▶ Поиск научных статей, похожих по темам навашу
▶ Определение оптимального местоположениябазовых станций сотовой сети
9/52
Приложения
▶ Кластеризация результатов поиска▶ Поиск сегментов рынка по характеристикампокупателей
▶ Поиск тесно связанных между собойпользователей контактика
▶ Поиск научных статей, похожих по темам навашу
▶ Определение оптимального местоположениябазовых станций сотовой сети
9/52
Приложения
▶ Кластеризация результатов поиска▶ Поиск сегментов рынка по характеристикампокупателей
▶ Поиск тесно связанных между собойпользователей контактика
▶ Поиск научных статей, похожих по темам навашу
▶ Определение оптимального местоположениябазовых станций сотовой сети
9/52
Евклидово расстояние
x = [x1, . . . ,xn],y = [y1, . . . ,yn]
d(x,y) =
√√√√ n∑i=1
(xi − yi)2
10/52
Косинусное расстояние
x = [x1, . . . ,xn],y = [y1, . . . ,yn]
d(x,y) =∑n
i=1(xi × yi)√∑ni=1 x2i
√∑ni=1 y2i
11/52
Жаккардово расстояние
▶ Коэффициент схожести J(A,B) = A∩BA∪B
▶ Расстояние d(A,B) = 1− J(A,B)
12/52
Манхеттенское расстояние
x = [x1, . . . ,xn],y = [y1, . . . ,yn]
d(x,y) =n∑i=1
|xi − yi|
▶ Сколько кварталов нужно пройти по Манхеттенучтоб попасть с одного перекрестка на другой
13/52
Манхеттенское расстояние
14/52
Расстояния Хэмминга и Левенштейна
▶ Для строк одинаковой длины расстояниеХэмминга – кол-во позиций где символыразличны
▶ Расстояние Левенштейна – количествоопераций вставки/удаления/замены символадля превращения одной строки в другую
Пример1234567890 vs 0123456789расстояние Хэмминга = 10, расстояние Левенштейна = 2
15/52
Расстояния Хэмминга и Левенштейна
▶ Для строк одинаковой длины расстояниеХэмминга – кол-во позиций где символыразличны
▶ Расстояние Левенштейна – количествоопераций вставки/удаления/замены символадля превращения одной строки в другую
Пример1234567890 vs 0123456789расстояние Хэмминга = 10, расстояние Левенштейна = 2
15/52
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Попытки улучшенийCURE – clustering using representativesЗонтичная кластеризация
16/52
Две разные стратегии
▶ Иерархическая (восходящая и нисходящая)▶ Плоская
▶ Конкретных алгоритмов много, тыщи их
17/52
Две разные стратегии
▶ Иерархическая (восходящая и нисходящая)▶ Плоская▶ Конкретных алгоритмов много, тыщи их
17/52
Иерархическая стратегия
▶ Сначала каждая точка – один кластер▶ На итерации «ближайшие» кластерыобъединяются
▶ Итерации останавливаются при достижениикакого-то критерия
▶ В нисходящей стратегии все наоборот,начинается с одного большого кластера,включающего все точки
18/52
Плоская стратегия
▶ Определяются первоначальные кластеры▶ Точки рассматриваются по очереди иприписываются какому-то кластеру
▶ Если результат достаточно хорош, итерацииостанавливаются
▶ В процессе кластеры могут объединяться илираспадаться, а точки терять прописку
19/52
Возможные характеристики кластеров
▶ Диаметр: максимальное расстояние междулюбыми двумя точками в кластере
▶ Радиус: максимальное расстояние от некого«центра» до любой из точек кластера
▶ Плотность: количество точек в кластереподеленное на «объём»: радиус в какой-тостепени
▶ Межкластерное расстояние: расстояниемежду центрами, между ближайшими точками,среднее расстояние между всеми парами
20/52
Критерии прекращения кластеризации
▶ Построено нужное число кластеров▶ Характеристики кластеров (диаметр,плотность) достигли граничных значений
21/52
Центры кластеров
▶ В евклидовом пространстве есть центроид –среднем арифметическом точек кластера
▶ В неевклидовом пространстве (например впространстве строк) центроида нет. Центром(кластроидом) выбирается одна из точеккластера, минимизирующая
▶ максимальное расстояние до остальных точек▶ или сумму растояний▶ или сумму квадратов расстояний
22/52
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Попытки улучшенийCURE – clustering using representativesЗонтичная кластеризация
23/52
Восходящая иерархическаякластеризация
▶ Евклидово пространство▶ Исходное положение: каждая точка - одинкластер
▶ Итерация: объединяются два самых близкихкластера
24/52
0 1 2 3 4 50
1
2
3
4
5
25/52
0 1 2 3 4 50
1
2
3
4
5
26/52
0 1 2 3 4 50
1
2
3
4
5
27/52
0 1 2 3 4 50
1
2
3
4
5
28/52
0 1 2 3 4 50
1
2
3
4
5
29/52
Плюсы, минусы, подводные камни
▶ Может (иногда) находить кластерыпричудливой формы
▶ N2 первоначальных сравнений и еще порядка Nшагов ⇒ N3
▶ для большого количества точек подходит плохо
30/52
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Попытки улучшенийCURE – clustering using representativesЗонтичная кластеризация
31/52
Схема
▶ Выбрать k точек, находящиеся вероятно вразных кластерах и объявить их центроидами
▶ Итерация: для каждой точки найти ближайшийцентроид и отнести её к соотв. кластеру
▶ Пересчитать центроиды и если требуется,сделать следующую итерацию
▶ например если ни одна точка не переехала вдругой кластер то уже наверное хватит
32/52
Map-Reduce реализация
▶ Подготовка: заготовить список центроидов[ci]ki=1. Он скорее всего поместится в RAM
▶ Map: для каждой точки p прочитать центроиды,найти ближайший cj, выплюнуть пару (cj,p)
▶ Reduce: для полученного кластера,представленного центроидом ci (ключ свертки)и списка точек найти новый центроид ипосчитать характеристики кластера. Результатзаписать.
33/52
Снова о прекращении итераций▶ Среднеквадратическая ошибка▶ Для одного кластера
Di =∑x∈ωi
|x− ci|2
▶ Для всего множества
D =
k∑i=1
Di
▶ Алгоритм k-means находит (локальный)минимум D
▶ можно останавливаться, если D стал нижеплинтуса порога
▶ или если изменение D стало маленьким
34/52
Снова о прекращении итераций▶ Среднеквадратическая ошибка▶ Для одного кластера
Di =∑x∈ωi
|x− ci|2
▶ Для всего множества
D =
k∑i=1
Di
▶ Алгоритм k-means находит (локальный)минимум D
▶ можно останавливаться, если D стал нижеплинтуса порога
▶ или если изменение D стало маленьким34/52
Выбор k
▶ Если число кластеров неизвестно априорно, томожно перебрать разные k
▶ Если поставить цель минимизироватьсреднеквадратичную ошибку то лучшее k
▶ k = N▶ Можно рассмотреть кривую уменьшения D взависимости от увеличения k и брать kсоответствующий точкам изгиба
35/52
Выбор k
▶ Если число кластеров неизвестно априорно, томожно перебрать разные k
▶ Если поставить цель минимизироватьсреднеквадратичную ошибку то лучшее k
▶ k = N
▶ Можно рассмотреть кривую уменьшения D взависимости от увеличения k и брать kсоответствующий точкам изгиба
35/52
Выбор k
▶ Если число кластеров неизвестно априорно, томожно перебрать разные k
▶ Если поставить цель минимизироватьсреднеквадратичную ошибку то лучшее k
▶ k = N▶ Можно рассмотреть кривую уменьшения D взависимости от увеличения k и брать kсоответствующий точкам изгиба
35/52
Выбор начальных центроидов
▶ Случайный, как можно дальше друг от друга▶ outlier может все испортить
▶ Случайный с выкидыванием отщепенцев▶ Предварительная иерархическая кластеризацияи центроиды получившихся кластеров вкачестве первоначальных для k-means
▶ можно проводить над небольшой случайнойвыборкой из исходных точек
▶ Несколько разных наборов начальныхцентроидов и выбор показавшего лучшийрезультат
36/52
Плюсы, минусы, подводные камни
▶ Невысокая сложность▶ Простое распараллеливание▶ Хорошие результаты для «хороших» данных▶ Но не все данные одинаково хороши
37/52
Несферические кластеры
Исходные данные38/52
Несферические кластеры
Результат работы k-means39/52
Несферические кластеры
Результат работы иерархического алгоритма40/52
Неравномерные кластеры
Исходные данные41/52
Неравномерные кластеры
Результат работы k-means42/52
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Попытки улучшенийCURE – clustering using representativesЗонтичная кластеризация
43/52
Представители кластера
▶ В k-means кластер представлен центроидом▶ В иерархической кластеризации кластерпредставлен всеми точками
▶ Давайте выберем несколько представителейкаждого кластера
44/52
Выбросы1
▶ Выбросы могут сильно испортитькластеризацию
▶ Можно пытаться их предварительноотфильтровывать
▶ CURE старается их приручить
1outliers45/52
Алгоритм CURE▶ Взять небольшой семпл исходных точек▶ Чуток кластеризовать их иерархическойкластеризацией
▶ Выбрать в каждом кластере множествопредставителей
▶ представители должны располагаться какможно дальше друг от друга
▶ Сдвинуть всех представителей ближе к ихцентроиду
▶ Последовательно объединять кластеры сдостаточно близко расположеннымипредставителями
▶ Оставшиеся точки распределить в кластер,принадлежащий ближайшему представителю.
46/52
Сокращение вычислений
▶ Измерять расстояние от каждой точки докаждого центроида может быть дорого
▶ С некоторыми центроидами даже связыватьсяне хочется
▶ Давайте заранее определим «зонтики»2 –(перекрывающиеся) области, где имеет смыслвычислять расстояние
▶ Расстояние между точками из разных зонтиковбудет равно ∞
2canopy47/52
Построение зонтиков
▶ У зонтика есть центр, внешний радиус T1 ивнутренний радиус T2
▶ Шаги построения:1. случайно выбрать центр c2. для каждой точки p исходного множества если
d(p, c) <= T1 то записать точку в зонтик, а еслиd(p, c) <= T2 то дополнительно не рассматриватьеё как кандидата в дугие зонтики
3. делать так пока каждая точка не окажется хотябы в одном зонтике
48/52
Применение к k-means
▶ В k-means расстояние между точками из разныхзонтиков равно ∞
▶ Все остальное точно так же
49/52
Инструменты
▶ Apache Mahout: алгоритмы кластеризацииповерх Hadoop
▶ Weka: набор data mining библиотек иалгоритмов для одной машины
50/52
Занавес
▶ Кластеризация решает практические задачи▶ Много разных алгоритмов▶ К каждому алгоритму можно подобрать«плохие» данные
▶ Часто используется простой и масштабируемыйалгоритм k-средних
51/52
Литература I
Andrew McCallum, Kamal Nigam, and Lyle H. Ungar.Efficient clustering of high-dimensional data setswith application to reference matching.In Proceedings of the Sixth ACM SIGKDDInternational Conference on Knowledge Discoveryand Data Mining, KDD ’00, pages 169–178, NewYork, NY, USA, 2000. ACM.Anand Rajaraman and Jeffrey David Ullman.Mining of massive datasets.Cambridge University Press, 2011.
52/52