안녕하세요 MySAS홍보대사 한노아입니다.
오늘은 지난시간에 알아본 배깅(bagging)알고리즘을 E-miner에서 구현하는 방법에 대해 알아 보도록 하겠습니다.
ABSTRACT
SAS E-miner에서는 (1) 샘플링 노드를 이용한 배깅, (2) group processing 노드를 이용한 배깅 이렇게 두 가지 방법으로 배깅을 구현하는 것이 가능합니다. 사실 첫 번째 방법의 경우 개념적인 흐름을 이해하는 용도로 활용하는 것이 좋고, 엄밀한 의미의 배깅에는 부합하지 않을 수 있습니다. 따라서 실무나 연구 목적으로 E-miner를 이용해 배깅을 구현하는 경우에는 (2)번 방법을 이용할 것을 권해드립니다.
INTRODUCTION
이번 실습에서는 (1) 샘플링 노드를 이용한 배깅과 (2) group processing 노드를 이용한 배깅 방법을 우선 배우도록 하겠습니다. 그 다음 널리 알려진 데이터 중 하나인 Adult 데이터를 이용하여 실제 데이터 배깅을 적용하는 방법에 대해 알아보도록 하겠습니다.
실습 데이터소개
실습데이터는 UCI데이터 중 하나인 Adult데이터 입니다. 이 번 실습에서는 위 데이터를 이용하여 실습을 진행하도록 하겠습니다. 이번 실습에서는 “fnlwgt”변수는 이용하지 않도록 하겠습니다. 또한 income변수의 경우 이하 실습에서는 편의를 위해 Target으로 이름을 변경했음을 알려드립니다. 데이터에 대한 자세한 정보는 Reference를 참고해 주시기 바랍니다.
변수역할 설정
변수 역할은 위와 같이 지정하시면 됩니다. 이 데이터의 경우 확인결과 최대 5%정도의 결측률을 갖는 변수가 존재하는 것을 확인할 수 있었습니다. 따라서 이하 모델링 과정에서는 결측치를 하나의 범주로 취급하는 의사결정 나무모형을 중심으로 실습을 진행하도록 하겠습니다.
샘플링 노드를 이용한 배깅 방법
샘플링 노드를 이용한 배깅의 경우 SAS E-miner의 sample노드를 이용하여 표본추출을 진행하고 이렇게 추출된 데이터를 각각의 분류기에 학습용 데이터로 인가하여 학습을 진행한 후 최종적으로 생성 된 분류기들의 분류결과를 앙상블하는 방법입니다.
다이어그램(DIAGRAM)
위 다이어그램을 보면 알 수 있듯 E-miner의 [표본추출] 항목에 속해 있는 [표본추출(sample)]노드를 이용하여 주어진 데이터로부터 임의 표본을 추출합니다.
이 때 Random Seed를 제외한 모든 항목들은 기본값(default)으로 지정합니다. Random seed의 경우 각각의 표본추출 노드가 서로 상이한 값을 갖도록 해야 각 분류기가 학습하는 데이터가 서로 달라지기 때문에 꼭 바꿔주어야 합니다.
Sample노드를 이용할 경우 추출 데이터를 100%로 지정하게 되면 Random seed가 상이해도 모두 동일한 표본이 추출되기 때문에 100%미만으로 추출률을 조정하해 주시는 것이 좋습니다. 저 같은 경우 SAS paper자료에 나와있는 설정 그대로 10%의 추출률(default 값)로 학습을 진행했습니다.
이렇게 서로 상이한 표본데이터들을 각각의 분류기(Classifier)들을 이용해 학습하게 되면 각각의 학습데이터가 다르기 때문에 분류기 역시 서로 독립적으로 학습될 확률이 높아지게 됩니다. 이번 실습에서는 의사결정나무를 이용했지만 실질적으로 신경망, 로지스틱 회귀 모형 등을 이용해도 관계 없습니다.
Group processing 노드를 이용한 배깅 방법
E-miner의 Group processing 노드의 경우 매우 강력한 기능을 갖고 있어 정말 유용하게 쓰일 수 있습니다. 이 노드의 경우 k-fold-cross validation 같은 기능은 물론, 다중 종속변수를 같는 경우 이를 한 번에 모델링하는 것도 가능하고, Segment를 설정하면 각 Segment별 모형을 학습하는 것이 가능합니다.
이번 실습에서는 이러한 Group processing 노드의 기능 중 하나인 배깅 방법을 이용해 보도록 하겠습니다. 사전에 소개한 방법의 경우 직관적으로 알고리즘을 이해하기에는 적합하지만 만약 100개의 의사결정 나무 모형을 배깅하고 싶은 경우 매우 비효율 적일 것입니다.
하지만 group processing노드를 이용하면 최초에 학습모형의 개수를 지정하면 별도의 추가 노드 없이도 학습이 가능하기 때문에 위와 같은 비효율적인 부분을 없앨 수 있고, 좀 더 정확한 배깅모형을 생성하는 것이 가능합니다.
다이어그램(DIAGRAM)
그룹처리 노드를 이용하기 위해서는 [유틸리티] 항목의 [그룹시작], [그룹종료]노드를 이용하면 됩니다. 이 때 학습하고 싶은 데이터는 그룹시작 노드 앞에 위치 시키고, 학습하고 싶은 모형의 경우 그룹시작 노드 다음에 위치시킨 후 그룹종료 노드를 그 다음에 붙이면 됩니다(do-end loop와 비슷한 개념).
옵션의 경우 그룹시작 노드를 이용해 변경이 가능합니다. ① 모드: 모드의 경우 그룹처리 노드를 이용해 어떠한 작업을 수행할지를 결정하는 옵션입니다. 이번 실습의 경우 배깅을 목적으로 하기 때문에 위와 같이 설정을 변경해 주었습니다. ② 인덱스 개수: 총 반복횟수를 말하는 데 사전에 소개해드린 sample노드 기반 배깅에서 의사결정 나무의 개수라고 생각하시면 됩니다. ③ 백분율: 백분율은 각각의 모형을 생성하기 위한 bootstrap sampling에 이용할 데이터의 개수를 말합니다. 100%를 선택할 경우 이론적으로 전체의 약 63%가 이용되게 됩니다.
CONCLUSION
이번 연재에서는 SAS E-miner를 이용해 배깅을 구현하는 방법에 대해 알아보았습니다. E-miner는 크게 두 가지 방법으로 배깅 알고리즘을 구현하는 것이 가능하고 첫 번째 방법인 sample노드를 이용한 방법의 경우 시각적으로 배깅 알고리즘을 이해하는 것이 유리하지만 노드가 공간을 많이 차지하는 등의 제약 사항이 존재하는 것을 알 수 있었습니다. 두 번째로 알아본 그룹처리노드를 이용한 방법의 경우에는 이러한 제약사항을 보완하고 비교적 유연한 방법으로 응용이 가능하여 실무 및 연구에 적용하기에 적합함을 알 수 있었습니다. 다음 시간에는 대표적인 앙상블 기법 중 하나인 부스팅 알고리즘의 이론적 배경에 대해 알아보도록 하겠습니다.
REFERENCES
[1] R, SAS, MS-SQL을 활용한 데이터 마이닝 / 자유아카데미 / 이정진 지음
[2] Breiman, L. 1996. “Bagging Predictors.” Machine Learning 24: 123–140.
[3] https://support.sas.com/resources/papers/proceedings14/SAS133-2014.pdf
[4] https://www.stat.berkeley.edu/~breiman/OOBestimation.pdf
[5] https://archive.ics.uci.edu/ml/datasets/Adult
[6] http://www.dataminingmasters.com/uploads/studentProjects/Earning_potential_report.pdf
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!