BrownBoost (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 .)
Это изменение должно соответствовать ограничению
,
здесь потери потенциала для точки с весом - Обновить веса для каждого элемента обучающей выборки:
- Обновить оставшееся время:
Выход:
Эмпирические результаты
[править | править код]В предварительных экспериментах BrownBoost имеет меньшую ошибку обобщающей способности по сравнению с AdaBoost и имеет схожие результаты с LogitBoost.[4] Реализацию BrownBoost можно найти в open source пакете JBoost.
Примечания
[править | править код]- ↑ Yoav Freund. An adaptive version of the boost by majority algorithm. Machine Learning, 43(3):293—318, June 2001.
- ↑ Dietterich, T. G., (2000). An experimental comparison of three methods for constructing ensembles of decision trees: Bagging, boosting, and randomization. Machine Learning, 40 (2) 139—158.
- ↑ Robert Schapire and Yoram Singer. Improved Boosting Using Confidence-rated Predictions. Journal of Machine Learning, Vol 37(3), pages 297—336. 1999
- ↑ Ross A. McDonald, David J. Hand, Idris A. Eckley. An Empirical Comparison of Three Boosting Algorithms on Real Data Sets with Artificial Class Noise. Multiple Classifier Systems, In Series Lecture Notes in Computer Science, pages 35-44, 2003.