Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова. Курс "Алгоритмы интеллектуальной обработки больших объемов данных", Лекция №10 "Алгоритмические композиции. Завершение"
Лектор - Владимир Гулин
Ключевые идеи бустинга. Отличия бустинга и бэггинга. Алгорим AdaBoost. Градиентный бустинг. Мета-алгоритмы над алгоритмическими композициями. Алгоритм BagBoo.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9pyyrqknouMZbIPf4l3CwUP
3. Задача обучения с учителем
Постановка задачи
Пусть дан набор объектов D = {(xi , yi )}, xi ∈ X, yi ∈ Y, i ∈ 1, . . . , N,
полученный из неизвестной закономерности y = f (x). Необходимо
построить такую h(x), которая наиболее точно аппроксимирует f (x).
Будем искать неизвестную
h(x) = C(a1(x), . . . , aT (x))
ai (x) : X → R, ∀i ∈ {1, . . . , T} - базовые модели
C : R → Y - решающее правило
2 / 40
4. Алгоритмические композиции
Simple Voting
h(x) =
1
T
T
i=1
ai (x)
Weighted Voting
h(x) =
1
T
T
i=1
bi ai (x), bi ∈ R
Mixture of Experts
h(x) =
1
T
T
i=1
bi (x)ai (x), bi (x) : X → R
3 / 40
5. Идея бустинга
Снова выбираем ноутбук
Вместо того, чтобы спрашивать у всех экспертов, какой ноутбук
выбрать, будем после каждого очередного мнения менять наш
вопрос.
Более реалистичная модель
Уточняем наш вопрос в зависимости от ответов предыдущих
экспертов
4 / 40
7. Бустинг для задачи бинарной классификации
Пусть
Y = −1, +1, ai : X → {−1, 0, +1}, i = 1 . . . T
Будем строить модель взвешенного голосования:
h(x) = sign
T
i=1
bi ai (x) , bi ∈ R
Функция потерь
err(h) =
1
N
N
j=1
I(yj = h(xj ))
6 / 40
8. Ключевые идеи бустинга
Используем “слабые” модели ai
Последовательно применяем слабые модели к “слегка”
изменяемым версиям оригинальных данных
При добавлении очередной модели ai , предыдущие i − 1
моделей не меняются
Аппроксимируем функцию потерь гладкой функцией
7 / 40
9. Аппроксимация пороговой функции экспонентой
Очевидно, что верно соотношение
I(y = a(x)) = I(y · a(x) ≤ 0) ≤ e−y·a(x)
Тогда ошибку композиции h(x) можно оценить сверху
0 ≤ err(h) =
1
N
N
j=1
I(yj = h(xj )) ≤
≤
1
N
N
j=1
exp −yj
T−1
i=1
bi ai (x) · exp(−yj bT aT (x)) → 0
8 / 40
10. AdaBoost(Freund & Shapire 1995)
1. Инициализировать веса объектов wj = 1/N, j = 1, 2, . . . , N.
2. Для всех i от 1 до T:
(a) Построить классификатор ai (x), используя веса wj
(b) Вычислить
erri =
N
j=1 wj I(yj = ai (xj ))
N
j=1 wj
(c) Вычислить
bi = log
1 − erri
erri
(d) Присвоить wj → wj · exp[bi · I(yj = ai (xj ))], j = 1, . . . , N.
3. h(x) = sign
T
i=1 bi ai (x)
9 / 40
16. Какие базовые модели выбрать?
Теорема:
Если на каждой итерации метод обучения позволяет построить
базовую модель, такую что число верных классификаций больше,
чем число неверных. Тогда метод обучения сходится за конечное
число шагов.
Базовые модели должны обладать достаточной сложностью,
чтобы обеспечить это требование.
Вопрос:
Можно ли использовать в качестве базовых моделей линейную
регрессию для алгоритма AdaBoost?
15 / 40
18. Удивительные факты о бустинге
не переобучается с увеличением числа итераций
17 / 40
19. Bias & variance
Оценка ожидания ошибки на некоторой точки x0
Err(x0) = Bias2
+ Variance + Noise(Irreducible Error)
Бэггинг уменьшает Variance
Бустинг уменьшает и Variance и Bias. Причем начальные
модели отвечают за уменьшение именно Bias, а остальные за
уменьшение Variance.
18 / 40
21. AdaBoost. Итоги
Алгоритм прост
Накладные расходы бустинга минимальны. Время построения
определяется временем построения базовых моделей
Показывает хорошую обобщающую способность
Имеет возможность идентификации шумовых объектов
Жадное добавление алгоритмов приводит к неоптимальности
композиции
Склонен к переобучению при наличии шума в данных (опять же
из-за экспоненциальной функции потерь)
Переобучается при “малом” количестве данных
20 / 40
22. Градиентный бустинг
Модель взвешенного голосования
h(x) =
T
i=1
bi ai (x), x ∈ X, bi ∈ R
Ошибка композиции на обучающей выборке
err(h) =
N
j=1
L(yj ,
T−1
i=1
bi ai (xj ) + b · a(xj )) → min
b,a
Применяем жадную стратегию добавления моделей
Как и раньше оставляем построенные алгоритмы с весами
неизменными
21 / 40
23. Градиентный бустинг
Применим метод минимизации (метод наискорейшего спуска) err(h):
Тогда
hi,j = hi−1,j − η · err (hi−1,j ), j = 1, . . . , N
η - шаг спуска
Основная идея:
На каждом шаге алгоритма будем искать модель ai , которая
аппроксимировала бы вектор антиградиента.
22 / 40
24. Gradient boosting algorithm
1. Инициализировать h0(x) = argminγ
N
j=1
L(yj , γ)
2. Для всех i от 1 до T:
(a) Для всех j = 1, 2, . . . , N вычислить
gi,j = −
∂L(yj , h(xj ))
∂h(xj ) h=hi−1
(b) Построить базовую модель ai на ответах gi,j
ai = arg min
β,a
N
j=1
(gi,j − βa(xj ))2
(c) Определить вес bi
bi = arg min
b
N
j=1
L(yj , hi−1(x) + b · ai (xj ))
(d) Присвоить hi (x) = hi−1(x) + bi · ai (x)
3. Вернуть h(x) = hT (x)
23 / 40
25. Gradient boosting overfitting
Необходимо подбирать число деревьев на валидационной
выборке
24 / 40
26. Shrinkage
Идея:
Будем делать шаг каждым алгоритмом с некоторым дисконтом
hi (x) = hi−1(x) + µ · bi · ai (x)
Дадим гольфисту тяжелую клюшку, чтоб он не мог ударить
сильно
25 / 40
27. Stohastic gradient boosting
Stohastic gradient boosting = Gradient Boosting + Bagging
Идея:
Для построения очередного алгоритма используются случайная
подвыборка, полученная алгоритмом выбора без возвращения
Выдадим гольфисту шары разной формы
Преимущества
Уменьшается время обучения
Лучше сходится (эквивалентно методу стохастического
градиентного спуска)
Имеет более высокую обобщающую способность
26 / 40
29. Regularization in leafs
Идея:
Не все листы имеют одинаковый вклад
“Важность” листа зависит от числа объектов в нем
Дадим гольфисту палку вместо клюшки
Варианты решения:
Ограничить минимальное число примеров в листьях
Домножить значения в листьях на некоторую фукцию,
зависящую от количества примеров
28 / 40
31. Gradient boosting algorithm complexity
Вычисление градиента O(g(N))
Построение модели (дерева) O(ND)
Вычисление предсказания O(N)
Построение дерева может быть эффективно распараллелено по
фичам. Поэтому в целом быстро.
30 / 40
32. Gradient boosting. Итоги
Gradient boosting - общий алгоритм бустинга. Позволяет
работать с произвольными функциями потерь и пространствами
ответов.
Чаще всего применяется с деревьями решений.
Показывает наилучшее качество для задач классификации,
регресии и ранжирования.
Применять надо с регуляризацией, иначе результаты могут
получиться удручающими.
Вопрос:
А что делать если функция не дифференцируема?
31 / 40
33. Стохастические алгоритмы и бустинг. Итоги
Бустинг лучше работает для больших обучающих выборок в
ситуациях когда в данных имеются сложные зависимости.
Стохастические методы лучше работают для коротких
обучающих выборок
Стохастические алгоритмы можно эффективно распараллелить.
Бустинг предполагает последовательное построение композиции.
RSM наиболее эффективен в пространствах большой
размерности
Для бустинга лучше строить длинные композиции из слабых
моделей, чем короткие из сильных
Вопрос:
А всегда ли стоит использовать деревянные модели bagging
boosting?
32 / 40
34. BagBoo BooBag
Идея:
Объединим стратегии бустинга и бэггинга
Если объединять бустинг бэггингом то BagBoo
Если объединять бэггинг бустингом то BooBag
33 / 40
35. Итоги
Бустингом бэггинг не испортишь! (и наоборот)
При таком подходе реальное качество почти неограничено... все
упирается в число деревьев
К сожалению, не получается применять в больших
высоконагруженных системах
Если есть много машин, то можно оценить верхнюю границу
качества системы машинного обучения
34 / 40
36. Задача
Дано: Имеется набор данных из системы поискового антиспама.
Требуется: Требуется сравнить классификаторы, основанные на
алгоритмических композициях, с методом опорных векторов.
Пошаговая инструкция
1. Скачать данные и запустить шаблон кода на python
http://goo.gl/ASDF7U
$ python compos.py -h
$ python compos.py -tr spam.train.txt -te spam.test.txt
2. Подобрать параметры 3х алгоритмических композиций, чтобы
они превосходили по качеству SVM.
3. Построить графики качества классификации, в зависимости от
числа базовых моделей.
35 / 40
37. Дз по алгоритмическим композициям:
Задание:
Реализовать один из алгоритмов машинного обучения, являющегося
композицией алгоритмов и применить свою реализацию на данных
из репозитория UCI.
Имеется 12 вариантов задания:
Для того, чтобы узнать свой вариант необходимо выполнить
функцию:
def ComputeMyTaskNumber(your_name):
return 1 + hash(your_name) % 12
где your_name - это ваши фамилия и имя латиницей (например
’Pupkin Vasiliy’)
36 / 40
38. Варианты:
1. Реализация модельного дерева решений с линейной регрессией
в листьях
2. Реализация алгоритма Random Forest (базовый алгоритм CART)
3. Реализация алгоритма AdaBoost (базовый алгоритм CART)
4. Реализация алгоритма градиентного бустинга с квадратичной
функцией потерь. В качестве базового алгоритма использовать
алгоритм CART.
5. Реализация алгоритма градиентного бустинга с логистической
футкцией потерь. В качестве базового алгоритма использовать
алгоритм CART.
6. Реализация алгоритма градиентного бустинга с квадратичной
функцией потерь. В качестве базового алгоритма использовать
алгоритм CART с RSM.
37 / 40
39. Варианты:
7. Реализация алгоритма градиентного бустинга с логистической
футкцией потерь. В качестве базового алгоритма использовать
алгоритм CART c RSM.
8. Реализация алгоритма стохастического градиентного бустинга с
квадратичной функцией потерь. В качестве базового алгоритма
использовать алгоритм CART.
9. Реализация алгоритма стохастического градиентного бустинга с
логистической футкцией потерь. В качестве базового алгоритма
использовать алгоритм CART.
10. Реализация алгоритма стохастического градиентного бустинга с
квадратичной функцией потерь. В качестве базового алгоритма
использовать алгоритм CART с RSM.
11. Реализация алгоритма стохастического градиентного бустинга с
логистической футкцией потерь. В качестве базового алгоритма
использовать алгоритм CART c RSM.
12. Реализация алгоритма BagBoo. В качестве базового алгоритма
использовать алгоритм градиентного бустинга с функцией
потерь (регрессия).
38 / 40
40. Данные UCI:
Для вариантов 1, 2, 4, 6, 8, 10, 12 следует использовать тестовые
датасеты:
https://archive.ics.uci.edu/ml/datasets/Housing
https://archive.ics.uci.edu/ml/datasets/Auto+MPG
https:
//archive.ics.uci.edu/ml/datasets/Computer+Hardware
Для вариантов 3, 5, 7, 9, 11 следует использовать тестовые
датасеты:
https://archive.ics.uci.edu/ml/datasets/Wine
https://archive.ics.uci.edu/ml/datasets/Iris
https:
//archive.ics.uci.edu/ml/datasets/Liver+Disorders
39 / 40