BrownBoost
BrownBoost — алгоритм бустинга, который показал свою эффективность на зашумленных наборах данных. Как и все алгоритмы бустинга, BrownBoost используется в сочетании с другими алгоритмами машинного обучения. Алгоритм BrownBoost был предложен Йоавом Фройндом (en:Yoav Freund)[1].
Мотивировка
Алгоритм AdaBoost показал свою эффективность на множестве наборов данных. Тем не менее, можно показать, что AdaBoost не эффективен на зашумленных наборах данных[2]. Это следствие того, что AdaBoost фокусируется на элементах обучающей выборки, которые многократно ошибочно классифицированы. В отличие от него, BrownBoost просто «сдаётся» на таких элементах. В основе BrownBoost лежит предположение, что зашумленные элементы будут многократно ошибочно классифицированы базовыми классификаторами, а незашумленные элементы будут достаточно часто корректно классифицированы. Это позволит откинуть зашумленные элементы, а незашумленные элементы внесут свой вклад в итоговый классификатор. Таким образом итоговый классификатор будет обучаться на незашумленных элементах обучающей выборки, поэтому его обобщающая способность может быть лучше, чем у AdaBoost при обучении на обучающей выборке с шумом.
Описание алгоритма
BrownBoost использует невыпуклую функцию потерь, поэтому он не попадает в семейство алгоритмов AnyBoost. Невпуклая оптимизация позволяет избежать переобучения на зашумленных наборах данных. В отличие от алгоритмов бустинга (таких как AdaBoost и LogitBoost), которые минимизируют выпуклую функцию потерь, BrownBoost решает систему из 2 уравнений с двумя неизвестными, используя стандартные численные методы.
Единственный параметр алгоритма BrownBoost это — «время», которое алгоритм работает. Каждому слабому классификатору даётся время , которое напрямую связано с весом классификатора.
Большое значение означает, что BrownBoost будет считать данные менее зашумленными и отбросит меньше элементов обучающей выборки. Соответственно, малое значение означает, что BrownBoost будет считать данные более зашумленными и отбросит больше элементов обучающей выборки. На каждом шаге алгоритм выбирает базовый классификатор немного лучше, чем просто случайным образом. Вес этого классификатора и количество прошедшего в течение итерации времени задаются решением системы 2 нелинейных уравнений (1. нескоррелированность базового классификатора и весов элементов обучающей выборки; 2. неизменность потенциала) с 2 неизвестными. Эта система может быть решена методом дихотомии, как реализовано в пакете JBoost, или методом Ньютона, как в оригинальной статье автора. После решения уравнений веса элементов обучающей выборки и количество оставшегося времени пересчитывается. Эта процедура повторяется, пока не кончится всё время.
Начальный потенциал определяется как . Так как каждый шаг алгоритма не меняет потенциал, то верно равенство . Поэтому конечная ошибка вероятно близка к . Тем не менее, конечная функция потенциала не является бинарной функцией потерь.
Чтобы конечная функция потерь была в точности , дисперсия должна линейно убывать по времени, чтобы сформировать бинарную функцию потерь после окончания итераций бустинга. Этот момент еще не описан в литературе и отсутствует в определении алгоритма ниже.
Конечный классификатор является линейной комбинацией базовых классификаторов, и его качество может быть оценено так же как в большинстве других алгоритмов бустинга.
Алгоритм
Вход:
- обучающая выборка где
- параметр
Инициализация:
- . Значение это количество оставшегося времени работы алгоритма.
- . Значения это веса на итерации для элемента обучающей выборки .
Пока :
- Установить вес каждого элемента обучающей выборки: , здесь вес элемента
- Найти базовый классификатор такой что
- Найти значения удовлетворяющие уравнению:
.
(Заметим что это схоже условию [3].) В этом пункте мы численно находим such that .)
Это изменение должно соответствовать ограничению
,
здесь потери потенциала для точки с весом - Обновить веса для каждого элемента обучающей выборки:
- Обновить оставшееся время:
Выход:


