배깅과 부스팅이라는 용어를 들어 본 적 있을 것이다.
이 두 개념은 뭔가 유사한 개념 같으면서 또 다른 개념이라 정리가 필요하다.
둘다 학습 샘플을 한번 더 샘플링하여 사용해서 전체 시스템의 신뢰도를 높이는 기법중에 하나이다.
먼저 배깅 (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
'전공관련 > Algorithm' 카테고리의 다른 글
배경 근사화를 이용한 조명 제거 및 이진화 (0) | 2016.05.17 |
---|---|
Local Patch Descriptor - Ferns Feature (0) | 2014.11.20 |
주성분분석 ( Principal Component Analysis ) - PCA (0) | 2014.09.17 |
K-Mean Clustering (0) | 2013.08.13 |
Hidden Markov Model ( HMM ) (0) | 2013.08.06 |