Изменения

Перейти к: навигация, поиск

Бустинг, AdaBoost

1173 байта убрано, 15:19, 22 января 2019
Построение линейной комбинации классификаторов
Таким образом, после выбора оптимального классификатора <tex>h_t</tex> для распределения <tex>D_t</tex>, объекты <tex>x_i</tex>, которые классификатор <tex>h_t</tex> идентифицирует корректно, имеют веса меньшие, чем те, которые идентифицируются некорректно. Следовательно, когда алгоритм тестирует классификаторы на распределении <tex>D_{t+1}</tex>, он будет выбирать классификатор, который лучше идентифицирует объекты неверно распознаваемые предыдущим классификатором.
===Построение линейной комбинации классификаторов===
Пусть <tex>N(b,U^{l})</tex> {{---}} суммарный вес ошибочных классификаций, где $b$ {{---}} алгоритм классификации, <tex>U^l = (u_1,...,u_l)</tex> {{---}} нормированный вектор весов объектов обучающей выборки.
Дано: <tex>X^l, Y^l</tex> {{---}} обучающая выборка, $T$ {{---}} максимальное число базовых алгоритмов
1. инициализация весов объектов: <tex>w_i = 1/l,\ i = 1,...,l;</tex>
2. '''для всех''' <tex>t = 1,...,T</tex>, '''пока''' не выполнен критерий останова:
1. <tex>b_t = \arg \min_{b} N(b; W^l)</tex>;
2. <tex>\alpha_t = \frac{1}{2} \ln\frac{1 - N(b_t;W^l)}{N(b_t;W^l)}</tex>;
3. пересчет весов объектов: <tex>w_i = w_i\exp{-\alpha_t y_i b_t(x_i)},\ i = 1,...,l</tex>;
4. нормировка весов объектов: <tex>w_0 = \sum\limits_{j=1}^{l} w_j; w_i = \frac{w_i}{w_0},\ i = 1,...,l</tex>;
===Пример кода на python для scikit-learn===
Классификатор sklearn.ensemble.'''AdaBoostClassifier''' имеет 5 параметров: '''base_estimator''', '''n_estimators''', '''learning_rate''', '''algorithm''', '''random_state'''.
64
правки

Навигация