앙상블 기법 4 - 부스팅
부스팅
AdaBoost 알고리즘
부스팅은 간단한 학습기들이 상호보완적 역할을 할 수 있도록 단계적으로 학습을 수행하여 결합함으로써 그 성능을 증폭시키는 것을 기본 목적으로 하는 방법으로, 그 이름도 이러한 목적에서 유래하였다.
부스팅이 배깅과 다른 가장 큰 차이점은 분류기들을 순차적으로 학습하도록 하여, 먼저 학습된 분류기의 결과가 다음 분류기의 학습에 정보를 제공하여, 이전의 분류기의 결점을 보완하는 방향으로 학습이 이루어지도록 한다는 것이다.
가장 처음에 제안된 부스팅 방법에서는, 각 학습기별로 서로 다른 데이터 집합을 사용하는 것이다.
첫 번째 데이터 집합을 이용해서 첫 번째 분류기를 학습하고, 두 번째 분류기를 학습할 때에는 새로운 집합을 생성하여 첫 번째 분류기에 입력으로 주어 분류를 수행하게 한 후, 잘못된 분류 결과를 내는 데이터들을 찾는다. 이 오분류된 데이터와 함께 바르게 분류된 데이터들도 일부 추출하는데, 그 수가 오분류된 데이터와 같은 정도로만 추출한다. 이렇게 만들어진 학습 집합을 이용하여 두 번째 분류기를 학습한다. 이어서 세 번째 분류기의 경우에는 새로운 집합을 먼저 첫 번째와 두 번째 분류기에 입력으로 주어 두 분류기의 결과가 일치하지 않는 데이터들만 모아서 세 번째 분류기를 위한 학습데이터 집합을 만든다. 이렇게 세 개의 분류기의 학습이 완료되면, 새로운 데이터가 주어졌을 때 인식을 위해서는 먼저 첫 번째와 두 번째를 이용하여 분류를 수행한 후, 그 결과가 일치하면 그것을 최종 결과로 하고, 만약 일치하지 않으면 세 번째의 결과를 최종 결과로 선택한다. 이러한 방법은 필터링에 의한 부스팅이라고 하며, 간단한 분류기의 분류 성능을 증폭시킬 수 있음을 보였다.
그러나 이 방법은 각 분류기를 학습할 때마다 새로운 데이터 집합을 생성해야 하며, 두 번째와 세 번재에 생성되는 데이터는 학습에 그 일부만 활용될 수 있다. 따라서 제대로 학습이 수행되기 위해 필요한 학습데이터의 규모가 매우 크다는 문제점을 가지고 있다. 이를 해결하기 위하여 AdaBoost에서는 같은 데이터 집합을 반복해서 사용하되, 학습할 대마다 각 데이터에 대한 중요도를 적절히 조정하여 학습에 변화를 준다.