3. Задача классификации
Пусть дана выборка, состоящая из обучающих объектов
X = (x1, . . . , xN ),
и соответствующих значений целевой переменной
Y = (y1, . . . , yN ) = (f (x1), . . . , f (xN )).
Требуется найти функцию h(x), наилучшим образом приближающую
f (x), то есть точно предсказывающую значение целевой переменной
для любых x.
4. Недостатки одиночных моделей
Statistical issue
риск выбрать неправильную гипотезу из возможного набора,
учитывая ограниченность выборки
Computational issue
риск получить локальный минимум в результате оптимизации
Representational issue
риск, что ни одна из моделей не окажется достаточно хорошей
5. Метод ансамблей
Идея
Построить несколько базовых моделей и правильным образом
скомбинировать их для принятия решения. В идеале базовые
модели должны быть максимально точными и при этом
разнообразными.
6. Виды ансамблей
комбинация классификаторов (combining classifiers)
pattern recognition
ансамбль слабых моделей (ensemble of weak learners)
machine learning
смесь экспертов (mixture of experts)
neural networks
7. Стоит ли?
Рекомендательные системы
Победитель Netflx Prize $1M
(первое и второе места)
Компьютерное зрение
AdaBoost with cascade –
определение лиц на фото
(или стыковка с МКС )
Медицинская диагностика
Определение болезни на
ранней стадии
8. Boosting
Пусть дан алгоритм обучения “слабой” модели – такой, которая
только немного лучше случайности
Идея метода
Последовательно обучать слабые
модели так, что каждая
следующая модель “исправляет
ошибки” предыдущих. Для
предсказания используется
комбинация из всех моделей
последовательности.
9. AdaBoost
ada_boost(X, Y , T):
инициализируем D1 = 1/m
for t = 1, . . . , T:
обучаем модель ht(x) = L(X, Y ),
принимая во внимание распределение Dt
вычисляем ошибку ht(x): t = Px∼Dt
(ht(x) = f (x))
if t > error_rdm:
break
вычисляем вес ht(x): at = 1
2 ln(1− t
t
)
новое распределение: Dt+1(x) = Dt (x)
Zt
exp(−atf (x)ht(x))
return H(x) = sign
T
t=1 atht(x)
10. Свойства AdaBoost
Минимизирует экспоненциальную ошибку (exponential loss)
Lexp(h|D) = Ex∼D[e−f (x)h(x)
]
Требует обучения модели с учетом распределения
Варианты: re-weighting или re-sampling
Ошибка классификации
D ≤ X + O
dT
N
(d отражает “сложность” классификатора)
12. Пример
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, иначе
14. AdaBoost. Итоги
+ Высокая точность
+ Почти не переобучается
— Трудно параллелизовать
— Чувствителен к шуму
15. Bagging
Bagging = Bootstrap + Aggregating
Идея метода
Обучить несколько независимых моделей на основании случайно
выбранных (bootstrap) подмножеств объектов из обучающей
выборки. Классификация производится на основании результата
голосования (aggregating) моделей.
16. Bagging
bagging(X, Y , T):
for t = 1, . . . , T:
генерируем bootstrap-распределение Dbs
обучаем модель ht(x) = L(X, Y ),
принимая во внимание распределение Dbs
return H(x) = arg maxy∈Y
T
t=1 I(ht(x) = y)
18. Random Forest
random_tree(X, Y , K):
N – узел дерева для X
if все x ∈ X одного класса:
return N
F – случайно выбираем K признаков
f ∈ F – признак, наилучшим образом разделяющий X
Nl = random_tree(Xf
l , Y f
l , K)
Nr = random_tree(Xf
r , Y f
r , K)
добавляем Nl и Nr как детей к N
return N
20. Модификации Random Forest
VR-Tree
В каждом узле с вероятностью α просиходит случайный выбор
признака
Density estimation
Польностью случайное дерево
Anomaly Detection
Польностью случайное дерево с ограничением по глубине
SCiForest
26. Задача. Распознавание цифр
Дана обучающая выборка с картинками 8x8, на каждой из картинок
изображена рукописная цифра.
$ python digits.py -s 25
1. для алгоритма AdaBoost построить график зависимости
train_error и test_error от T
2. для алгоритма RandomForest построить график зависимости
train_error и test_error от размера леса
3. реализовать простейший голосующий ансамбль и исследовать
зависимость его точности от вида и количества базовых моделей