앙상블(Ensemble) – 부스팅(Boosting)

1. 부스팅(Boosting) 이란?

– Bagging과 유사하게 초기 샘플 데이터를 조작하여 다수의 분류기를 생성하는 기법 중 하나
– 일반적으로 부스팅은 약검출기(weak classifier)들을 여러 개 모아 강검출기(strong clssifier)를 생성하는 방법을 말하고 주로 의사결정나무 모형을 사용함.
– 부스팅(Boosting)의  흐름도는 아래 그림과 같음.

boosting– 부스팅의 경우 전체 데이터에서 여러 샘플링 데이터를 추출하여 순차적으로 이전 학습 분류기의 결과를 토대로 다음 학습 데이터의 샘플 가중치를 조정하면서 학습을 진행
– 부스팅의 가장 큰 특징은 다음 단계의 weak classifier가 이전 단계의 weak classifier의 영향을 받는다는 점임. 즉, 이전의 classifier의 양상을 보고 보다 잘 맞출 수 있는 방향으로 다음 단계를 진행하고 각 classifier의 weight를 업데이트 함.
– 최종적으로 서로 영향을 받아 만들어진 여러 weak classifier와 서로 다른 weight를 통해 strong classifier를 생성하게 됨.

2. 부스팅(Boosting) 의 목적

– 일반적인 분류 문제는 잘못 분류된 개체들을 더 잘 분류하는 것이 목적이므로 부스팅은 잘못 분류된 개체들에 집중하여 새로운 분류 규칙을 만드는 것을 목적으로 함.
– 즉, 배깅이 일반적인 모델을 만드는데 집중되어 있다면, 부스팅은 맞추기 어려운 문제를 맞추는데 초점이 맞춰져 있음

3. 배깅(Bagging) VS 부스팅(Boosting)

                                                                                                 출처 : https://swalloow.github.io

–  raw data의 가중치의 유무 차이

  • 배깅은 단순 복원 임의 추출법을 통해 raw data로 부터 크기가 동일한 여러 개의 표본 자료를 이용하여 학습시키고, 부스팅(Boosting)은 raw data의 객체들이 동일한 가중치에서 시작하지만, 모델링을 통한 예측변수에 의해 오분류된 객체들에게는 높은 가중치를 부여하는 등 가중치를 조정하여 오분류된 객체들이 더 잘 분류되도록 학습 시킴.

-모델의 학습 방법이 병렬적 방법인지, 순차적 방법인지의 차이

  • Bagging은 병렬적 결합 방법, Boosting은 순차적 결합 방법으로 학습시킴. 병렬적 결합 방법은 각 분류기로부터 얻어진 결과를 한 번에 모두 함께 고려하여 하나의 최종 결과를 얻는 것을 말하고, 순차적 결합 방법은 각 분류기의 결과를 단계별로 나누어, 앞 단계에 배치된 분류기의 결과가 뒤에 배치된 분류기의 학습과 분류에 영향을 미치는 것임.
  • 즉, Bagging의 경우 각각의 분류기들이 학습 시에 상호 영항을 주지 않고 그 결과를 종합하는 반면, Boosting은 이전 분류기의 학습 결과를 토대로 다음 분류기의 학습 데이터의 샘플 가중치를 조정하여 학습을 진행함.

4. SAS 실습

– 데이터 다운로드 : letterrecognition.zip (0 downloads) (압축 해제 후 C:\Users\사용자 이름\Documents\My SAS Files\9.4 에 저장)

1) 데이터 설명

– UCI(https://archive.ics.uci.edu/ml/datasets/Letter+Recognition)에서 제공하고 있는 문자 인식 데이터
– 랜덤하게 20개의 서로 다른 폰트를 이용한 A부터 Z까지의 26개 영문자들의 픽셀 데이터를 이용하여 문자를 인식하는 Computer Vision 문제를 해결하기 위한 데이터

variable

2) 데이터 불러오기 및 정제

– 데이터 불러오기 마법사 실행 후, 생성된 데이터 파일을 작업영역창으로 드래그(자세한 내용은 http://www.birc.co.kr/2017/01/11/knnk-nearest-neighbor/ 참고)
– 변수의 역할을 정하기 위해 데이터 노드 오른쪽 클릭 후 ‘변수 편집’ 클릭

variable edit

– lettr의 역할을 ‘Target’으로 지정

variable edit2

– ‘수정’탭의 ‘변수 변환’노드를 작업영역창으로 드래그

Transfer Drag

– Input 변수들이 대부분 Interval이므로, 예측력을 높이기 위해 변수타입을 변환해야함
– ‘변수변환’ 노드의 옵션 중 Interval 입력을 Best로 설정한 후 변수변환 노드 실행

transfer option

– 출력결과를 살펴보면 대부분의 변수들이 Optimal Binning방법을 이용하여 범주화 된 것을 알 수 있음

transform result

– 데이터를 훈련용 데이터와 평가용 데이터로 분류하기 위해 표본추출 탭에 위치한 ‘데이터 분할’ 노드를 작업 영역 창으로 드래그

partition

– 데이터셋 할당의 옵션을 [분석용] – 70, [평가용] – 30으로 설정

3) 부스팅

– 모델 탭의 ‘그라디언트 부스팅’ 노드를 작업 영역창으로 드래그

gradientboostingdrag

– 일반 의사결정 나무 모형과 비교하기 위해 모델 탭에서 ‘의사결정트리’를 작업영역창으로 드래그 한 후 ‘데이터 분할’노드와 연결

dt22

– 평가 탭의 ‘모델 비교’ 노드를 작업영역 창으로 드래그 한 후 실행

comparison170206_2

4) 결과 해석

– 모델 비교 노드의 결과창을 살펴보면 Boosting 기법의 Missclassification Rate의 값이 0.4359로 Tree의 Missclassification Rate의 값인 0.6137보다 낮으므로 부스팅 모델의 정확도가 더 높다는 것을 알 수 있음

result_170206

답글 남기기