Изменения

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

Бустинг, AdaBoost

3 байта убрано, 20:54, 26 января 2019
Описание алгоритма
<font color=green>//Инициализируем</font>
'''for''' i = 1..m '''do''':
<tex>D_1[i] D_i^1 = \frac{1}{m}</tex>
'''end''' '''for'''
'''for''' t = 1..T '''do''':
<tex>\epsilon_j = \sum\limits_{i=1}^{m} D_t[i] D_i^t [y_i\neq h_j(x_i)]</tex> <font color=green>//Взвешенная ошибка классификации</font>
<tex>h_t = \arg \min\limits_{h_j \in \mathcal{H}} \epsilon_j</tex> <font color=green>//Классификатор <tex>h_t:X\to \{-1,+1\}</tex></font>
<tex>\alpha_t = \frac{1}{2}\ln\frac{1-\epsilon_t}{\epsilon_t}</tex>
'''for''' i = 1..m '''do''':
<font color=green>//<tex>Z_t</tex> {{---}} нормализующий параметр, выбранный так, чтобы <tex>D_D^{t+1}</tex> являлось распределением вероятностей, то есть <tex>\sum\limits_{i-1}^{m} D_D_i^{t+1}[i] = 1</tex>, для <tex>t=1,...,T</tex></font> <tex>D_D_i^{t+1}[i] = \dfrac{D_t[i] D_i^t \textrm{exp}(-\alpha_t y_i h_t(x_i))}{Z_t}</tex>
'''end''' '''for'''
'''end''' '''for'''
<tex>H(x) = \textrm{sign}\left(\sum\limits_{t=1}^{T} \alpha_t h_t(x)\right)</tex> <font color=green>//$H(x)$ - результирующий классификатор</font>
'''return''' $H$
Выражение для обновления распределения <tex>D_tD^t</tex> должно быть сконструировано таким образом, чтобы выполнялось условие:<center><tex>\exp^{\alpha_t y_i h_t(x_i)} \begin{cases}<1,\ y(i) = h_t(x_i) \\ >1,\ y(i) \neq h_t(x_i)\end{cases}</tex></center>В
Таким образом, после выбора оптимального классификатора <tex>h_t</tex> для распределения <tex>D_tD^t</tex>, объекты <tex>x_i</tex>, которые классификатор <tex>h_t</tex> идентифицирует корректно, имеют веса меньшие, чем те, которые идентифицируются некорректно. Следовательно, когда алгоритм тестирует классификаторы на распределении <tex>D_D^{t+1}</tex>, он будет выбирать классификатор, который лучше идентифицирует объекты неверно распознаваемые предыдущим классификатором.
===Пример работы===
Анонимный участник

Навигация