Введение в машинное обучение. Кластеризация (bitworks...

70
Введение в машинное обучение. Кластеризация. Алгоритм кластеризации k-means. Bitworks Software Жданов Кирилл

Upload: bitworks-software

Post on 07-Jan-2017

251 views

Category:

Data & Analytics


3 download

TRANSCRIPT

Page 1: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Введение в машинное обучение.Кластеризация.

Алгоритм кластеризации k-means.

Bitworks Software

Жданов Кирилл

Page 2: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Машинное обучение

Компьютер

Что это?

Использование программ

Программа

Входные данные

Выходные данные

Создание программ при помощи машинного обучения

Компьютер

Входные данныеВыходные данные

Программа

Page 3: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Машинное обучениеПример: обнаружение спама

Компьютер

Входные данные: множество писем

Выходные данные:метки для писем из входных данных (спам/не спам)

Программа

Page 4: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Машинное обучениеПример: обнаружение спама

Компьютер

Программа

Спам

Не спам

Письма

Page 5: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Машинное обучениеПримеры задач

● Поиск похожих элементов– Сайты-двойники

– Плагиат

● Обработка естественного языка– Выделение документов со схожими темами

– Выделение ключевых слов

● Самонастраивающиеся приложения– Рекомендательные системы (Ozon, Netflix)

Page 6: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Машинное обучениеПримеры задач

Поиск плагиата

Выбор групп слов

Хэширование

Хэширование

Сравнение

Слова,фразы,абзацы

Слова,фразы,абзацы

Весаслов,фраз,

абзацев

Весаслов,фраз,

абзацевВыбор

групп слов

Page 7: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Машинное обучениеПримеры задач

Выделение документов со схожими темами

SVD/CUR

TF-IDF

Политика: 136 статейСпорт: 409 статейОбщество: 302 статьиКультура: 254 статьиАвтомобили: 150 статейНаука: 95 статей

Определение тем

Список ключевых слов для каждой статьи

и их значимость

Выделенные скрытые компоненты

Page 8: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Машинное обучениеПримеры задач

Рекомендательные системы:● На основании исторических данных о

предпочтениях пользователей, находим пользователей со схожими вкусами

● Рекомендуем пользователю одной группы товары, понравившиеся другим пользователям этой же группы

Page 9: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

● Обучение с учителем– Регрессия

● Предсказание значения непрерывной величины (например, линейная регрессия)

Page 10: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

● Обучение с учителем: регрессия

Предсказание веса в зависимости от роста: по обучающей выборке построена линейная регрессия

Page 11: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

● Обучение с учителем: регрессия

Для человека с ростом 187 сантиметров теперь можем предсказать вес: 79 килограммов.

Page 12: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

● Обучение с учителем– Регрессия

● Предсказание значения непрерывной величины (например, линейная регрессия)

– Классификация● Предсказание значений дискретной величины

(например, линейная классификация)

Page 13: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

● Обучение с учителем: классификация

Дано: точки двух классов в двухмерном пространстве.

Page 14: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

● Обучение с учителем: классификация

Какой класс у точки с такими координатами?

Page 15: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

● Обучение с учителем: классификация

Строим линейный классификатор.

Page 16: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

● Обучение с учителем: классификация

На основании положения точки относительно классификатора,определяем её класс.

Page 17: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

● Обучение с учителем– Регрессия

● Предсказание значения непрерывной величины (например, линейная регрессия)

– Классификация● Предсказание значений дискретной величины

(например, линейная классификация)

● Обучение без учителя● Найти скрытые закономерности в данных, сжать

данные (например, уменьшение размерности пространства, кластеризация)

Page 18: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обучения

1000 измеренийA B C D E

3.7 0.3 0.0 0.0 1.7

0.0 0.1 3.5 0.0 7.2

5.8 3.8 0.2 3.8 0.0

2.1 4.5 8.7 1.2 0.2

0.3 2.6 6.2 3.5 8.2

0.8 3.3 7.1 0.0 5.3

4.5 1.0 6.1 9.9 7.3

5 измерений

Уменьшение размерности пространства

● Для чего:– Уменьшение трудоёмкости вычислений

– Визуализация

0 1 2 3 4 5 6 7 8 9 10 11 12 ...

0.7 0.9 0 0 0 0 0 0 1 1.7 2.8 0 0 ...

4.3 8.1 0 1.8 0.4 0 2.1 0 3.7 0 0.1 0 0.6 ...

0 1.1 1.8 0 6.5 7.1 0 0.6 0 0 1.4 1.8 0.3 ...

1.9 7.7 0 7.3 1.1 1.0 0.4 0 4.4 3.5 0 1.2 0 ...

8.0 0.4 7.1 0 0 1.9 3.4 0.3 0 2.7 0 1.2 6.2 ...

0 9.2 1.2 0.3 0.1 0 3.7 0 0 1.8 9.1 0 1.1 ...

... ... ... ... ... ... ... ... ... ... ... ... ... ...

Page 19: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обученияУменьшение размерности пространства

Переводим точки из двухмерного пространства в одномерное.

Для этого нужно всего лишь подобрать прямую, при проекции на которую точки будут максимально далеки друг от друга.

Page 20: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обученияУменьшение размерности пространства

Page 21: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Задачи машинного обученияКластеризация

Дано: группа элементов, для каждого элемента определены значения нескольких характеристик (например, рост, вес, температура и т.д.). Необходимо выделить группы похожих элементов.

Page 22: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Кластеризация

● Иерархическая– Каждая точка – кластер

– Объединение ближайших кластеров с сохранением древовидной структуры

● Назначение точек– Определить несколько кластеров

– Присвоить каждую точку ближайшему кластеру

● На основании связности– Близкие друг к другу точки объединяются в

кластеры

Page 23: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

В наличии набор точек в двухмерном пространстве (в общем случае – в многомерном).

Page 24: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

Хотим выделить два кластера – случайно выбираем две точки из множества.

Page 25: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

Создаём на их месте две новые точки – центры кластеров. Распределяем точки между кластерами на основании расстояния.

Page 26: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

Перемещаем центры кластеров так, чтобы расстояние от центра до всех точек этого кластера было минимальным.

Page 27: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

Вновь распределяем точки между кластерами.

Page 28: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

Продолжаем обновлять позиции центров кластеров и распределять точки между кластерами.

Page 29: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

До тех пор, пока позиции центров кластеров изменяются.

Page 30: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

Page 31: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means

0) Определить метрику расстояния

1) Выбрать количество кластеров

2) Нормализовать данные

3) Выбрать центроиды (центры кластеров)

4) Присвоить точки кластерам

5) Обновить центроиды

6) Повторять 4 и 5

Алгоритм

Page 32: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means

● Требования:– E(x, y) = 0 если и только если x = y

– E(x, y) = E(y, x)

– E(x, y) + E(y, z) > E(x, z)

● Евклидово расстояние:

0) Определить метрику расстояния E

E12=√(x1−x2)2+( y1− y2)

2

Page 33: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means

Хорошо, если изначально известно. Но чаще всего этим знанием исследователи не обладают, поэтому был предложен метод, позволяющий оценить нужное количество кластеров – метод локтя (Elbow method).

1) Выбрать количество кластеров

Page 34: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

J=1n∑i=1

n

E ( point i , centroid( point i))

K-means

● Функция стоимости:

● Далее производится кластеризация множества точек с различными значениями количества кластеров и строится график зависимости значения функции стоимости от количества кластеров

1) Выбрать количество кластеров: метод локтя

Центроид кластера, которому принадлежит эта точка

Page 35: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansМетод локтя (Elbow method)

J

Количество кластеров

Нужно выбрать такую точку на графике, которая определит оптимальное соотношение количества кластеров и значения функции стоимости: на сгибе “локтя” графика.

Page 36: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means

Многократная кластеризация всего исходного набора точек – чаще всего очень трудоёмкая задача из-за того, что точек и измерений много. Поэтому выбирается подмножество точек и используется в качестве входных данных для методя локтя.

1) Выбрать количество кластеров

Page 37: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means2) Нормализовать данные

ID Заработная плата Возраст

1 80000 37

2 50000 23

3 120000 52

4 75000 28

E12=√(x1−x2)2+( y1− y2)

2

E14=√(80000−75000)2+(37−28)

2≈5000

Page 38: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means2) Нормализовать данные

В приведённом примере возраст вносит незначительный вклад в определение расстояния между двумя точками из-за того, что заработная плата измеряется в тысячах, а возраст в десятках. После нормализации масштабы шкал измерения параметров будут совпадать и мы избавимся от этой проблемы.

Page 39: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means2) Нормализовать данные

ID З/п Возраст

1 80000 37

2 50000 23

3 120000 52

4 75000 28

ID З/п Возраст

1 0.4285 0.4827

2 0 0

3 1 1

4 0.3571 0.1724

Page 40: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means2) Нормализовать данные

ID З/п Возраст

1 0.4285 0.4827

2 0 0

3 1 1

4 0.3571 0.1724

E14=√(80000−75000)2+(37−28)

2≈5000

E14=√(0.4285−0.4827)2+(0.3571−0.1724)

2

E14≈0.19153

Page 41: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means

● Случайные точки в границах [min; max]

3) Выбрать центроиды

При данном подходе могут быть выбраны центроиды в “пустынных” областях пространства и им придётся проделать лишний путь в процессе минимизации значения функции стоимости.

Page 42: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means

● Случайные точки в границах [min; max]● Случайные точки из множества точек

3) Выбрать центроиды

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

Page 43: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means3) Выбрать центроиды

Однако, если большинство точек сгруппированы в одном месте, а небольшие группы точек расположены на периферии, то с большей вероятностью все центроиды будут выбраны из большего по размеру множества точек – и выделить кластеры на периферии не удастся.

Page 44: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means

● Случайные точки в границах [min; max]● Случайные точки из множества точек● Взвешенный случаный выбор точек из

множества (k-means++):– Выбрать одну случайно

– Вычислить вероятности для всех остальных точек на основании расстояния до выбранных

– Выбрать следующую, учитывая вероятности

– Пересчитать вероятности

3) Выбрать центроиды

Page 45: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means4) Присвоить точки кластерам

На основании метрики расстояния

E12=√(x1−x2)2+( y1− y2)

2

Page 46: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means5) Обновить центроиды

● Среднее значение всех точек кластера по каждому измерению:

● Выбрать в качестве центра кластера точку из этого кластера, которая ближе всех ко всем остальным точкам кластера (кластроид). Полезно, когда сложно посчитать среднее значение по какому-либо измерению и/или пространство многомерное.

0.17+0.12+0.22+0.964

=0.37

Page 47: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-means6) Повторять 4 и 5

● Критерий остановки:– Количество итераций (задаётся заранее)

– Пока значение функции стоимости изменяется

Page 48: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

Page 49: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

Page 50: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansПример

Page 51: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Недостатки

● Априорное знание о количестве кластеров ● Сферическая форма выделяемых

кластеров (справедливо для Евклидовой метрики расстояния; для решения этой проблемы используются другие метрики расстояния, например, расстояние по Махаланобису)

Page 52: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansНедостатки: локальный минимум

Не гарантируется, что в результате использования алгоритма кластеризации k-means будет получено оптимальное разбиение множества точек на кластеры (не гарантируется достижение глобального минимума). Многое зависит от начального распределения центроидов.

Page 53: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansНедостатки: локальный минимум

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

Page 54: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansНедостатки: локальный минимум

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

Page 55: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

K-meansНедостатки: локальный минимум

В конце концов будет получена следующая кластеризация точек.

Page 56: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Недостатки k-means

● Априорное знание о количестве кластеров● Сферическая форма выделяемых

кластеров● Локальный минимум (для решения этой

проблемы предлагается провести кластеризацию несколько раз и выбрать наилучший вариант)

Page 57: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Применение кластеризации

● Сегментирование рынка (целевая аудитория для рекламы)

● Анализ социальных сетей● Определение групп похожих продуктов

(рекомендательные системы)● Уменьшение количества анализируемых

элементов (представить каждый кластер как одну точку; анализ каждого кластера по отдельности)

● Квантование цвета

Page 58: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Пример (сотрудники организации)Данные

ID ФИО Адрес

10 Редькин Магнус Федорович г. Томск, улица Мокрушина, 24

13 Демин Кербер Псоевич г. Томск, Картасный переулок, 17

19 Малянов Дмитрий Алексеевич г. Томск, Иркутский тракт, 142

26 Зыков Игорь Петрович

32 Ойра-Ойра Роман Петрович г. Томск, улица Бела Куна, 12

35 Бородин Юрий Алексеевич г. Северск, Транспортная улица, 79/6

42 Киплинг Джозеф Редьярд

43 Привалов Александр Иванович г. Томск, Новгородская улица, 44/1

● Всего: 60 записей

Page 59: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Пример

● Фильтрация: игнорировать все записи без адресов (было: 60; стало: 43)

● Преобразовать каждый адрес в кортеж (широта, долгота), используя Yandex.Maps API

● Часто бывает полезно для дальнейшего анализа визуализировать данные (помогает выделить характерные особенности)

Подготовка данных

Page 60: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Page 61: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Пример

● Выбираем 40% от всего набора данных, проводим кластеризацию для количества кластеров 2, 4, 8, 16, 32 (21, 22, 23, ...) – для определения отрезка, в котором находится точка, отражающая нужное нам соотношение количества кластеров и значения функции стоимости. После определения этого отрезка можно провести более детальное его исследование.

Метод локтя

Page 62: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Метод локтяКоличество кластеров – степени двойки

Рассмотрим подробнее отрезок [6, 16], так как именно в этих границах наблюдается резкое уменьшение скорости изменения значения функции стоимости.

Page 63: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Метод локтяОтрезок от 6 до 16

Значение 8 или 9 для количества кластеров подойдёт наилучшим образом так как данных не очень много: если взять 16 кластеров, то получится примерно по 2 с половиной объекта на кластер. Но, безусловно, это зависит от решаемой задачи.

Page 64: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

8 кластеров

Можно видеть, что разбиение более или менее оптимально.

Page 65: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

12 кластеров

На этом изображении видно, что 12 кластеров – это слишком много, так как возникло два кластера с одним элементом: жёлтый и серый.

Page 66: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

2 кластера

При разбиении на два кластера ожидаемо были выделены Северск и Томск.

Page 67: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Применение

● Задача коммивояжёра: уменьшение количества точек для посещения (доставка почты, доставка сотрудников до офиса)

● Определение оптимальных по расстоянию мест для пунктов голосования, магазинов и других публичных мест

● Определение оптимальных по расстоянию мест для вышек сотовой связи или ретрансляции

● Таргетированная реклама новых магазинов в разных районах города

Page 68: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Другие функции оптимизации

● Диаметр кластера (максимальное расстояние между двумя точками в кластере)

● Радиус кластера (максимальное расстояние между центроидом/кластроидом кластера и точкой этого кластера)

● Межкластерное расстояние (минимальное из расстояний между всеми точками двух кластеров)

Page 69: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

Другие метрики

● Lr-norm (L

2-norm это Евклидово расстояние,

L1-norm – расстояние по Манхэттену)

● Расстояние Махаланобиса (обобщение расстояния по Евклиду)

● Жаккардово расстояние (для множеств)● Косинусное расстояние (угол между

векторами)● Расстояние редактирования (для строк)

Page 70: Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)

● Что такое машинное обучение?● Задачи машинного обучения

– Обучение с учителем

– Обучение без учителя

● Кластеризация– Выделение групп похожих объектов

● Алгоритм кластеризации k-means– Выбрать центроиды

– Ассоциировать точки с центроидами

– Обновить центроиды

Итоги