전공관련/Algorithm

Bagging vs Boosting 비슷한듯 비슷하지 않은 개념.

매직블럭 2014. 12. 24. 17:49



배깅과 부스팅이라는 용어를 들어 본 적 있을 것이다.


이 두 개념은 뭔가 유사한 개념 같으면서 또 다른 개념이라 정리가 필요하다.

둘다 학습 샘플을 한번 더 샘플링하여 사용해서 전체 시스템의 신뢰도를 높이는 기법중에 하나이다.



먼저 배깅 (Bagging)

이는 bootstrap aggregating 의 줄임말이라고 한다. 한줄로 잘 설명한 글이 있어서 인용.. ㅋ 


[ 주어진 데이터에 대해서 여러개의 붓스트랩 자료를 생성하고 각 붓스트랩 자료를 모델링 한 후 

결합하여 최종의 예측 모형을 산출하는 방법 ] (인용[1])


위 문장에서 얘기한 대로 전체 Data set 에서 동일한 크기의 random sampling 된 sub sample set을 만든다. 

생성된 sub sample set 마다 각각 학습모델을 만들어 준다. 이때 각 모델은 서로 다른 알고리즘을 적용 할 수도 있다.


각 서브모델에서 생성된 모델을 이용 하여 최종 모델을 생성하는데, 이때 최종 결과값을 도출 하는 방법은 

연속형일경우 평균값을, 범주형일때는 투표를 통해 최종 결과를 낼 수 있다.



그림 1. Bagging 의 system flow



다음은 부스팅(boosting)

일반적으로 부스팅은 약검출기(weak classifier) 들을 여러개 모아 강검출기(strong classifier)를 생성하는 방법을 말한다.

마찬가지로 잘 정리된 문장이 있어서 인용.


[부스팅은 잘못 분류된 개체들에 집중하여 새로운 분류규칙을 만드는 단계를 반복하는 방법] (인용[1])


전체 학습 샘플에 여러개의 weak classifier를 적용한다. 

각 weak classifier를 이용하여 학습모델을 만들고 그 모델을 이용하여 학습샘플을 평가한다.

평가된 결과에 따라 잘 맞춘 weak classifier는 가중치를 더하여주고

잘못 평가한 weak classifier의 가중치는 낮추어 준다.

(19.09.30. 수정. 잘 맞춘 weak classifier는 가중치를 낮추고 틀린 classifier는 가중치를 높여서 전체적으로 성능을 향상시키는 방향으로 업데이트 하는것이 맞음. )


이러한 일련의 과정을 특정 조건이 될때까지 반복하고, 반복이 끝나면 그 때 까지 누적된 

각 weak classifier의 가중치를 이용하여 최종 학습 모델을 만들게 된다.



그림 2. boosting의 system flow



위의 두 그림을 보면 전반적인 형태는 비슷하다.

전체 학습샘플을 일정 크기로 리샘플링 하고 각각의 학습 모델을 만들고, 그들을 이용하여 최종 학습모델을 만든다는점.


boosting의 가장 큰 특징은 다음단계의 weak classifier가 이전단계의 weak classifier의 영향을 받는다는 점이다.

이전의 classifier의 양상을 보고 보다 잘 맞출수 있는 방향으로 다음 단계를 진행하고 각 classifier의 weight를 업데이트 한다.

최종적으로 서로간에 영향을 받아 만들어진 여러 weak classifier와 서로다른 weight를 만들게 되고 이들을 통해 최종적으로

strong classifier를 생성하게 된다.



내가 생각할 때는 bagging과 boosting의 차이점은 각 weak classifier를 생성하는 과정까지가 큰 차이점이고

weight등의 개념은 voting의 문제로 얘들과 별개로 생각해야 할 거 같다..


좀더 공부하고.. 틀린내용 있으면 수정해야지... 



인용[1] : http://blog.naver.com/muzzincys/220201299384