AdaBoost (сокращение от Ada ptive Boosting ) — это статистический метаалгоритм классификации , сформулированный Йоавом Фройндом и Робертом Шапиром в 1995 году, которые в 2003 году получили премию Гёделя за свою работу. Его можно использовать в сочетании со многими типами алгоритмов обучения для повышения производительности. Выходные данные нескольких слабых учеников объединяются во взвешенную сумму, которая представляет собой конечный выход усиленного классификатора. Обычно AdaBoost представлен для бинарной классификации , хотя его можно обобщить на несколько классов или ограниченные интервалы действительных значений. [1] [2]
AdaBoost адаптивен в том смысле, что последующие слабые ученики (модели) корректируются в пользу экземпляров, неправильно классифицированных предыдущими моделями. В некоторых задачах он может быть менее восприимчив к переобучению, чем другие алгоритмы обучения. Отдельные ученики могут быть слабыми, но пока производительность каждого из них немного лучше случайного угадывания, можно доказать, что окончательная модель сходится к сильному ученику.
Хотя AdaBoost обычно используется для объединения слабых базовых обучающихся (таких как пни решений ), было показано, что он также эффективно объединяет сильные базовые обучающиеся (такие как более глубокие деревья решений ), создавая еще более точную модель. [3]
Каждый алгоритм обучения, как правило, лучше подходит для некоторых типов задач, чем для других, и обычно имеет много различных параметров и конфигураций для настройки, прежде чем он достигнет оптимальной производительности на наборе данных . AdaBoost (с деревьями решений в качестве слабых учеников) часто называют лучшим готовым классификатором. [4] [5] При использовании с обучением на основе деревьев решений информация, собранная на каждом этапе алгоритма AdaBoost об относительной «сложности» каждой обучающей выборки, подается в алгоритм выращивания деревьев, так что более поздние деревья, как правило, фокусируются на более сложных для классификации примерах.
AdaBoost относится к определенному методу обучения усиленного классификатора. Усиленный классификатор — это классификатор в форме , где каждый является слабым учеником, который принимает объект в качестве входных данных и возвращает значение, указывающее класс объекта. Например, в задаче с двумя классами знак выходных данных слабого ученика определяет предсказанный класс объекта, а абсолютное значение дает уверенность в этой классификации.
Каждый слабый ученик выдает выходную гипотезу , которая фиксирует прогноз для каждого образца в обучающем наборе. На каждой итерации выбирается слабый ученик и ему назначается коэффициент, так что общая ошибка обучения результирующего усиленного классификатора на -этапе минимизируется.
Вот улучшенный классификатор, который был создан на предыдущем этапе обучения и является слабым учеником, который рассматривается для добавления в финальный классификатор.
На каждой итерации процесса обучения каждому образцу в обучающем наборе присваивается вес, равный текущей ошибке этого образца. Эти веса могут использоваться при обучении слабого ученика. Например, можно выращивать деревья решений, которые способствуют разделению наборов образцов с большими весами.
Этот вывод следует за Рохасом (2009): [6]
Предположим, у нас есть набор данных , где каждый элемент имеет связанный класс , и набор слабых классификаторов, каждый из которых выводит классификацию для каждого элемента. После -й итерации наш усиленный классификатор представляет собой линейную комбинацию слабых классификаторов вида: где класс будет знаком . На -й итерации мы хотим расширить это до лучшего усиленного классификатора, добавив еще один слабый классификатор с другим весом :
Итак, остается определить, какой слабый классификатор является лучшим выбором для , и каким должен быть его вес. Мы определяем общую ошибку как сумму ее экспоненциальных потерь на каждой точке данных, заданную следующим образом:
Полагая и для , имеем:
Мы можем разделить это суммирование между теми точками данных, которые правильно классифицированы (so ), и теми, которые классифицированы неправильно (so ):
Поскольку единственная часть правой части этого уравнения, которая зависит от , это , мы видим, что минимизирующий — это тот классификатор в наборе , который минимизирует [предполагая, что ], т. е. слабый классификатор с наименьшей взвешенной ошибкой (с весами ).
Чтобы определить желаемый вес , который минимизируется с тем , который мы только что определили, мы дифференцируем:
К счастью, минимум достигается при установке этого значения в ноль, а затем решение дает :
потому что не зависит от
Мы вычисляем взвешенную частоту ошибок слабого классификатора как , поэтому следует, что: что является отрицательной логарифмической функцией, умноженной на 0,5. Из-за выпуклости как функции , это новое выражение для дает глобальный минимум функции потерь.
Примечание: Этот вывод применим только тогда , когда , хотя он может быть хорошим начальным предположением в других случаях, например, когда слабый ученик смещен ( ), имеет несколько листьев ( ) или является некоторой другой функцией .
Таким образом, мы вывели алгоритм AdaBoost: на каждой итерации выбираем классификатор , который минимизирует общую взвешенную ошибку , используем его для расчета коэффициента ошибок , используем его для расчета веса и, наконец, используем его для улучшения усиленного классификатора до .
Бустинг — это форма линейной регрессии , в которой признаки каждого образца являются выходными данными некоторого слабого обучающегося алгоритма, примененного к .
В то время как регрессия пытается подогнать как можно точнее без потери обобщения, обычно используя наименьшую квадратичную ошибку , тогда как функция ошибки AdaBoost учитывает тот факт, что используется только знак конечного результата, поэтому может быть намного больше 1 без увеличения ошибки. Однако экспоненциальный рост ошибки для выборки по мере увеличения приводит к назначению чрезмерных весов выбросам.
Одной из особенностей выбора экспоненциальной функции ошибок является то, что ошибка итоговой аддитивной модели является произведением ошибки каждого этапа, то есть . Таким образом, можно видеть, что обновление веса в алгоритме AdaBoost эквивалентно пересчету ошибки после каждого этапа.
При выборе функции потерь допускается большая гибкость. Пока функция потерь монотонна и непрерывно дифференцируема , классификатор всегда стремится к более чистым решениям. [7] Чжан (2004) предлагает функцию потерь, основанную на наименьших квадратах, модифицированную функцию потерь Хьюбера :
Эта функция ведет себя лучше, чем LogitBoost, для значений, близких к 1 или -1, не штрафует «слишком уверенные» прогнозы ( ), в отличие от немодифицированного метода наименьших квадратов, и штрафует только образцы, неправильно классифицированные с уверенностью больше 1, линейно, а не квадратично или экспоненциально, и, таким образом, менее восприимчива к эффектам выбросов.
Повышение можно рассматривать как минимизацию выпуклой функции потерь по выпуклому набору функций. [8] В частности, потери, минимизируемые AdaBoost, являются экспоненциальными потерями , тогда как LogitBoost выполняет логистическую регрессию, минимизируя
В аналогии градиентного спуска выход классификатора для каждой точки обучения считается точкой в n-мерном пространстве, где каждая ось соответствует обучающей выборке, каждый слабый ученик соответствует вектору фиксированной ориентации и длины, а цель состоит в том, чтобы достичь целевой точки (или любой области, где значение функции потерь меньше значения в этой точке) за наименьшее количество шагов. Таким образом, алгоритмы AdaBoost выполняют либо оптимизацию Коши (найти с самым крутым градиентом, выбрать минимизацию ошибки теста), либо оптимизацию Ньютона (выбрать некоторую целевую точку, найти ту, которая ближе всего к этой точке) для ошибки обучения.
С:
Для :
Выходом деревьев решений является оценка вероятности класса , вероятность того, что она находится в положительном классе. [7] Фридман, Хасти и Тибширани выводят аналитический минимизатор для некоторого фиксированного значения (обычно выбираемого с использованием взвешенной ошибки наименьших квадратов):
Таким образом, вместо того, чтобы умножать вывод всего дерева на некоторое фиксированное значение, каждый конечный узел изменяется так, чтобы выводить половину логарифмического преобразования своего предыдущего значения.
LogitBoost представляет собой применение устоявшихся методов логистической регрессии к методу AdaBoost. Вместо минимизации ошибки относительно y, слабые ученики выбираются для минимизации (взвешенной наименьшей квадратичной ошибки) относительно , где
То есть это приближение Ньютона-Рафсона минимизатора ошибки логарифмического правдоподобия на этапе , а слабый обучающийся выбирается как обучающийся, который наилучшим образом аппроксимирует методом взвешенных наименьших квадратов.
Когда p приближается либо к 1, либо к 0, значение становится очень малым, а термин z , который велик для неправильно классифицированных образцов, может стать численно нестабильным из-за ошибок округления точности машины. Это можно преодолеть, наложив некоторое ограничение на абсолютное значение z и минимальное значение w
В то время как предыдущие алгоритмы усиления выбирают жадно, максимально минимизируя общую ошибку теста на каждом шаге, GentleBoost имеет ограниченный размер шага. выбирается для минимизации , и никакой дополнительный коэффициент не применяется. Таким образом, в случае, когда слабый ученик демонстрирует идеальную производительность классификации, GentleBoost выбирает точно равное , в то время как алгоритмы наискорейшего спуска пытаются установить . Эмпирические наблюдения о хорошей производительности GentleBoost, по-видимому, подтверждают замечание Шапира и Сингера о том, что разрешение чрезмерно больших значений может привести к плохой производительности обобщения. [9] [10]
Метод ускорения обработки усиленных классификаторов, раннее завершение относится к тестированию каждого потенциального объекта только с таким количеством слоев окончательного классификатора, которое необходимо для достижения некоторого порога уверенности, ускоряя вычисления для случаев, когда класс объекта может быть легко определен. Одной из таких схем является структура обнаружения объектов, представленная Виолой и Джонсом: [11] в приложении со значительно большим количеством отрицательных образцов, чем положительных, обучается каскад отдельных усиленных классификаторов, выход каждого этапа смещен таким образом, что некоторая приемлемо малая доля положительных образцов неправильно помечается как отрицательные, и все образцы, помеченные как отрицательные после каждого этапа, отбрасываются. Если 50% отрицательных образцов отфильтровываются на каждом этапе, только очень небольшое количество объектов пройдет через весь классификатор, что сокращает вычислительные усилия. С тех пор этот метод был обобщен, и была предоставлена формула для выбора оптимальных пороговых значений на каждом этапе для достижения некоторого желаемого уровня ложных положительных и ложных отрицательных результатов. [12]
В области статистики, где AdaBoost чаще применяется к задачам средней размерности, ранняя остановка используется как стратегия снижения переобучения . [13] Набор выборок для проверки отделяется от обучающего набора, производительность классификатора на выборках, используемых для обучения, сравнивается с производительностью на проверочных выборках, и обучение прекращается, если производительность на проверочной выборке снижается, даже если производительность на обучающем наборе продолжает улучшаться.
Для версий AdaBoost с самым крутым спуском, где выбирается на каждом слое t для минимизации ошибки теста, следующий добавленный слой считается максимально независимым от слоя t : [14] маловероятно, что будет выбран слабый ученик t+1 , похожий на ученика t . Однако остается вероятность того, что t+1 выдает информацию, похожую на какой-то другой более ранний слой. Полностью корректирующие алгоритмы, такие как LPBoost , оптимизируют значение каждого коэффициента после каждого шага, так что новые добавленные слои всегда максимально независимы от каждого предыдущего слоя. Этого можно добиться с помощью обратной подгонки, линейного программирования или какого-либо другого метода.
Отсечение — это процесс удаления плохо работающих слабых классификаторов для улучшения памяти и стоимости времени выполнения усиленного классификатора. Простейшими методами, которые могут быть особенно эффективны в сочетании с полностью корректирующим обучением, являются весовая или маржинальная обрезка: когда коэффициент или вклад в общую ошибку теста некоторого слабого классификатора падает ниже определенного порога, этот классификатор отбрасывается. Марджинеанту и Дитерих [15] предложили альтернативный критерий для отсечения: слабые классификаторы должны быть выбраны таким образом, чтобы разнообразие ансамбля было максимальным. Если два слабых ученика производят очень похожие результаты, эффективность можно повысить, удалив одного из них и увеличив коэффициент оставшегося слабого ученика. [16]
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь )