Лекция 10
Алгоритмические композиции
Кульминация и развязка
Владимир Гулин
26 ноября 2014 г.
План лекции
Напоминание
Бустинг
Градиентный бустинг
Мета-алгоритмы
1 / 40
Задача обучения с учителем
Постановка задачи
Пусть дан набор объектов 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
Алгоритмические композиции
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
Идея бустинга
Снова выбираем ноутбук
Вместо того, чтобы спрашивать у всех экспертов, какой ноутбук
выбрать, будем после каждого очередного мнения менять наш
вопрос.
Более реалистичная модель
Уточняем наш вопрос в зависимости от ответов предыдущих
экспертов
4 / 40
Boosting vs Bagging
Стрельба в тире Игра в гольф
5 / 40
Бустинг для задачи бинарной классификации
Пусть
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
Ключевые идеи бустинга
Используем “слабые” модели ai
Последовательно применяем слабые модели к “слегка”
изменяемым версиям оригинальных данных
При добавлении очередной модели ai , предыдущие i − 1
моделей не меняются
Аппроксимируем функцию потерь гладкой функцией
7 / 40
Аппроксимация пороговой функции экспонентой
Очевидно, что верно соотношение
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
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
AdaBoost. Пример
10 / 40
AdaBoost. Пример
11 / 40
AdaBoost. Пример
12 / 40
AdaBoost. Пример
13 / 40
Почему именно аппроксимация экспонентой?
14 / 40
Какие базовые модели выбрать?
Теорема:
Если на каждой итерации метод обучения позволяет построить
базовую модель, такую что число верных классификаций больше,
чем число неверных. Тогда метод обучения сходится за конечное
число шагов.
Базовые модели должны обладать достаточной сложностью,
чтобы обеспечить это требование.
Вопрос:
Можно ли использовать в качестве базовых моделей линейную
регрессию для алгоритма AdaBoost?
15 / 40
Boosting decision stumps
16 / 40
Удивительные факты о бустинге
не переобучается с увеличением числа итераций
17 / 40
Bias & variance
Оценка ожидания ошибки на некоторой точки x0
Err(x0) = Bias2
+ Variance + Noise(Irreducible Error)
Бэггинг уменьшает Variance
Бустинг уменьшает и Variance и Bias. Причем начальные
модели отвечают за уменьшение именно Bias, а остальные за
уменьшение Variance.
18 / 40
Применение AdaBoost
Viola–Jones object detection framework
ai (xj ) =
αi если fi (xj ) > θi
βi иначе
19 / 40
AdaBoost. Итоги
 Алгоритм прост
 Накладные расходы бустинга минимальны. Время построения
определяется временем построения базовых моделей
 Показывает хорошую обобщающую способность
 Имеет возможность идентификации шумовых объектов
 Жадное добавление алгоритмов приводит к неоптимальности
композиции
 Склонен к переобучению при наличии шума в данных (опять же
из-за экспоненциальной функции потерь)
 Переобучается при “малом” количестве данных
20 / 40
Градиентный бустинг
Модель взвешенного голосования
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
Градиентный бустинг
Применим метод минимизации (метод наискорейшего спуска) err(h):
Тогда
hi,j = hi−1,j − η · err (hi−1,j ), j = 1, . . . , N
η - шаг спуска
Основная идея:
На каждом шаге алгоритма будем искать модель ai , которая
аппроксимировала бы вектор антиградиента.
22 / 40
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
Gradient boosting  overfitting
Необходимо подбирать число деревьев на валидационной
выборке
24 / 40
Shrinkage
Идея:
Будем делать шаг каждым алгоритмом с некоторым дисконтом
hi (x) = hi−1(x) + µ · bi · ai (x)
Дадим гольфисту тяжелую клюшку, чтоб он не мог ударить
сильно
25 / 40
Stohastic gradient boosting
Stohastic gradient boosting = Gradient Boosting + Bagging
Идея:
Для построения очередного алгоритма используются случайная
подвыборка, полученная алгоритмом выбора без возвращения
Выдадим гольфисту шары разной формы
Преимущества
Уменьшается время обучения
Лучше сходится (эквивалентно методу стохастического
градиентного спуска)
Имеет более высокую обобщающую способность
26 / 40
Shrinkage  Subsampling
27 / 40
Regularization in leafs
Идея:
Не все листы имеют одинаковый вклад
“Важность” листа зависит от числа объектов в нем
Дадим гольфисту палку вместо клюшки
Варианты решения:
Ограничить минимальное число примеров в листьях
Домножить значения в листьях на некоторую фукцию,
зависящую от количества примеров
28 / 40
OOB  Feature Importance
29 / 40
Gradient boosting algorithm complexity
Вычисление градиента O(g(N))
Построение модели (дерева) O(ND)
Вычисление предсказания O(N)
Построение дерева может быть эффективно распараллелено по
фичам. Поэтому в целом быстро.
30 / 40
Gradient boosting. Итоги
Gradient boosting - общий алгоритм бустинга. Позволяет
работать с произвольными функциями потерь и пространствами
ответов.
Чаще всего применяется с деревьями решений.
Показывает наилучшее качество для задач классификации,
регресии и ранжирования.
Применять надо с регуляризацией, иначе результаты могут
получиться удручающими.
Вопрос:
А что делать если функция не дифференцируема?
31 / 40
Стохастические алгоритмы и бустинг. Итоги
 Бустинг лучше работает для больших обучающих выборок в
ситуациях когда в данных имеются сложные зависимости.
 Стохастические методы лучше работают для коротких
обучающих выборок
 Стохастические алгоритмы можно эффективно распараллелить.
Бустинг предполагает последовательное построение композиции.
 RSM наиболее эффективен в пространствах большой
размерности
 Для бустинга лучше строить длинные композиции из слабых
моделей, чем короткие из сильных
Вопрос:
А всегда ли стоит использовать деревянные модели bagging 
boosting?
32 / 40
BagBoo  BooBag
Идея:
Объединим стратегии бустинга и бэггинга
Если объединять бустинг бэггингом то BagBoo
Если объединять бэггинг бустингом то BooBag
33 / 40
Итоги
Бустингом бэггинг не испортишь! (и наоборот)
При таком подходе реальное качество почти неограничено... все
упирается в число деревьев
К сожалению, не получается применять в больших
высоконагруженных системах
Если есть много машин, то можно оценить верхнюю границу
качества системы машинного обучения
34 / 40
Задача
Дано: Имеется набор данных из системы поискового антиспама.
Требуется: Требуется сравнить классификаторы, основанные на
алгоритмических композициях, с методом опорных векторов.
Пошаговая инструкция
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
Дз по алгоритмическим композициям:
Задание:
Реализовать один из алгоритмов машинного обучения, являющегося
композицией алгоритмов и применить свою реализацию на данных
из репозитория UCI.
Имеется 12 вариантов задания:
Для того, чтобы узнать свой вариант необходимо выполнить
функцию:
def ComputeMyTaskNumber(your_name):
return 1 + hash(your_name) % 12
где your_name - это ваши фамилия и имя латиницей (например
’Pupkin Vasiliy’)
36 / 40
Варианты:
1. Реализация модельного дерева решений с линейной регрессией
в листьях
2. Реализация алгоритма Random Forest (базовый алгоритм CART)
3. Реализация алгоритма AdaBoost (базовый алгоритм CART)
4. Реализация алгоритма градиентного бустинга с квадратичной
функцией потерь. В качестве базового алгоритма использовать
алгоритм CART.
5. Реализация алгоритма градиентного бустинга с логистической
футкцией потерь. В качестве базового алгоритма использовать
алгоритм CART.
6. Реализация алгоритма градиентного бустинга с квадратичной
функцией потерь. В качестве базового алгоритма использовать
алгоритм CART с RSM.
37 / 40
Варианты:
7. Реализация алгоритма градиентного бустинга с логистической
футкцией потерь. В качестве базового алгоритма использовать
алгоритм CART c RSM.
8. Реализация алгоритма стохастического градиентного бустинга с
квадратичной функцией потерь. В качестве базового алгоритма
использовать алгоритм CART.
9. Реализация алгоритма стохастического градиентного бустинга с
логистической футкцией потерь. В качестве базового алгоритма
использовать алгоритм CART.
10. Реализация алгоритма стохастического градиентного бустинга с
квадратичной функцией потерь. В качестве базового алгоритма
использовать алгоритм CART с RSM.
11. Реализация алгоритма стохастического градиентного бустинга с
логистической футкцией потерь. В качестве базового алгоритма
использовать алгоритм CART c RSM.
12. Реализация алгоритма BagBoo. В качестве базового алгоритма
использовать алгоритм градиентного бустинга с функцией
потерь (регрессия).
38 / 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
Вопросы

Лекция №10 "Алгоритмические композиции. Завершение"

  • 1.
    Лекция 10 Алгоритмические композиции Кульминацияи развязка Владимир Гулин 26 ноября 2014 г.
  • 2.
  • 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
  • 6.
    Boosting vs Bagging Стрельбав тире Игра в гольф 5 / 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 & Shapire1995) 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
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    Какие базовые моделивыбрать? Теорема: Если на каждой итерации метод обучения позволяет построить базовую модель, такую что число верных классификаций больше, чем число неверных. Тогда метод обучения сходится за конечное число шагов. Базовые модели должны обладать достаточной сложностью, чтобы обеспечить это требование. Вопрос: Можно ли использовать в качестве базовых моделей линейную регрессию для алгоритма AdaBoost? 15 / 40
  • 17.
  • 18.
    Удивительные факты обустинге не переобучается с увеличением числа итераций 17 / 40
  • 19.
    Bias & variance Оценкаожидания ошибки на некоторой точки x0 Err(x0) = Bias2 + Variance + Noise(Irreducible Error) Бэггинг уменьшает Variance Бустинг уменьшает и Variance и Bias. Причем начальные модели отвечают за уменьшение именно Bias, а остальные за уменьшение Variance. 18 / 40
  • 20.
    Применение AdaBoost Viola–Jones objectdetection framework ai (xj ) = αi если fi (xj ) > θi βi иначе 19 / 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 Stohasticgradient boosting = Gradient Boosting + Bagging Идея: Для построения очередного алгоритма используются случайная подвыборка, полученная алгоритмом выбора без возвращения Выдадим гольфисту шары разной формы Преимущества Уменьшается время обучения Лучше сходится (эквивалентно методу стохастического градиентного спуска) Имеет более высокую обобщающую способность 26 / 40
  • 28.
  • 29.
    Regularization in leafs Идея: Невсе листы имеют одинаковый вклад “Важность” листа зависит от числа объектов в нем Дадим гольфисту палку вместо клюшки Варианты решения: Ограничить минимальное число примеров в листьях Домножить значения в листьях на некоторую фукцию, зависящую от количества примеров 28 / 40
  • 30.
    OOB FeatureImportance 29 / 40
  • 31.
    Gradient boosting algorithmcomplexity Вычисление градиента O(g(N)) Построение модели (дерева) O(ND) Вычисление предсказания O(N) Построение дерева может быть эффективно распараллелено по фичам. Поэтому в целом быстро. 30 / 40
  • 32.
    Gradient boosting. Итоги Gradientboosting - общий алгоритм бустинга. Позволяет работать с произвольными функциями потерь и пространствами ответов. Чаще всего применяется с деревьями решений. Показывает наилучшее качество для задач классификации, регресии и ранжирования. Применять надо с регуляризацией, иначе результаты могут получиться удручающими. Вопрос: А что делать если функция не дифференцируема? 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
  • 41.