세 가지 특징
-
AdaBoost는 Classification을 위하여 (거의 항상) Stump, 즉 “Weak learners”들의 Combination을 활용한다.
-
각 Stump들은 weight이 다르다.
-
각 Stump는 직전 Stump에서의 error를 반영하여 만들어진다.
과정
[AdaBoost]
우리의 데이터셋에 데이터가 $N$개가 있으며, 2개의 class를 classification하고자 한다.
처음에는 데이터들에 대한 가중치가 각각 $1 \over N$일 것이다.($w_1=w_2=\cdots=w_N = {1 \over N}$)
(a) Dataset with $w_i(i=1,2,\cdots,N)$를 통해 Classifier $C_m(X)$를 학습시킨다.
(b) $err_m$을 다음과 같이 계산한다.
\[err_m = {\sum_{i=1}^N w_i I(y_i \neq C_m(x_i)) \over {\sum_{i=1}^N w_i}}\](c) $\alpha_m$ 을 다음과 같이 계산한다.
\[\alpha_m = log{(1-err_m) \over err_m}\](d) $w_i(i=1,2,\cdots,N)$을 다음과 같이 update한다.
\[w_{i,(update)} = w_{i,(previous)} \cdot \exp[\alpha_m \cdot I(y_i \neq C_m(x_i))]\]그리고 (a)~(d) 과정을 반복한다.($m = 1,2, \cdots, M$)
최종 Output은 다음과 같다.
\[C_{Adaboost}(x) = sign[\sum_{m=1}^M \alpha_m C_m(x)]\]
Reference
StatQuest with Josh Starmer(2019), AdaBoost, Clearly Explained