Алгоритмы бустинга — различия между версиями
| Wdywbac (обсуждение | вклад) | Wdywbac (обсуждение | вклад)  | ||
| Строка 1: | Строка 1: | ||
| [[Бустинг, AdaBoost | Бустинг]] {{---}} это композиция алгоритмов, где на каждой итерации алгоритм пытается исправить все ошибки композиции предыдущих алгоритмов.   | [[Бустинг, AdaBoost | Бустинг]] {{---}} это композиция алгоритмов, где на каждой итерации алгоритм пытается исправить все ошибки композиции предыдущих алгоритмов.   | ||
| − | |||
| − | |||
| − | |||
| == BrownBoost == | == BrownBoost == | ||
| Строка 35: | Строка 32: | ||
|      '''while''' <tex>s > 0</tex> |      '''while''' <tex>s > 0</tex> | ||
|      '''return''' <tex>H(x) = \textrm{sign}\left(\sum\limits_{i=1} \alpha_i h_i(x)\right)</tex>  <font color=green>//$H(x)$ {{---}} результирующий классификатор</font> |      '''return''' <tex>H(x) = \textrm{sign}\left(\sum\limits_{i=1} \alpha_i h_i(x)\right)</tex>  <font color=green>//$H(x)$ {{---}} результирующий классификатор</font> | ||
| + | |||
| + | === Мультиклассовая классификация === | ||
| + | Данный алгоритм можно обобщить с бинарной классификации на мультиклассовую при помощи метода Error-Correcting Output Codes (ECOC)<ref>[https://www.jmlr.org/papers/volume1/allwein00a/allwein00a.pdf E. L. Allwein, R. E. Schapire, and Y. Singer {{---}} Reducing multiclass to binary: A | ||
| + | unifying approach for margin classi�ers.]</ref>. Для этого введем ECOC матрицу | ||
| + | |||
| + | Для каждого элемента $(x_n, y_n)$ и класса $j$ будут пересчитываться следующим образом: | ||
| + | <center><tex>r_{i+1, j}(x_n, y_n) = r_{i,j}(x_n, y_n) + \alpha_i h_{i,j}(x_n) \lambda_j^n</tex></center> | ||
| + | где $\lambda_j^n$ соответствует элементу класса $j$ в ECOC матрице.  | ||
| == Примечания== | == Примечания== | ||
| <references /> | <references /> | ||
Версия 04:54, 14 июня 2022
Бустинг — это композиция алгоритмов, где на каждой итерации алгоритм пытается исправить все ошибки композиции предыдущих алгоритмов.
Содержание
BrownBoost
Идея алгоритма
Расмотренные ранее AdaBoost и LogitBoost плохо работают при наличии шума в данных, что может приводить к переобучению. На каждой итерации бустинга объектам присваиваются веса, и большой вес у объекта показывает, что алгоритм плохо отработал на нем. Это может быть индикатором того, что этот объект шумовой. Тогда, если "откидывать" объекты с большим весом при работе алгоритма, на итоговый классификатор будут влиять незашумленные объекты. Из-за этого итоговая функция ошибки может улучшиться.
Пусть дана обучающая выборка длины . Мы можем задать время, которое будет работать алгоритм бустинга — $c$. Чем больше это время, тем дольше будет работать алгоритм, а значит тем меньше данных он будет считать зашумленными и "откидывать". Каждая итерация занимает $t_i$ времени, и мы считаем, сколько осталось работать времени — $s$.
Можно связать время работы алгоритма $c$ и итоговую ошибку:
где $erf$ — функция ошибок[1]. Из этого следует, что мы можем получить любую желаемую итоговую ошибку, передав соответствующий параметр $c$ (это можно вычислить при помощи обратной функции ошибок).
Для всех объектов обучающий выборки хранятся веса на каждой итерации $r_i(x, y)$. Изначально они все равны 0. Чтобы избежать вырожденные случаи, введем константу $\nu > 0$.
Основная идея BrownBoost — на каждой итерации у слабого классификатора есть вес и количество прошедшего в течение итерации времени , и эти величины напрямую связаны между собой. Чтобы их найти, надо решить систему нелинейных уравнений. Она задана дифференциальным уравнением
и граничными условиями: .
Решением системы будет считаться пара чисел или $\gamma_i \leq \nu$. Решить данную систему можно методом Ньютона[2], как это было предложено автором BrownBoost'а Йоав Фройндом[3].
Алгоритм
function BrownBoost($T$, $c$):
   do:
       //Задаем вес для каждого объекта
      Вызываем базовый алгоритм и находим классификатор  //
       Решение системы уравнений [*]
       //Обновляем веса каждого объекта
      s = s - t //Обновляем оставшееся время
   while 
   return   //$H(x)$ — результирующий классификатор
Мультиклассовая классификация
Данный алгоритм можно обобщить с бинарной классификации на мультиклассовую при помощи метода Error-Correcting Output Codes (ECOC)[4]. Для этого введем ECOC матрицу
Для каждого элемента $(x_n, y_n)$ и класса $j$ будут пересчитываться следующим образом:
где $\lambda_j^n$ соответствует элементу класса $j$ в ECOC матрице.
Примечания
- ↑ Функция ошибок
- ↑ Метод Ньютона
- ↑ Yoav Freund — An adaptive version of the boost by majority algorithm
- ↑ [https://www.jmlr.org/papers/volume1/allwein00a/allwein00a.pdf E. L. Allwein, R. E. Schapire, and Y. Singer — Reducing multiclass to binary: A unifying approach for margin classi�ers.]
