SlideShare a Scribd company logo
Big Data’13
Лекция X: алгоритмы кластеризации
Дмитрий Барашев
bigdata@barashev.net
Computer Science Center
25 апреля 2013
1/42
Этот материал распространяется под лицензией
Creative Commons ”Attribution - Share Alike” 3.0
http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru
2/42
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Зонтичная кластеризация
3/42
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Зонтичная кластеризация
4/42
Что хотим
Дано
некоторый набор точек
функция расстояния между точками
Что хотим
сгруппировать точки в некоторое количество
кластеров по каким-то правилам
5/42
Что хотим
Дано
некоторый набор точек
функция расстояния между точками
Что хотим
сгруппировать точки в некоторое количество
кластеров по каким-то правилам
Сколько кластеров?
Какие правила?
Какая функция расстояния?
5/42
Точки и расстояние
Обычно точки в евклидовом многомерном
пространстве
А может и в неевклидовом
в евклидовом пространстве обычно можно найти
некую ”среднюю” точку, возможно
отсутствующую в исходном множестве
Функция расстояния – Евклидово, косинусное,
Жаккардово, Левенштейна
6/42
Четкие кластеры
7/42
Приложения
Кластеризация результатов поиска
8/42
Приложения
Кластеризация результатов поиска
Последовательная автоматическая
рекластеризация документов
”Россия”, ”политика”, ”экономика”, ”спорт”
→ ”Россия”, ”футбол”, ”хоккей”, ”лига
чемпионов”, ”Гагарин”
→ ”Барселона”, ”Германия”, ”полуфиналы”,
”какая боль”
8/42
Приложения
Кластеризация результатов поиска
Последовательная автоматическая
рекластеризация документов
”Россия”, ”политика”, ”экономика”, ”спорт”
→ ”Россия”, ”футбол”, ”хоккей”, ”лига
чемпионов”, ”Гагарин”
→ ”Барселона”, ”Германия”, ”полуфиналы”,
”какая боль”
Поиск тесно связанных между собой
пользователей контактика
8/42
Приложения
Кластеризация результатов поиска
Последовательная автоматическая
рекластеризация документов
”Россия”, ”политика”, ”экономика”, ”спорт”
→ ”Россия”, ”футбол”, ”хоккей”, ”лига
чемпионов”, ”Гагарин”
→ ”Барселона”, ”Германия”, ”полуфиналы”,
”какая боль”
Поиск тесно связанных между собой
пользователей контактика
Поиск научных статей, похожих по темам на
вашу
8/42
Приложения
Кластеризация результатов поиска
Последовательная автоматическая
рекластеризация документов
”Россия”, ”политика”, ”экономика”, ”спорт”
→ ”Россия”, ”футбол”, ”хоккей”, ”лига
чемпионов”, ”Гагарин”
→ ”Барселона”, ”Германия”, ”полуфиналы”,
”какая боль”
Поиск тесно связанных между собой
пользователей контактика
Поиск научных статей, похожих по темам на
вашу
Определение оптимального местоположения
базовых станций сотовой сети
8/42
Евклидово расстояние
x = [x1, . . . , xn], y = [y1, . . . , yn]
d(x, y) =
n∑
i=1
(xi − yi)2
9/42
Косинусное расстояние
x = [x1, . . . , xn], y = [y1, . . . , yn]
d(x, y) =
∑n
i=1(xi × yi)
√∑n
i=1 x2
i
√∑n
i=1 y2
i
10/42
Жаккардово расстояние
Коэффициент схожести J(A, B) = A∩B
A∪B
Расстояние d(A, B) = 1 − J(A, B)
11/42
Манхеттенское расстояние
x = [x1, . . . , xn], y = [y1, . . . , yn]
d(x, y) =
n∑
i=1
|xi − yi|
Сколько кварталов нужно пройти по Манхеттену
чтоб попасть с одного перекрестка на другой
12/42
Манхеттенское расстояние
13/42
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Зонтичная кластеризация
14/42
Две разные стратегии
Иерархическая (восходящая и нисходящая)
Плоская
15/42
Иерархическая стратегия
Сначала каждая точка – один кластер
На итерации «ближайшие» кластеры
объединяются
Итерации останавливаются при достижении
какого-то критерия
В нисходящей стратегии все наоборот,
начинается с одного большого кластера,
включающего все точки
16/42
Плоская стратегия
Определяются первоначальные кластеры
Точки рассматриваются по очереди и
приписываются какому-то кластеру
Если результат достаточно хорош, итерации
останавливаются
17/42
Возможные характеристики кластеров
Диаметр: максимальное расстояние между
любыми двумя точками в кластере
Радиус: максимальное расстояние от некого
«центра» до любой из точек кластера
Плотность: количество точек в кластере
поделенное на «объём»: радиус в какой-то
степени
Межкластерное расстояние: расстояние
между центрами, между ближайшими точками,
среднее расстояние между всеми парами
18/42
Критерии прекращения кластеризации
Построено нужное число кластеров
Характеристики кластеров (диаметр,
плотность) достигли граничных значений
19/42
Центры кластеров
В евклидовом пространстве есть центроид –
среднем арифметическом точек кластера
В неевклидовом пространстве (например в
пространстве строк) центроида нет. Центром
(кластроидом) выбирается одна из точек
кластера, минимизирующая
максимальное расстояние до остальных точек
или сумму растояний
или сумму квадратов расстояний
20/42
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Зонтичная кластеризация
21/42
Восходящая иерархическая кластеризация
Евклидово пространство
Исходное положение: каждая точка - один
кластер
Итерация: объединяются два самых близких
кластера
22/42
..
0
.
1
.
2
.
3
.
4
.
5
.0 .
1
.
2
.
3
.
4
.
5
.......
23/42
..
0
.
1
.
2
.
3
.
4
.
5
.0 .
1
.
2
.
3
.
4
.
5
.......
24/42
..
0
.
1
.
2
.
3
.
4
.
5
.0 .
1
.
2
.
3
.
4
.
5
.......
25/42
..
0
.
1
.
2
.
3
.
4
.
5
.0 .
1
.
2
.
3
.
4
.
5
.......
26/42
..
0
.
1
.
2
.
3
.
4
.
5
.0 .
1
.
2
.
3
.
4
.
5
.......
27/42
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Зонтичная кластеризация
28/42
Схема
Выбрать k точек, находящиеся вероятно в
разных кластерах и объявить их центроидами
Итерация: для каждой точки найти ближайший
центроид и отнести её к соотв. кластеру
Пересчитать центроиды и если требуется,
сделать следующую итерацию
например если ни одна точка не переехала в
другой кластер то уже наверное хватит
29/42
Map-Reduce реализация
Подготовка: заготовить список центроидов
[ci]k
i=1. Он скорее всего поместится в RAM
Map: для каждой точки p прочитать центроиды,
найти ближайший cj, выплюнуть пару (cj, p)
Reduce: для полученного кластера,
представленного центроидом ci (ключ свертки)
и списка точек найти новый центроид и
посчитать характеристики кластера. Результат
записать.
30/42
Снова о прекращении итераций
Среднеквадратическая ошибка
Для одного кластера
Di =
∑
x∈ωi
|x − ci|2
Для всего множества
D =
k∑
i=1
Di
31/42
Снова о прекращении итераций
Среднеквадратическая ошибка
Для одного кластера
Di =
∑
x∈ωi
|x − ci|2
Для всего множества
D =
k∑
i=1
Di
Алгоритм k-means находит (локальный)
минимум D
можно останавливаться, если D стал ниже
плинтуса порога
или если изменение D стало маленьким
31/42
Выбор k
Если число кластеров неизвестно априорно, то
можно перебрать разные k
Если поставить цель минимизировать
среднеквадратичную ошибку то лучшее k
32/42
Выбор k
Если число кластеров неизвестно априорно, то
можно перебрать разные k
Если поставить цель минимизировать
среднеквадратичную ошибку то лучшее k
k = N
32/42
Выбор k
Если число кластеров неизвестно априорно, то
можно перебрать разные k
Если поставить цель минимизировать
среднеквадратичную ошибку то лучшее k
k = N
Можно рассмотреть кривую уменьшения D в
зависимости от увеличения k и брать k
соответствующий точкам изгиба
32/42
Выбор начальных центроидов
Случайный, как можно дальше друг от друга
outlier может все испортить
Случайный с выкидыванием отщепенцев
Предварительная иерархическая кластеризация
и центроиды получившихся кластеров в
качестве первоначальных для k-means
можно проводить над небольшой случайной
выборкой из исходных точек
Несколько разных наборов начальных
центроидов и выбор показавшего лучший
результат
33/42
Сегодня в программе
Задача кластеризации
Методы кластеризации
Иерархическая кластеризация
Алгоритм k-средних
Зонтичная кластеризация
34/42
Сокращение вычислений
Измерять расстояние от каждой точки до
каждого центроида может быть дорого
С некоторыми центроидами даже связываться
не хочется
Давайте заранее определим «зонтики» –
(перекрывающиеся) области, где имеет смысл
вычислять расстояние
Расстояние между точками из разных зонтиков
будет равно ∞
35/42
Построение зонтиков
У зонтика есть центр, внешний радиус T1 и
внутренний радиус T2
Шаги построения:
1. случайно выбрать центр c
2. для каждой точки p исходного множества если
d(p, c) <= T2 то забыть ее; если T2 < d(p, c) <= T1
то записать точку в зонтик
3. делать так пока каждая точка не окажется хотя
бы в одном зонтике
36/42
Применение к k-means
В k-means расстояние между точками из разных
зонтиков равно ∞
Все остальное точно так же
37/42
Построение зонтиков с Map-Reduce
Шаг первый:
входные данные поделить на фрагменты
map (много задач): найти зонтики в одном
фрагменте и выплюнуть их центры
reduce (1 задача): сделать то же самое с
полученными центрами. Получить список
центров.
Шаг второй:
map: взять фрагмент, список центров и
определить в какие зонтики попала каждая
точка
reduce: записать либо пары (точка, центр) либо
(центр, список точек) либо и то и другое
38/42
Инструменты
Apache Mahout: алгоритмы кластеризации
поверх Hadoop
Weka: набор data mining библиотек и
алгоритмов для одной машины
39/42
Занавес
Кластеризация решает практические задачи
Много разных алгоритмов
Простой, широко используемый и
масштабируемый алгоритм k-средних
И его можно существенно ускорить
40/42
Эта презентация сверстана в
P
a
peeria1LTEX в вашем браузере
papeeria.com
41/42
Литература I
42/42

More Related Content

Viewers also liked

142 - Spring. Вызов потока из контроллера
142 - Spring. Вызов потока из контроллера142 - Spring. Вызов потока из контроллера
142 - Spring. Вызов потока из контроллера
Roman Brovko
 
139 - Spring. Добавление JavaScript
139 - Spring. Добавление JavaScript139 - Spring. Добавление JavaScript
139 - Spring. Добавление JavaScript
Roman Brovko
 
134 - Spring. Области видимости данных
134 - Spring. Области видимости данных134 - Spring. Области видимости данных
134 - Spring. Области видимости данных
Roman Brovko
 
135 - Spring. Применение областей видимости данных
135 - Spring. Применение областей видимости данных135 - Spring. Применение областей видимости данных
135 - Spring. Применение областей видимости данных
Roman Brovko
 
140 - Spring. Валидация
140 - Spring. Валидация140 - Spring. Валидация
140 - Spring. Валидация
Roman Brovko
 
137 - Spring. ResourceBundle
137 - Spring. ResourceBundle137 - Spring. ResourceBundle
137 - Spring. ResourceBundle
Roman Brovko
 
130 - Spring WebFlow. Создание проекта
130 - Spring WebFlow. Создание проекта130 - Spring WebFlow. Создание проекта
130 - Spring WebFlow. Создание проекта
Roman Brovko
 
131 - Spring. Переход между страницами
131 -  Spring. Переход между страницами 131 -  Spring. Переход между страницами
131 - Spring. Переход между страницами
Roman Brovko
 
136 - Spring. FlowRequestContext
136 - Spring. FlowRequestContext136 - Spring. FlowRequestContext
136 - Spring. FlowRequestContext
Roman Brovko
 
133 - Spring. Создание подпотоков
133 - Spring. Создание подпотоков133 - Spring. Создание подпотоков
133 - Spring. Создание подпотоков
Roman Brovko
 
01 - JavaFX. Введение в JavaFX
01 - JavaFX. Введение в JavaFX01 - JavaFX. Введение в JavaFX
01 - JavaFX. Введение в JavaFX
Roman Brovko
 
138 - Spring. Перехват исключений
138 - Spring. Перехват исключений138 - Spring. Перехват исключений
138 - Spring. Перехват исключений
Roman Brovko
 
129 - Spring. Основные понятия
129 - Spring. Основные понятия129 - Spring. Основные понятия
129 - Spring. Основные понятия
Roman Brovko
 
144 - Spring. Наследование потоков
144 - Spring. Наследование потоков144 - Spring. Наследование потоков
144 - Spring. Наследование потоков
Roman Brovko
 
143 - Spring. JSF centric integration
143 - Spring. JSF centric integration143 - Spring. JSF centric integration
143 - Spring. JSF centric integration
Roman Brovko
 
66 - Spring. Spring и JSF
66 - Spring. Spring и JSF66 - Spring. Spring и JSF
66 - Spring. Spring и JSF
Roman Brovko
 
141 - Spring. Добавление контроллеров Spring MVC
141 - Spring. Добавление контроллеров Spring MVC141 - Spring. Добавление контроллеров Spring MVC
141 - Spring. Добавление контроллеров Spring MVC
Roman Brovko
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения
Roman Brovko
 
Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.
Roman Brovko
 

Viewers also liked (19)

142 - Spring. Вызов потока из контроллера
142 - Spring. Вызов потока из контроллера142 - Spring. Вызов потока из контроллера
142 - Spring. Вызов потока из контроллера
 
139 - Spring. Добавление JavaScript
139 - Spring. Добавление JavaScript139 - Spring. Добавление JavaScript
139 - Spring. Добавление JavaScript
 
134 - Spring. Области видимости данных
134 - Spring. Области видимости данных134 - Spring. Области видимости данных
134 - Spring. Области видимости данных
 
135 - Spring. Применение областей видимости данных
135 - Spring. Применение областей видимости данных135 - Spring. Применение областей видимости данных
135 - Spring. Применение областей видимости данных
 
140 - Spring. Валидация
140 - Spring. Валидация140 - Spring. Валидация
140 - Spring. Валидация
 
137 - Spring. ResourceBundle
137 - Spring. ResourceBundle137 - Spring. ResourceBundle
137 - Spring. ResourceBundle
 
130 - Spring WebFlow. Создание проекта
130 - Spring WebFlow. Создание проекта130 - Spring WebFlow. Создание проекта
130 - Spring WebFlow. Создание проекта
 
131 - Spring. Переход между страницами
131 -  Spring. Переход между страницами 131 -  Spring. Переход между страницами
131 - Spring. Переход между страницами
 
136 - Spring. FlowRequestContext
136 - Spring. FlowRequestContext136 - Spring. FlowRequestContext
136 - Spring. FlowRequestContext
 
133 - Spring. Создание подпотоков
133 - Spring. Создание подпотоков133 - Spring. Создание подпотоков
133 - Spring. Создание подпотоков
 
01 - JavaFX. Введение в JavaFX
01 - JavaFX. Введение в JavaFX01 - JavaFX. Введение в JavaFX
01 - JavaFX. Введение в JavaFX
 
138 - Spring. Перехват исключений
138 - Spring. Перехват исключений138 - Spring. Перехват исключений
138 - Spring. Перехват исключений
 
129 - Spring. Основные понятия
129 - Spring. Основные понятия129 - Spring. Основные понятия
129 - Spring. Основные понятия
 
144 - Spring. Наследование потоков
144 - Spring. Наследование потоков144 - Spring. Наследование потоков
144 - Spring. Наследование потоков
 
143 - Spring. JSF centric integration
143 - Spring. JSF centric integration143 - Spring. JSF centric integration
143 - Spring. JSF centric integration
 
66 - Spring. Spring и JSF
66 - Spring. Spring и JSF66 - Spring. Spring и JSF
66 - Spring. Spring и JSF
 
141 - Spring. Добавление контроллеров Spring MVC
141 - Spring. Добавление контроллеров Spring MVC141 - Spring. Добавление контроллеров Spring MVC
141 - Spring. Добавление контроллеров Spring MVC
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения
 
Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.
 

More from Roman Brovko

Individual task Networking
Individual task NetworkingIndividual task Networking
Individual task Networking
Roman Brovko
 
Networking essentials lect3
Networking essentials lect3Networking essentials lect3
Networking essentials lect3
Roman Brovko
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
Roman Brovko
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2
Roman Brovko
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1
Roman Brovko
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flash
Roman Brovko
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
Roman Brovko
 
Glesk worshop
Glesk worshopGlesk worshop
Glesk worshop
Roman Brovko
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
Roman Brovko
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
Roman Brovko
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
Roman Brovko
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
Roman Brovko
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_world
Roman Brovko
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisites
Roman Brovko
 
C language lect_23_advanced
C language lect_23_advancedC language lect_23_advanced
C language lect_23_advanced
Roman Brovko
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
Roman Brovko
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advanced
Roman Brovko
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
Roman Brovko
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advanced
Roman Brovko
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basics
Roman Brovko
 

More from Roman Brovko (20)

Individual task Networking
Individual task NetworkingIndividual task Networking
Individual task Networking
 
Networking essentials lect3
Networking essentials lect3Networking essentials lect3
Networking essentials lect3
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flash
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
 
Glesk worshop
Glesk worshopGlesk worshop
Glesk worshop
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_world
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisites
 
C language lect_23_advanced
C language lect_23_advancedC language lect_23_advanced
C language lect_23_advanced
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advanced
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advanced
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basics
 

2013 04 25_bigData_lecture_10

  • 1. Big Data’13 Лекция X: алгоритмы кластеризации Дмитрий Барашев bigdata@barashev.net Computer Science Center 25 апреля 2013 1/42
  • 2. Этот материал распространяется под лицензией Creative Commons ”Attribution - Share Alike” 3.0 http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru 2/42
  • 3. Сегодня в программе Задача кластеризации Методы кластеризации Иерархическая кластеризация Алгоритм k-средних Зонтичная кластеризация 3/42
  • 4. Сегодня в программе Задача кластеризации Методы кластеризации Иерархическая кластеризация Алгоритм k-средних Зонтичная кластеризация 4/42
  • 5. Что хотим Дано некоторый набор точек функция расстояния между точками Что хотим сгруппировать точки в некоторое количество кластеров по каким-то правилам 5/42
  • 6. Что хотим Дано некоторый набор точек функция расстояния между точками Что хотим сгруппировать точки в некоторое количество кластеров по каким-то правилам Сколько кластеров? Какие правила? Какая функция расстояния? 5/42
  • 7. Точки и расстояние Обычно точки в евклидовом многомерном пространстве А может и в неевклидовом в евклидовом пространстве обычно можно найти некую ”среднюю” точку, возможно отсутствующую в исходном множестве Функция расстояния – Евклидово, косинусное, Жаккардово, Левенштейна 6/42
  • 10. Приложения Кластеризация результатов поиска Последовательная автоматическая рекластеризация документов ”Россия”, ”политика”, ”экономика”, ”спорт” → ”Россия”, ”футбол”, ”хоккей”, ”лига чемпионов”, ”Гагарин” → ”Барселона”, ”Германия”, ”полуфиналы”, ”какая боль” 8/42
  • 11. Приложения Кластеризация результатов поиска Последовательная автоматическая рекластеризация документов ”Россия”, ”политика”, ”экономика”, ”спорт” → ”Россия”, ”футбол”, ”хоккей”, ”лига чемпионов”, ”Гагарин” → ”Барселона”, ”Германия”, ”полуфиналы”, ”какая боль” Поиск тесно связанных между собой пользователей контактика 8/42
  • 12. Приложения Кластеризация результатов поиска Последовательная автоматическая рекластеризация документов ”Россия”, ”политика”, ”экономика”, ”спорт” → ”Россия”, ”футбол”, ”хоккей”, ”лига чемпионов”, ”Гагарин” → ”Барселона”, ”Германия”, ”полуфиналы”, ”какая боль” Поиск тесно связанных между собой пользователей контактика Поиск научных статей, похожих по темам на вашу 8/42
  • 13. Приложения Кластеризация результатов поиска Последовательная автоматическая рекластеризация документов ”Россия”, ”политика”, ”экономика”, ”спорт” → ”Россия”, ”футбол”, ”хоккей”, ”лига чемпионов”, ”Гагарин” → ”Барселона”, ”Германия”, ”полуфиналы”, ”какая боль” Поиск тесно связанных между собой пользователей контактика Поиск научных статей, похожих по темам на вашу Определение оптимального местоположения базовых станций сотовой сети 8/42
  • 14. Евклидово расстояние x = [x1, . . . , xn], y = [y1, . . . , yn] d(x, y) = n∑ i=1 (xi − yi)2 9/42
  • 15. Косинусное расстояние x = [x1, . . . , xn], y = [y1, . . . , yn] d(x, y) = ∑n i=1(xi × yi) √∑n i=1 x2 i √∑n i=1 y2 i 10/42
  • 16. Жаккардово расстояние Коэффициент схожести J(A, B) = A∩B A∪B Расстояние d(A, B) = 1 − J(A, B) 11/42
  • 17. Манхеттенское расстояние x = [x1, . . . , xn], y = [y1, . . . , yn] d(x, y) = n∑ i=1 |xi − yi| Сколько кварталов нужно пройти по Манхеттену чтоб попасть с одного перекрестка на другой 12/42
  • 19. Сегодня в программе Задача кластеризации Методы кластеризации Иерархическая кластеризация Алгоритм k-средних Зонтичная кластеризация 14/42
  • 20. Две разные стратегии Иерархическая (восходящая и нисходящая) Плоская 15/42
  • 21. Иерархическая стратегия Сначала каждая точка – один кластер На итерации «ближайшие» кластеры объединяются Итерации останавливаются при достижении какого-то критерия В нисходящей стратегии все наоборот, начинается с одного большого кластера, включающего все точки 16/42
  • 22. Плоская стратегия Определяются первоначальные кластеры Точки рассматриваются по очереди и приписываются какому-то кластеру Если результат достаточно хорош, итерации останавливаются 17/42
  • 23. Возможные характеристики кластеров Диаметр: максимальное расстояние между любыми двумя точками в кластере Радиус: максимальное расстояние от некого «центра» до любой из точек кластера Плотность: количество точек в кластере поделенное на «объём»: радиус в какой-то степени Межкластерное расстояние: расстояние между центрами, между ближайшими точками, среднее расстояние между всеми парами 18/42
  • 24. Критерии прекращения кластеризации Построено нужное число кластеров Характеристики кластеров (диаметр, плотность) достигли граничных значений 19/42
  • 25. Центры кластеров В евклидовом пространстве есть центроид – среднем арифметическом точек кластера В неевклидовом пространстве (например в пространстве строк) центроида нет. Центром (кластроидом) выбирается одна из точек кластера, минимизирующая максимальное расстояние до остальных точек или сумму растояний или сумму квадратов расстояний 20/42
  • 26. Сегодня в программе Задача кластеризации Методы кластеризации Иерархическая кластеризация Алгоритм k-средних Зонтичная кластеризация 21/42
  • 27. Восходящая иерархическая кластеризация Евклидово пространство Исходное положение: каждая точка - один кластер Итерация: объединяются два самых близких кластера 22/42
  • 33. Сегодня в программе Задача кластеризации Методы кластеризации Иерархическая кластеризация Алгоритм k-средних Зонтичная кластеризация 28/42
  • 34. Схема Выбрать k точек, находящиеся вероятно в разных кластерах и объявить их центроидами Итерация: для каждой точки найти ближайший центроид и отнести её к соотв. кластеру Пересчитать центроиды и если требуется, сделать следующую итерацию например если ни одна точка не переехала в другой кластер то уже наверное хватит 29/42
  • 35. Map-Reduce реализация Подготовка: заготовить список центроидов [ci]k i=1. Он скорее всего поместится в RAM Map: для каждой точки p прочитать центроиды, найти ближайший cj, выплюнуть пару (cj, p) Reduce: для полученного кластера, представленного центроидом ci (ключ свертки) и списка точек найти новый центроид и посчитать характеристики кластера. Результат записать. 30/42
  • 36. Снова о прекращении итераций Среднеквадратическая ошибка Для одного кластера Di = ∑ x∈ωi |x − ci|2 Для всего множества D = k∑ i=1 Di 31/42
  • 37. Снова о прекращении итераций Среднеквадратическая ошибка Для одного кластера Di = ∑ x∈ωi |x − ci|2 Для всего множества D = k∑ i=1 Di Алгоритм k-means находит (локальный) минимум D можно останавливаться, если D стал ниже плинтуса порога или если изменение D стало маленьким 31/42
  • 38. Выбор k Если число кластеров неизвестно априорно, то можно перебрать разные k Если поставить цель минимизировать среднеквадратичную ошибку то лучшее k 32/42
  • 39. Выбор k Если число кластеров неизвестно априорно, то можно перебрать разные k Если поставить цель минимизировать среднеквадратичную ошибку то лучшее k k = N 32/42
  • 40. Выбор k Если число кластеров неизвестно априорно, то можно перебрать разные k Если поставить цель минимизировать среднеквадратичную ошибку то лучшее k k = N Можно рассмотреть кривую уменьшения D в зависимости от увеличения k и брать k соответствующий точкам изгиба 32/42
  • 41. Выбор начальных центроидов Случайный, как можно дальше друг от друга outlier может все испортить Случайный с выкидыванием отщепенцев Предварительная иерархическая кластеризация и центроиды получившихся кластеров в качестве первоначальных для k-means можно проводить над небольшой случайной выборкой из исходных точек Несколько разных наборов начальных центроидов и выбор показавшего лучший результат 33/42
  • 42. Сегодня в программе Задача кластеризации Методы кластеризации Иерархическая кластеризация Алгоритм k-средних Зонтичная кластеризация 34/42
  • 43. Сокращение вычислений Измерять расстояние от каждой точки до каждого центроида может быть дорого С некоторыми центроидами даже связываться не хочется Давайте заранее определим «зонтики» – (перекрывающиеся) области, где имеет смысл вычислять расстояние Расстояние между точками из разных зонтиков будет равно ∞ 35/42
  • 44. Построение зонтиков У зонтика есть центр, внешний радиус T1 и внутренний радиус T2 Шаги построения: 1. случайно выбрать центр c 2. для каждой точки p исходного множества если d(p, c) <= T2 то забыть ее; если T2 < d(p, c) <= T1 то записать точку в зонтик 3. делать так пока каждая точка не окажется хотя бы в одном зонтике 36/42
  • 45. Применение к k-means В k-means расстояние между точками из разных зонтиков равно ∞ Все остальное точно так же 37/42
  • 46. Построение зонтиков с Map-Reduce Шаг первый: входные данные поделить на фрагменты map (много задач): найти зонтики в одном фрагменте и выплюнуть их центры reduce (1 задача): сделать то же самое с полученными центрами. Получить список центров. Шаг второй: map: взять фрагмент, список центров и определить в какие зонтики попала каждая точка reduce: записать либо пары (точка, центр) либо (центр, список точек) либо и то и другое 38/42
  • 47. Инструменты Apache Mahout: алгоритмы кластеризации поверх Hadoop Weka: набор data mining библиотек и алгоритмов для одной машины 39/42
  • 48. Занавес Кластеризация решает практические задачи Много разных алгоритмов Простой, широко используемый и масштабируемый алгоритм k-средних И его можно существенно ускорить 40/42
  • 49. Эта презентация сверстана в P a peeria1LTEX в вашем браузере papeeria.com 41/42