앙상블(Ensemble) – 랜덤 포레스트(Random Forest)

1. 랜덤 포레스트(Random Forest)란?

– 2001년에 Leo Breiman에 의해 처음 소개된 기법으로 의사결정 트리의 단점을 개선하기 위한 알고리즘 중 가장 지배적인 알고리즘
– 다수의 의사결정 나무를 결합하여 하나의 모형을 생성하는 방법
– 다양성을 극대화 하여 예측력이 상당히 우수한 편이고 배깅과 동일하게 붓트스트랩 표본을 이용한 다수의 트리의 예측 결과를 종합하여 의사결정을 진행하기 때문에 안정성도 상당히 높다는 장점이 있음

2. 기존 앙상블 모형과의 차이점

– 기존 앙상블의 경우 하나의 전체 데이터를 활용하여 서로 다른 학습 분류기를 통합하는 방법
ensemble
– 배깅의 경우 전체 데이터에서 여러 샘플링 데이터를 추출하여 서로 다른 학습 분류기를 통합하는 방법
Bagging
– 부스팅의 경우 전체 데이터에서 여러 샘플링 데이터를 추출하여 순차적으로 이전 학습 분류기의 결과를 토대로 다음 학습 데이터의 샘플 가중치를 조정하면서 학습을 진행
boosting
– 배깅의 경우 지배적인 변수가 포함 되어 있기 때문에 뿌리 노드가 변하지 않아 트리가 유사한 형태로 학습됨
– 랜덤 포레스트의 경우 임의성을 관측치(observation, instance, record) 뿐만 아니라 변수(feature, varialbe)에도 적용했다는 것이 큰 차이점
– Out-of-Bag 샘플은 아래 흐름도에서 붓트스트랩 샘플링 과정에서 추출되지 않은 관측치들을 말하며, 이 샘플들은 주로 평가용 데이터에서의 오분류율을 예측하는 용도 및 변수 중요도를 추정하는 용도로 많이 이용됨

RandomForest_Flow

3. 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

3) 랜덤 포레스트

– 랜덤 포레스트 분석을 수행하기 위해 HPDM 탭에서 ‘HP 포리스트(Random Forest)’ 노드를 작업 영역창으로 드래그

rfdrag

– 기타 분석 방법론(의사결정나무, 그래디언트 부스팅)과 비교하기 위해 모델 탭의 ‘의사결정트리’ 노드와 ‘그래디언트 부스팅’ 노드를 작업영역 창으로 드래그 한 뒤, 데이터 분할 노드와 연결

dt_boosting_drag

– 각 모델의 성능을 비교하기 위해 평가 탭의 ‘모델 비교’ 노드를 작업 영역창으로 드래그한 뒤 실행

comparison_20170206_3

4) 결과 해석

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

댓글 남기기