l11: Метод ансамблей
DESCRIPTION
Data Science, ТехносфераTRANSCRIPT
Введение в Data ScienceЗанятие 10. Метод ансамблей
Николай Анохин Михаил Фирулик
17 мая 2014 г.
Метод ансамблей
Boosting
Bagging
Комбинирование моделей
Задача классификации
Пусть дана выборка, состоящая из обучающих объектов
X = (x1, . . . , xN),
и соответствующих значений целевой переменной
Y = (y1, . . . , yN) = (f (x1), . . . , f (xN)).
Требуется найти функцию h(x), наилучшим образом приближающуюf (x), то есть точно предсказывающую значение целевой переменнойдля любых x.
Недостатки одиночных моделей
I Statistical issueриск выбрать неправильную гипотезу из возможного набора,учитывая ограниченность выборки
I Computational issueриск получить локальный минимум в результате оптимизации
I Representational issueриск, что ни одна из моделей не окажется достаточно хорошей
Метод ансамблей
ИдеяПостроить несколько базовых моделей и правильным образомскомбинировать их для принятия решения. В идеале базовыемодели должны быть максимально точными и при этомразнообразными.
Виды ансамблей
I комбинация классификаторов (combining classifiers)pattern recognition
I ансамбль слабых моделей (ensemble of weak learners)machine learning
I смесь экспертов (mixture of experts)neural networks
Стоит ли?
I Рекомендательные системыПобедитель Netflx Prize $1M(первое и второе места)
I Компьютерное зрениеAdaBoost with cascade –определение лиц на фото(или стыковка с МКС -)
I Медицинская диагностикаОпределение болезни наранней стадии
Boosting
Пусть дан алгоритм обучения “слабой” модели – такой, котораятолько немного лучше случайности
Идея методаПоследовательно обучать слабыемодели так, что каждаяследующая модель “исправляетошибки” предыдущих. Дляпредсказания используетсякомбинация из всех моделейпоследовательности.
AdaBoost
ada_boost(X, Y , T):инициализируем D1 = 1/mfor t = 1, . . . ,T:обучаем модель ht(x) = L(X,Y ),принимая во внимание распределение Dt
вычисляем ошибку ht(x): εt = Px∼Dt (ht(x) 6= f (x))if εt > error_rdm:break
вычисляем вес ht(x): at =12 ln(
1−εtεt
)
новое распределение: Dt+1(x) =Dt(x)Zt
exp(−at f (x)ht(x))return H(x) = sign
∑Tt=1 atht(x)
Свойства AdaBoost
I Минимизирует экспоненциальную ошибку (exponential loss)
Lexp(h|D) = Ex∼D[e−f (x)h(x)]
I Требует обучения модели с учетом распределенияВарианты: re-weighting или re-sampling
I Ошибка классификации
εD ≤ εX + O
(√dT
N
)
(d отражает “сложность” классификатора)
AdaBoost: тесты
Пример
h1(x) =
{+1, если x1 > −0.5
−1, иначеh2(x) =
{−1, если x1 > −0.5
+1, иначе
h3(x) =
{+1, если x1 > +0.5
−1, иначеh4(x) =
{−1, если x1 > +0.5
+1, иначе
h5(x) =
{+1, если x2 > −0.5
−1, иначеh6(x) =
{−1, если x2 > −0.5
+1, иначе
h7(x) =
{+1, если x2 > +0.5
−1, иначеh8(x) =
{−1, если x2 > +0.5
+1, иначе
Еще boosting
I LogitBoost
Llog (h|D) = Ex∼D
[ln(1 + e−2f (x)h(x)
)]I GradientBoosting
оптимизация произвольной функции потерь + регуляризация
AdaBoost. Итоги
+ Высокая точность+ Почти не переобучается— Трудно параллелизовать— Чувствителен к шуму
Bagging
Bagging = Bootstrap + Aggregating
Идея методаОбучить несколько независимых моделей на основании случайновыбранных (bootstrap) подмножеств объектов из обучающейвыборки. Классификация производится на основании результатаголосования (aggregating) моделей.
Bagging
bagging(X, Y , T):for t = 1, . . . ,T:генерируем bootstrap-распределение Dbs
обучаем модель ht(x) = L(X,Y ),принимая во внимание распределение Dbs
return H(x) = argmaxy∈Y∑T
t=1 I(ht(x) = y)
Bagging: тесты
Random Forest
random_tree(X, Y , K):N – узел дерева для Xif все x ∈ X одного класса:return N
F – случайно выбираем K признаковf ∈ F – признак, наилучшим образом разделяющий XNl = random_tree(X f
l ,Yfl ,K )
Nr = random_tree(X fr ,Y
fr ,K )
добавляем Nl и Nr как детей к Nreturn N
Random Forest: тесты
Модификации Random Forest
I VR-TreeВ каждом узле с вероятностью α просиходит случайный выборпризнака
I Density estimationПольностью случайное дерево
I Anomaly DetectionПольностью случайное дерево с ограничением по глубинеSCiForest
Density Estimation
Random Forest. Итоги
+ Высокая точность+ Мало переобучения+ Легко параллелится— Медленный без параллелизма
Сравнение методов
Зоопарк комбинаций
Задача регрессииI averagingI weighted averaging
Задача классификацииI majority votingI plurality votingI weighted votingI soft voting
Кроме того: stacking
Выводы
Задача. Распознавание цифр
Дана обучающая выборка с картинками 8x8, на каждой из картинокизображена рукописная цифра.
$ python digits.py -s 25
1. для алгоритма AdaBoost построить график зависимостиtrain_error и test_error от T
2. для алгоритма RandomForest построить график зависимостиtrain_error и test_error от размера леса
3. реализовать простейший голосующий ансамбль и исследоватьзависимость его точности от вида и количества базовых моделей