Введение в машинное...

65
Введение в машинное обучение Введение в машинное обучение Виктория Федотова ([email protected])

Upload: others

Post on 08-Jul-2020

23 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Введение в машинное обучениеВиктория Федотова ([email protected])

Page 2: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 2

Содержание

• Задачи, решаемые при помощи машинного обучения

• Алгоритмы машинного обучения

• Описание

• Метрики качества

• Практика

Page 3: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Что такое машинное обучение?

“Машинное обучение – это процесс, в результате которого машина (компьютер) способна показывать поведение, которое в нее не было явно заложено (запрограммировано).”− Артур Самуэль, 1959

3

Page 4: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 4

Способы машинного обучения

• Обучение «с учителем»

• Для каждого наблюдения задаётся требуемое решение

• Цель: научиться предзказывать требуемое решение для новых наблюдений

• Обучение «без учителя»

• Данные содержат только наблюдения, без дополнительной информации

• Цель: выявить закономерности в исходных данных

• Обучение с подкреплением

• Обучение ведётся при взаимодействии с некоторой средой. При воздействии на среду система получает отклик

• Цель: максимизировать значение общей «прибыли»

Page 5: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 5

Наборы данных

• Состоят из объектов и признаков

• Количество объектов как правило значительно больше количества признаков

• Данные часто представлены в виде матриц (таблиц):

• Строчки – объекты; столбцы –признаки

Page 6: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 6

Примеры наборов данных

• Сенсорные данные (временные ряды): каждый признак – это сенсор; каждый объект – показания сенсоров в некоторый момент времени

• Изображения: признаки – это пиксели, закодированные некоторым образом (RGB, YCbCr)

• Медицинские записи: объекты – это пациенты; признаки – различные показатели – вес, давление, уровень сахара в крови…

• Документы: неструктурированный набор данных, тексты

Page 7: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Обучение «С Учителем»: Регрессия

Page 8: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 8

Примеры задач

– Компания хочет определить каким образом изменение цен влияет на уровень продаж

– Биолог хочет определить как размер, форма тела и анатомия влияет на поведение организма

Решение: Линейная регрессия

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

Регрессия

Source: Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani. (2014). An Introduction to Statistical Learning. Springer

Page 9: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Линейная регрессия

9

Дан вектор признаков 𝑋𝑇 = (𝑥1, 𝑥2, … , 𝑥𝑝),

нужно предсказать ответ 𝑌 при помощи модели:

𝑦 = ℎ(𝑋) = 𝛽0 +

𝑗=1

𝑝

𝑥𝑗 𝛽𝑗

К оригинальным данным могут быть применены некоторые трансформации:

𝑥𝑗 = 𝑓𝑗 𝑍 ;

Где 𝑍𝑇 = (𝑧1, 𝑧2, … , 𝑧𝑞) – оригинальные данные

Weight | Horsepower | MPG

--------+------------+------

1.935 | 66 | 27.3

1.513 | 113 | 30.4

5.424 | 215 | 10.4

... | ... | ...

Признаки Ответ

Чи

сло

на

бл

юд

ен

ий

(n)

Размерность задачи (p)

Page 10: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

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

10

Одномерная линейная регрессия:ℎ 𝑥 = 𝛽0 + 𝛽1𝑥

Идея: Выбрать коэффициенты 𝛽0, 𝛽1таким образом, чтобы значение ℎ 𝑥 было близко к 𝑦 для наблюдений из тренировочной выборки.

Метод наименьших квадратов:

min𝛽0,𝛽1

𝑖=1

𝑛

ℎ 𝑥 𝑖 − 𝑦(𝑖) 2

𝐽(𝛽

0,𝛽

1)

𝛽0 𝛽1

Page 11: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 11

Метод нормальных уравнений

Для задачи min𝛽

𝑖=1𝑛 ℎ 𝑥 𝑖 − 𝑦(𝑖) 2

можно найти аналитическое решение

𝐽 𝛽 =

𝑖=1

𝑛

𝑥 𝑖 𝑇𝛽 − 𝑦(𝑖) 2

𝑑𝐽 𝛽

𝑑𝛽= 0 ⇒ 𝑿𝑇 𝒚 − 𝑿𝛽 = 0

Если 𝑿𝑇𝑿 – матрица полного ранга, тогда существует единственное решение:

𝛽 = 𝑿𝑇𝑿 −1𝑿𝑇𝒚

𝑿 =1 𝑥(1)

… …1 𝑥(𝑛)

, 𝒚 =𝑦(1)

…𝑦(𝑛)

Page 12: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Оценка качества Модели

Page 13: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 13

Оценка качества модели: Недообучение

Среднеквадратичная ошибка:

MSE 𝑋, 𝑦 =1

𝑛

𝑖=1

𝑛

𝑥 𝑖 𝑇𝛽 − 𝑦(𝑖) 2

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

Признак недообучения:

Большое значение MSE 𝑋𝑡𝑟𝑎𝑖𝑛, 𝑦𝑡𝑟𝑎𝑖𝑛 и MSE 𝑋𝑣𝑎𝑙 , 𝑦𝑣𝑎𝑙 .

Page 14: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 14

Действия в случае недообучения

Расширить пространство признаков:

• Путём создания новых признаков на основе уже существующих. Пример: полиномиальные признаки

• Путём использования новых, до этого не использованных признаков.

Использовать более сложную модель

Page 15: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 15

Оценка качества модели: Переобучение

Признак переобучения:

Маленькое значение MSE 𝑋𝑡𝑟𝑎𝑖𝑛, 𝑦𝑡𝑟𝑎𝑖𝑛 .

Большое значение MSE 𝑋𝑣𝑎𝑙 , 𝑦𝑣𝑎𝑙 .

Page 16: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 16

Действия в случае переобучения

Увеличить тренировочный набор данных

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

• Вручную

• Используя методы понижения размерности

Использовать регуляризацию

• Сохраняет все независимые переменные, но уменьшает значимось коэффициентов модели

• Эффективно работает, когда все независимые переменные делают вклад в результат 𝑦

Page 17: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 17

Гребневая регрессия

Интуиция:

Пусть: ℎ 𝑥 = 𝛽0 + 𝛽1𝑥 + 𝛽2𝑥2 + 𝛽3𝑥3

Рассмотрим изменённую функцию стоимости:

𝐽 𝛽0, 𝛽1, 𝛽2, 𝛽3 = 𝑖=1𝑛 ℎ 𝑥 𝑖 − 𝑦(𝑖) 2

+ 1000𝛽32

Единственный способ достичь min𝛽0,𝛽1,𝛽2,𝛽3

𝐽(𝛽) - уменьшить значение 𝛽3

Гребневая регрессия:

𝐽 𝛽 =

𝑖=1

𝑛

ℎ 𝑥 𝑖 − 𝑦(𝑖) 2+ 𝜆 𝛽2

Page 18: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Обучение «С учителем»: Классификация

Page 19: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

19

Примеры задач

– Владелец сервиса электронной почты хочет построить спам-фильтр для своих пользователей

– Почтовый сервис хочет применить автоматическое распознавание рукописного адреса

Решения:

Логистическая регрессия

Машина опорных векторов (SVM)

– Работает хорошо в случае нелинейных границ, разделяющих классы

Классификация

Source: Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani. (2014). An Introduction to Statistical Learning. Springer

Page 20: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 20

Используется для предсказания бинарного отклика на основе одной или нескольких независимых переменных путём построения вероятностной модели

𝑃 𝑦 = 1 𝑥 = 𝑓 ℎ 𝑥 =1

1 + 𝑒−ℎ 𝑥;

ℎ 𝑥 = 𝑥1𝜃1 + ⋯ + 𝑥𝑝𝜃𝑝

Логистическая регрессияВозраст Доход Класс

18 25 1

22 100 1

30 70 1

32 120 1

24 15 0

... ... ...

Независимые переменные

Чи

сло

на

бл

юд

ен

ий

(n)

Логистическаякривая

Page 21: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Оценка качества Модели

Page 22: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 22

Анализ ошибок классификации

Корректность = число корректных предсказаний

общее число предсказаний

• Что если набор данных содержит 99% наблюдений, принадлежащих классу 1?

• У классификатора, который всегда предсказывает «1», корректность предсказаний будет равна 99%.

• Что если корректность предсказаний увеличилась с 98.7% до 99.1%?

• Как понять, что это реальное улучшение алгоритма классификации?

Page 23: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 23

Фактические значения классов

Предсказанные значения классов

положительно отрицательно

положительно True positive (TP)

False positive (FP)

отрицательно False negative (FN)

True negative (TN)

Точность (precision): доля истинно положительных примеров среди примеров, предсказанных как положительные

𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 =TP

TP + 𝑭𝑷

Полнота (recall): доля истинно положительных примеров среди фактически положительных примеров

𝑅𝑒𝑐𝑎𝑙𝑙 =TP

TP + 𝑭𝑵

Метрики качества классификации:Матрица неточностей

• TP – истинно положительное решение• TN – истинно отрицательное решение• FN – ошибка I рода, ложно

отрицательное решение• FP – ошибка II рода, ложно

положительное решение

Page 24: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 24

Оценка качества классификатора

Precision Recall Среднее F1-мера

Алгоритм 1 0.5 0.4 0.45 0.444

Алгоритм 2 0.7 0.1 0.4 0.175

Алгоритм 3 0.02 1.0 0.51 0.0392

Среднее:𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛+𝑅𝑒𝑐𝑎𝑙𝑙

2

• Может оказаться, что алгоритм 3 всегда предсказывает положительный результат

• Ненадёжная метрика

F1-мера = 2𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛⋅𝑅𝑒𝑐𝑎𝑙𝑙

𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛+𝑅𝑒𝑐𝑎𝑙𝑙

? ?

Page 25: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Обучение «С учителем»: Нейронные сети

Page 26: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 26

Применение нейронных сетей

Обнаружение пешеходов

Машины без водителяGoogle*/Apple*/Tesla*

Текстовое описание изображений – Google*/Bing*/Baidu*

Обработка естесственных языков – Siri*/Cortana*/Google Now*

* All trademarks and registered trademarks are the property of their respective owners.

[Images courtesy Deep learning, LeCun, Bengio, Hinton, doi:10.1038/nature14539]

Page 27: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 27

Глубокие нейронные сети (DNN)

[Jeff Dean keynote at CIKM 2015]

Page 28: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 28

Нейрон

Входы (x, y, z)

Веса w

Смещения b

Активационная функция σ

– Нейрон может ‘возбудиться’ или нет в зависимости от входных данных

Intel Confidential

w00

w01

w02

b

σ(ω00*x + ω01*y + ω02*z + b)

Page 29: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 29

Нейронная сеть

Intel Confidential

Тренировка: Найти значения весов и смещений, соответствуюшие наилучшему качеству предсказаний на тренировочных данных

Page 30: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 30

Тренировка нейронной сетиМетод обратного распространения ошибки (Backpropagation)

1. Распространить входные данные по сети, чтобы получить значения результатов

2. Вычислить значение ошибки (при помощи функции стоимости)

3. Распространить ошибку обратно

– вычислить значения изменений весов и смещений на каждом слое

4. Обновить все веса и смещения, чтобы минимизировать функцию стоимости

Метод градиентного спуска:

Page 31: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Обучение «без учителя»: Кластеризация

Page 32: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 32

КластеризацияПримеры задач

– Новостное агентство хочет расположить новости с похожими заголовками внутри одной и той же секции на сайте

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

Решение: K-средних

Page 33: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

К средних

33

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

min𝑆

𝐽 𝑆 = min𝑆

𝑖=1

𝑘

𝑥∈𝑆𝑖

𝑥 − 𝜇𝑖2

𝜇𝑖 - центроид 𝑖-того кластера: 𝜇𝑖 =1

𝑆𝑖 𝑥∈𝑆𝑖

𝑥

Page 34: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 34

Алгоритм k средних

• Выбрать начальные центроиды кластеров 𝜇1, 𝜇2, … , 𝜇𝑘

• Повторять в цикле:

• Перераспределить точки по кластерам в соответствии с ближайшими центроидами:

𝑆𝑖{𝑡}

= 𝑥𝑝: 𝑥𝑝 − 𝜇𝑖𝑡

2≤ 𝑥𝑝 − 𝜇𝑗

𝑡2

, ∀𝑗

• Пересчитать значение центроидов:

𝜇𝑖𝑡+1 =

1

𝑆𝑖(𝑡)

𝑥∈𝑆𝑖(𝑡)

𝑥

• Критерий остановки: центроиды перестали изменяться

Page 35: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 35

Алгоритм k средних

Page 36: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 36

Выбор оптимального значения k

• Простая эвристика: 𝑘 ≈ 𝑛2

• Идея: Оценить изменение функции стоимости 𝐽 𝑆 = 𝑖=1𝑘 𝑥∈𝑆𝑖

𝑥 − 𝜇𝑖2

Изменение значения функции стоимости замедляется

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

Page 37: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Обучение «без учителя»:Понижение Размерности

Page 38: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 38

Примеры задач

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

– Получить компакное представление исходных данных без существенных потерь информации

– Визуализация: получить 2-х или 3-хмерную картину данных

Решение: Метод главных компонент

Понижение размерности

Page 39: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 39

Метод главных компонент (2D ⇒ 1D)

Дан набор точек в двумерном пространстве.

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

𝐿 = arg min𝐿

𝑖=1

𝑛

𝑑𝑖𝑠𝑡 𝑥 𝑖 , 𝐿2

𝑎 = arg min𝑎 =1

𝑖=1

𝑛

𝑥 𝑖 − 𝑎(𝑎, 𝑥(𝑖))2

𝒙 𝟏

𝒙 𝟐

𝑳

𝒂

Page 40: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 40

Метод главных компонент

Найти линейное многообразие размерности 𝑘 < 𝑝, сумма квадратов проекций данных на которое минимальна.

• Центрировать данные: 𝑥(𝑖) ← 𝑥(𝑖) − 𝜇, 𝜇 =1

𝑛 𝑖=1

𝑛 𝑥(𝑖)

• Для 𝑙 = 1, … , 𝑘 выполнить:

• Найти очередную главную компоненту 𝑎𝑙 как решение задачи:

𝑎𝑙 = arg min𝑎𝑙 =1

𝑖=1

𝑛

𝑥 𝑖 − 𝑎𝑙(𝑎𝑙, 𝑥(𝑖))

2

• Вычесть из данных проекцию на найденную компоненту:

𝑥 𝑖 ← 𝑥 𝑖 − 𝑎𝑙(𝑎𝑙, 𝑥(𝑖))

Page 41: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Обучение «без учителя»:Анализ рыночной корзины

Page 42: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 42

Примеры задач

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

– Интернет-магазин хочет настроить информационную рассылку для своих покупателей

Решение: Поиск ассоциативных правил

Анализ рыночной корзины

Покупатель №

Хлеб Молоко Подгузники

Яйца Пиво

1 Х Х

2 Х Х Х Х

3 Х Х Х

4 Х Х Х

5 Х Х Х

Page 43: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 43

Анализ рыночной корзины

Покупатель № Хлеб Молоко Подгузники Яйца Пиво

1 Х Х

2 Х Х Х Х

3 Х Х Х

4 Х Х Х

5 Х Х Х

Примеры наборов товаров:

• {хлеб, молоко} набор встречается в 40% транзакций (2 of 5);

• {молоко, подгузники, пиво} набор встречается в 20% транзакцийПримеры ассоциативных правил:

• {хлеб, подгузники} ⇒ {пиво} если покупает {хлеб, подгузники}, значит купит {пиво} с вероятностью 67%

• {хлеб} ⇒ {яйца} если покупает {хлеб}, значит купит {яйца} с вероятностью 20%

Page 44: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 44

Поддержка и достоверность

𝐼 = 𝑖1, 𝑖2, … , 𝑖𝑚 - набор элементов.

𝑇 ⊂ 𝐼 – транзакция.

Транзакция 𝑇 содержит 𝑋 – набор элементов из 𝐼, если 𝑋 ⊆ 𝑇.

Ассоциативное правило – импликация: 𝑋 ⇒ 𝑌, где 𝑋 ⊂ 𝐼, 𝑌 ⊂ 𝐼 и 𝑋 ∩ 𝑌 = Ø.

Пусть 𝐷 = 𝑇1, 𝑇2, … , 𝑇𝑛 - множество транзакций.

Поддержка (support) набора элементов 𝑋 ⊂ 𝐼 равна s, если s% транзакций из 𝐷содержат 𝑋.

Достоверность (confidence) правила 𝑋 ⇒ 𝑌 равна c, если c% транзакций из 𝐷, содержащих набор элементов 𝑋, также содержат набор элементов 𝑌.

𝒄𝒐𝒏𝒇𝒊𝒅𝒆𝒏𝒄𝒆 𝑿 ⇒ 𝒀 =𝒔𝒖𝒑𝒑𝒐𝒓𝒕(𝑿 ∪ 𝒀)

𝒔𝒖𝒑𝒑𝒐𝒓𝒕(𝑿)

Page 45: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 45

Поиск ассоциативных правил

Даны:

Набор транзакций: 𝐷 = 𝑇1, 𝑇2, … , 𝑇𝑛 ;

minS – минимальная поддержка;

minC – минимальная достоверность.

Найти:

1. Все наборы элементов X с поддержкой больше, чем minS.

2. Все ассоциативные правила 𝑋 ⇒ 𝑌 с достоверностью больше, чем minC.

Page 46: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

практика

Page 47: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Аспекты обработки больших данных

•Данные распределены по разным узлам

•Большой объём данных не помещается в память на одном устройстве

Объём

• Неоднородные данные

• Разреженные/Пропущенные/Зашумлённыеданные

Разно-образие

• Данные поступают по времени

Скорость

Преобразование, переупаковка, индексация

Распределённые

вычисления

Онлайн

вычисления

D1

DK

P1

RKR

...

Di Pi+1

Pi

Время

Me

mo

ryca

pa

city

Пр

изн

ак

и

ВыбросыЧисловые Категориальные Пропущенные

Во

сста

но

вл

ен

ие

Алгоритм для плотных данных

Алгоритм для разреж. данных

Счётчик

Page 48: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 48

Intel® Data Analytics Acceleration Library (Intel® DAAL)• Оптимизирована для серверов (Intel® Xeon®, Intel® Xeon Phi™) и конечных устройств (Intel®

Atom)

• Предоставляет возможность выполнять вычисления близко к источнику данных (сенсор/клиент/сервер) чтобы уменьшить время отклика, нагрузку на сеть, и повысить безопасность

• Предоставляет возможность выполнять трудоёмкие вычисления на сервере или кластере

(De-)Compression(De-)Serialization

PCAStatistical momentsQuantilesVariance matrixQR, SVD, CholeskyAprioriOutlier detection

Regression• Linear• Ridge

Classification• Naïve Bayes• SVM• Classifier boosting• kNN

Clustering• Kmeans• EM GMM

Collaborative filtering• ALS

Neural Networks

Pre-processing Transformation Analysis Modeling Decision Making

Sci

en

tifi

c/E

ng

ine

eri

ng

We

b/S

oci

al

Bu

sin

ess

Validation

Page 49: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 49

Основные особенности Intel® DAAL

Возможность построения разнообразных приложений для анализа данных

Оптимизирована для Intel® Atom™, Intel® Core™, Intel® Xeon®, to Intel® Xeon Phi™

Богатый набор широко применимых алгоритмов анализа данных и машинного обучения

Вычисления на одном узле, онлайн и распределённые вычисления

Поддержка различных форматов входных данных:

KDB*, MySQL*, HDFS, CSV

C++, Java, Python

*Other names and brands may be claimed as the property of others

Page 50: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Настройка окруженияВыполнить команду:

source activate idp (на Linux)

activate idp (на Windows)

Распаковать архив pydaal-tutorials-master.zip в локальную директорию

Архив доступен по ссылке: https://github.com/daaltces/pydaal-tutorials

В окружении (idp) выполнить команду:

cd <путь_до_pydaal-tutorials-master>

jupyter notebook

Page 51: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 51

Ссылки

• https://class.coursera.org/ml-005/lecture/preview - ML course by Andrew Ng

• https://en.wikipedia.org/wiki/Category:Machine_learning

• http://www.intuit.ru/studies/courses/13844/1241/info

• http://www.machinelearning.ru

• https://software.intel.com/en-us/daal-programming-guide

• https://software.intel.com/sites/campaigns/nest/

• https://software.intel.com/en-us/intel-parallel-studio-xe

Page 52: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 52

Вопросы?

Page 53: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Линейная Регрессия

Page 54: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Градиентный спуск

54

Функция стоимости: 𝐽 𝛽0, 𝛽1 =1

2𝑛 𝑖=1

𝑛 𝛽0 + 𝛽1𝑥(𝑖) − 𝑦(𝑖) 2

Метод градиентного спуска:

𝛽𝑗{𝑘+1}

= 𝛽𝑗{𝑘}

− 𝛼𝜕

𝜕𝛽𝑗𝐽(𝛽0, 𝛽1)

Результат:

𝛽0𝑘+1

= 𝛽0𝑘

− 𝛼1

𝑛

𝑖=1

𝑛

ℎ 𝑥 𝑖 − 𝑦 𝑖

𝛽1𝑘+1

= 𝛽1𝑘

− 𝛼1

𝑛

𝑖=1

𝑛

ℎ 𝑥 𝑖 − 𝑦 𝑖 𝑥 𝑖

𝜷 𝟎

𝜷 𝟏

𝜷 𝟐

−𝜵𝑱(𝜷 𝟏 )

−𝜵𝑱(𝜷 𝟎 )

𝜷∗

Page 55: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 55

Недостатки градиентного спуска

• Неоптимальный размер шага

• Слишком маленький – увеличение числа итераций

• Слишком большой – плохая сходимость

• Выбор начального приближения

• Неэффективен для овражных функций

• Функция стоимости может быть овражной при ненормализованных входных данных

Page 56: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Логистическая Регрессия

Page 57: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 57

Метод максимального правдоподобия

Идея: Выбрать коэффициенты Θ = (𝜃1, … , 𝜃𝑝) таким образом, чтобы

максимизировать вероятность совместного появления результатов

выборки 𝑦(1), 𝑦(2), … , 𝑦(𝑛).

Функция правдоподобия:

𝐿 𝑦(1), 𝑦(2), … , 𝑦(𝑛)|Θ = 𝑝 𝑦(1) Θ ⋅ … ⋅ 𝑝(𝑦(𝑛)|Θ)

Метод максимального правдоподобия:

maxΘ

𝑙𝑛(𝐿 𝑦(1), 𝑦(2), … , 𝑦(𝑛)|Θ )

Page 58: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 58

Градиентный спуск

Функция потерь:

𝐽 Θ = −1

𝑛ln 𝐿 𝛩 = −

1

𝑛

𝑖=1

𝑛

𝑦 𝑖 ln ℎ 𝑥(𝑖) + (1 − 𝑦(𝑖)) 1 − ln ℎ 𝑥(𝑖)

Метод градиентного спуска:

𝜃𝑗{𝑘+1}

= 𝜃𝑗{𝑘}

− 𝛼𝜕

𝜕𝜃𝑗𝐽(Θ)

Результат:

𝜃𝑗𝑘+1

= 𝜃𝑗𝑘

− 𝛼1

𝑛

𝑖=1

𝑛

ℎ 𝑥 𝑖 − 𝑦 𝑖 𝑥𝑗(𝑖)

Page 59: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение

Коллаборативная фильтрация

Page 60: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 60

Пример из жизни

Рекомендация полезных услуг/товаров пользователям

Amazon, Netflix, Spotify,... пользуются этим постоянно

Page 61: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 61

Коллаборативная фильтрация

• Обрабатывает прошлое поведение пользователей, их активности или оценки

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

Page 62: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 62

Alternating least squares (ALS)

Дана матрица рейтингов: 𝑅 = 𝑟𝑖𝑗 ; 𝑖 = 1, … 𝑁𝑢; 𝑗 = 1, … , 𝑁p

Интуиция: использовать пространство более низкой размерности

𝑟𝑖𝑗 ≅

𝑘=1

𝐾

𝑥𝑖𝑘 ∗ 𝑦𝑗𝑘

Факторизовать матрицу R как Q = X x YT

• K << 𝑁𝑢, 𝑁𝑝

Np

Nu

Nu x K K x Np

X YT

Page 63: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 63

Нелинейная оптимизационная проблема

Метод наименьших квадратов (по всем известным значениям рейтингов):

Приближаются не исходные значения рейтингов, а значения «предпочтений»:

Парамеры cui характеризуют уровень уверенности:𝛼 > 0 – контролирует уровень уверенности

Page 64: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Введение в машинное обучение 64

Alternating least squares (ALS)

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

ALS:

• Фиксировать значения матриц X и Y попеременно

• Метод нормальных уравнений

Page 65: Введение в машинное обучениеdelta-course.org/docs/delta7/Day1/Delta7D1L1.pdf · Введение в машинное ... C++, Java, Python *Other names and

Placeholder Footer Copy / BU Logo or Name Goes Here