AdaBoost는 Boost의 종류의 하나로 Adaptive Boot의 줄임말입니다. 적응한다는 것인데요. 어디에 적응하냐 하면 'error'에 적응하는 것입니다.
샘플을 잘 살펴보고 에러를 최소화 할수 있는 weak classifier로 분류를 합니다. 그래도 error가 생기는 샘플이 있을 수 있겠죠? 원래 Positive인데 Negative로 분류되었거나 그 반대인 경우입니다. 이 error가 발생한 샘플에 가중치를 더 두고, 다시 그 것을 잘 분류 할 수 있는 weak classifier를 고릅니다. 그리고 다시 에러 난 샘플에 가중치를 더두고 weak classifier를 찾습니다. 이 행위를 여러 번하면 충분한 weak classifier들을 만들어지고, 그 것들을 합치면 가지고 있는 샘플들에 대한 에러가 거의 없게 되겠죠. 그 합친 classifier를 Strong classifier라고 부르며, weak classifier들의 선형 조합으로 표현됩니다.
샘플을 잘 살펴보고 에러를 최소화 할수 있는 weak classifier로 분류를 합니다. 그래도 error가 생기는 샘플이 있을 수 있겠죠? 원래 Positive인데 Negative로 분류되었거나 그 반대인 경우입니다. 이 error가 발생한 샘플에 가중치를 더 두고, 다시 그 것을 잘 분류 할 수 있는 weak classifier를 고릅니다. 그리고 다시 에러 난 샘플에 가중치를 더두고 weak classifier를 찾습니다. 이 행위를 여러 번하면 충분한 weak classifier들을 만들어지고, 그 것들을 합치면 가지고 있는 샘플들에 대한 에러가 거의 없게 되겠죠. 그 합친 classifier를 Strong classifier라고 부르며, weak classifier들의 선형 조합으로 표현됩니다.
$$F(x)={ \alpha }_{ 1 }{ f }_{ 1 }(x)+{ \alpha }_{ 2 }{ f }_{ 2 }(x)+\cdots +{ \alpha }_{ n }{ f }_{ n }(x)$$
여기서 $F$는 strong classifier, $\alpha$는 weight, $f$는 weak classifier 입니다.
Pseudo-code
입력: 라벨링된 데이터
w를 초기화한다.
T번 반복(T개의 weak classifier)
weighted error를 보고 가장 좋은 weak classifier를 선택해 추가한다.
틀린 샘플에 weight를 더 준다.
T개의 weak classifier를 합쳐서 Strong Classifier로 만든다.
밑에 애니메이션을 보면 이해하기 쉽습니다.
여기서 $F$는 strong classifier, $\alpha$는 weight, $f$는 weak classifier 입니다.
Pseudo-code
입력: 라벨링된 데이터
w를 초기화한다.
T번 반복(T개의 weak classifier)
weighted error를 보고 가장 좋은 weak classifier를 선택해 추가한다.
틀린 샘플에 weight를 더 준다.
T개의 weak classifier를 합쳐서 Strong Classifier로 만든다.
밑에 애니메이션을 보면 이해하기 쉽습니다.
AdaBoost 애니메이션 from a presentation by Qing Chen, Discover Lab, University of Ottawa |