BookmarkSubscribeRSS Feed

[EM] 랜덤포레스트(Random Forest) 실습

Started ‎06-10-2020 by
Modified ‎06-10-2020 by
Views 452

안녕하세요 MySAS홍보대사 한노아입니다.

오늘은 지난 시간에 알아본 랜덤포레스트의 이론적 토대를 기반으로 E-miner를 통해 직접 분석하는 방법에 대해 알아보도록 하겠습니다. 오늘 사용할 데이터는 매우 잘 알려진 데이터 중 하나인 Universal Bank데이터이 입니다. 이 과거 데이터는 마케팅 캠페인 후에 반응을 보였던 고객과 그렇지 않은 고객들의 정보를 수집하여 향후 캠페인이 진행되었을 때 특정 고객이 개인 담보대출(Personal Loan)을 받을 만한 고객인지 여부를 예측하기 위한 데이터입니다. 이 데이터를 이용해 랜덤포레스트, 의사결정나무, 배깅, 부스팅 등 다양한 알고리즘을 적용해 보고 최적모형을 추정해 보도록 하겠습니다.

 

 

INTRODUCTION

오늘 연재의 궁극적인 목적은 서로 상이한 실험설정하에서 랜덤포레스트가 어떻게 성능이 변화하는지 알아볼 것입니다. 또한 서로 다른 모형들 간의 오뷴류을 비교하여 가장 좋은 예측을 하는 모형을 선택하도록 하겠습니다.

 

 

DATA DESCRIPTION

이번 연재에서 사용할 데이터는 시뮬레이션 데이터입니다. 따라서 실제 데이터와는 상이할 수 있으나 분석 프로세스 및 방법론에 대해 익히는 데에는 매우 적합할 것으로 예상되어 이용하게 되었습니다. Universal Bank 데이터에는 총 14개의 변수가 존재합니다. 질적, 양적 변수가 서로 섞여 있고 이번 토픽에서는 Personal Loan이라는 변수가 목표변수(Target)으로 이용될 예정입니다. 

 

SE22017010202204270.png

 

위 변수들을 살펴보면 우선 일반적인 정보로는 ID, Age, Income, ZIPCODE 등이 있습니다. 이중 ZIPCODE의 경우 미국 zip code와 결합하여 지역정보를 유추하는 것이 가능하나 본 실습에서는 이용하지 않도록 하겠습니다. 그 외에 금융관련 정보로는 CCAvg, Securities Account, CD Account, Online, Credit Card등이 있습니다. 이 정보들은 계좌보유 유무 및 접속 채널 그리고 우리 은행을 얼마나 자주 이용하는지 등의 정보를 내포하고 있습니다.

 

 

DESCRIPTIVE STATICS

SE22017010202215370.png

 

먼저 산점도 행렬을 이용해 연속형 변수들의 분포를 살펴보도록 하겠습니다.  먼저 개별 변수들의 분포를보면 정규분포를 따르지 않고 대부분의 분포가 분포 왜곡이 심한 것을 알 수 있습니다따라서 변수변환을 해주는 것이 좋을 것으로 판단 됩니다각 변수들 간의 관계를 나타내는 산점도를 보면 income이 높을수록 대체로 대출을 많이 받는 것을 파악할 수 있습니다또한 Experience age가 서로 매우 강한 선형상관관계를 갖고 잇는 것을 알 수 있습니다따라서 차원축소 또는 두 변수 중 목표변수와 무관한 변수를 제거하는 것이 좋을 것으로 판단됩니다또한 income mortgage, CCAvg도 약간의 선형관계를 보이고 있는 것을 알 수 있습니다.

 

SE22017010202225170.png

 

먼저 상단의 연속형 변수에 대한 기술통계를 살펴 보도록 하겠습니다. Experience변수의 경우 음의 값을 가질 수 없는 변수라고 판단 되는데 음수를 갖는 것으로 보아 데이터 상의 노이즈로 판단됩니다. 이 경우 다른 값으로 대체하는 것이 좋을 것 같습니다. Mortgage변수의 경우 분포가 매우 편향되어 있는 것으로 보이고 정규성 검정에 대한 p-value가 모두 0.05보다 작은 값을 나타내는 것으로 보아 통계학적으로도 모든 수치형 변수가 정규성을 만족하지 않는 것을 알 수 있습니다. 따라서 적절한 변수변환 및 특이값 및 이상치 제거 등의 수정 작업이 필요할 것으로 판단 됩니다.

 

범주형 변수의 경우 카이제곱 검정을 통해 해당 변수의 유효성을 추정해 보았습니다. P-value를 통해 추론할 수 있듯 Credit Card와 Online, Securities Account 등의 변수는 개인 담보 대출에 큰 영향을 주지 않는 것을 알 수 있었습니다. 즉 현재 Universal Bank이 주 거래 은행인지 여부와 크게 관계없이 적당한 인구통계학적 정황들이 만족하면 대출의 가능성이 높아짐을 추론할 수 있었습니다. 

 

SE22017010202233470.png

 

위 그래프는 목표변수에 대한 분포를 나타낸 그래프로 개인담보 대출을 받지 않은 고객이 담보대출을 받은 고객에 비해 상당히 많은 것을 알 수 있습니다. 이러한 데이터를 보통 계급불균형(imbalanced data)라고 이야기 합니다. 이러한 데이터의 경우 정확도의 역설(Accuracy Paradox)이라는 현상이 발생할 위험이 크기 때문에 별도의 처리가 필요한 경우가 있습니다.

 

DATA TRANSFORMATION

SE22017010202242570.png

 

사전 데이터 탐색을 통해서 변수 변환 및 수정이 필요하다는 사실을 알 수 있었습니다. 먼저 앞서 살펴본 결과에서 Experience 즉 전문직 경력의 경우 년 단위 변수임에도 불구하고 음수가 존재하는 것을 확인했습니다. 따라서 해당 변수의 경우 잘 못 된 값으로 인식하고 0으로 변경해 주었습니다. 그 다음으로 개별 변수들이 대체로 정규성을 만족하지 않았기 때문에 [수정]의 “변수 변환”노드의 설정을 정규성 최대로 변경하여 변수를 변환해 주었습니다. 또한 산점도를 통해 이상치가 있음을 확인했기 때문에 이를 보정해 주는 작업을 “값 대체”노드를 이용하여 진행했습니다. 옵션은 기본값을 이용했습니다.

 

끝으로 변수 선택을 E-miner에서 지원하는 변수선택 노드를 이용해 진행했습니다. 그 결과 아래와 같은 변수들이 Target에 대한 설명력이 뛰어난 것을 알 수 있었습니다. 

 

SE22017010202250970.png

접두어 REP은 값 대체가 발생한 것을 말하며 G는 설명력을 높이기 위해 재 그룹화가 된 것을 말합니다. 또한 PWR, LOG, SQRT 등은 이용한 변수변환 함수를 의미하는 접두어입니다. 가령 REP_SQRT_Income의 경우 이상치가 존재하여 값 대체가 일어났고 해당 변수가 정규분포를 따르게 하기 위해 Square Root 변환을 했음을 의미합니다.

 

위 결과를 보면 소득이 가장 개인담보대출과 연관성이 깊다는 사실을 알 수 있습니다. 그 다음이 CD_Account 그리고 Education인 것을 알 수 있습니다. 그 다음이 교육수준 및 가족 구성원의 수 인 것을 알 수 있습니다. 즉, 대출여부는 일단 해당 고객의 소득에 가장 큰 영향을 받고 그 다음 우리은행에 CD계좌가 있는 여부가 및 교육수준이 중요한 것을 알 수 있습니다.

 

 

PREDICTIVE MODELING

SE22017010202255770.png

 

지난 연재에서 랜덤포레스트의 경우 서브트리의 개수와 변수부분집합의 개수에 영향을 많이 받는 다는 이야기를 한 적이 있습니다. 이러한 이유로 이번 실습에서도 이 부분을 중점으로 하여 최적모형 추정을 진행했습니다. 물론 실질적으로 모형을 적합 시킬 때에는 더 많은 경우의 수를 시도해 보는 것도 좋습니다.

 

먼저 랜덤포레스트 모형의 경우 “Split Size”라는 옵션이 바로 선택변수의 개수를 의미합니다. 과거 이론연재를 통해서 Sqrt(P)개의 변수를 이용하는 것이 대체로 좋다는 사실을 알 수 있었지만 이번 실험의 경우 사전에 선택된 변수 총 6개를 기준으로 2개의 변수부터 한 개씩 늘려가며 실험을 진행했습니다. 총 변수의 수가 6개로 이에 대한 Sqrt(6) = 2.4정도로 매우 작기 때문에 하위 변수 벡터가 2개의 원소만을 갖게 되어 유의미한 tree가 만들어지지 않을 것으로 우려되어 이렇게 옵션을 변경했습니다.

 

두 번째로 하위 트리의 수의 경우 기본 값이 100개로 설정되어 있습니다. 이를 적당한 단위로 변경하여 하위 트리의 개수가 몇 개일 때 대체로 오차가 안정화 되는 지를 살펴보는 것이 좋습니다. 저 같은 경우 100개, 150개, 200개 총 3개의 경우의 수를 고려하여 노드를 생성했습니다.

 

나머지 신경망, 단일 트리, 그라디언트 부스팅, 로지스틱회귀 모형 등은 모두 옵션설정 변경없이 기본값을 유지했습니다. 적색 영역은 지지난 연재 때 이용했던 부스팅과 배깅을 커스터마이징한 모형들 입니다.

 

 

GOODNESS-OF-FIT 

SE22017010202264170.png

 

먼저 적합모형에 대한 ROC커브를 보면 대체로 과적합이 발생한 것으로 보이는 모형(Train Validate의 차이가 심한 모형)

은 없는 것으로 보입니다종속변수들의 설명력이 높아 대체로 분류 정확도가 상당히 좋은 것을 알 수 있습니다또한 사전에 Target변수의 분포를 살펴보며 우려했던 정확도의 역설 문제는 발생하지 않은 것으로 보입니다(종속변수의 설명력이 매우 높은 경우 계급불균형 자료에서도 이러한 문제가 발생하지 않을 수 있음).

 

SE22017010202275570.png

 

위 그래프는 모두 Validate 데이터를 기준으로 기술되어 있습니다. 먼저 ①번 그래프의 경우엔 각 모형들의 오분류율을 나타낸 그래프로 배깅 모형과 최대 하위 트리의 수가 150개인 랜덤포레스트 모형이 비교적 매우 낮은 오분류율을 나타내고 있는 것을 알 수 있습니다. ②번 그래프의 경우 null misclassification rate(모든 객체를 다수 집단으로 분류할 경우 발생하게 되는 오분류율)대비 해당 모형의 오분류율을 나타내는 그래프입니다. ①번 그래프와 매우 유사한 수치를 나타내는 것을 알 수 있습니다.

 

②, ③은 특이도와 민감도를 나타낸 그래프로 로지스틱을 제외한 대부분의 모형이 모두 민감도가 특이도보다 상대적으로 높은 것을 알 수 있습니다. 반면 배깅 모형의 경우 특이도가 눈에 띄게 높은 수치를 나타내는 것을 알 수 있습니다. 즉, 배깅의 경우 개인담보 대출을 받지 않을 고객에 대한 예측력은 다른 모형에 비해 다소 떨어질 수 있지만 개인담보 대출을 받을 가능성이 높은 고객을 놓치는 경우가 훨씬 적은 것을 의미합니다. 이러한 경우 챔피언 모형으로 배깅을 선택하는 것이 더 실효성이 있을 것으로 생각됩니다.

 

이제 우리의 주요 관심사였던 랜덤포레스트 모형의 결과를 해석하는 방법에 대해 알아보도록 하겠습니다. 랜덤포레스트 모형의 결과를 통해 보아야 할 것은 크게 두 가지 정도가 있습니다. 첫 번째는 변수 중요도 이고 두 번째는 적당한 서브트리의 개수가 적당한지 여부입니다. 이제 각각을 살펴보는 방법에 대해 알아보도록 하겠습니다.

 

 

적정 서브트리의 수 

SE22017010202283970.png

 

위 그래프는 반복도표로 서브트리의 개수에 따른 오분류율의 변화를 나타내어 놓은 그래프입니다. 여기에는 총 3가지 데이터에 대한 오분류율의 추세를 살필 수 있습니다. 먼저 학습용데이터(training set)의 경우 위 그래프에서 알 수 있듯 오분류율이 비교적 낮게 나타나게 됩니다. 이 것은 학습용 데이터로 학습이 이뤄졌기 때문에 해당 데이터에 적합한 모형이 생성 됐기 때문에 그렇습니다. 반면에 Out-Of-Bag 오분류율의 경우엔 매우 보수적으로 오분류율을 추정하게 되고 그래서 일반적으로 OOB오류와 train 오류 중간 쯤에 실제 데이터에 대한 오류곡선이 존재하게 된다고 합니다. 위 그래프의 경우에도 평가용 데이터에 대한 오분류율의 경우 학습용 데이터와 OOB데이터에 대한 오분류율 사이에 존재하는 것을 알 수 있습니다.

 

그래프의 특성은 대략 위와 같고 이 그래프를 통해 적정한 하위 트리의 개수를 추정하는 방법은 오차가 안정화 되는 지점을 찾으면 됩니다. 주관적이긴 하지만 위 그래프를 살펴보면 대략 하위 트리의 개수가 50개가 넘어가는 시점에 대략 안정화 된 오분류율을 나타내고있고, 100개가 넘어가는 시점부터는 더 안정적인 오분류율을 나타내는 것을 알 수 있습니다.

 

 

변수중요도

SE22017010202294070.png

변수 중요도를 보는 방법은 랜덤포레스트 노드를 우클릭하여 [결과]를 클릭하면 여러 개의 창이 뜨는데 그 중 좌측 가운데 부분에 위와 같은 창이 있습니다. 변수 중요도를 살피는 방법은 주변감소를 통해 볼 수 있습니다. 여기서 말하는 주변감소는 해당 객체의 실제 집단일 확률에서 다른 집단일 확률의 최댓값을 뺀 수치를 의미합니다. 또한 위 표에 나타난 주변 감소는 해당변수가 주변감소에 기여하는 정도를 나타내는 수치입니다. 만약 주변감소가 0이고 이항 목표변수인 경우 해당 객체의 실제 집단에 대한 추정 확률이 0.5이고 다른 집단일 확률의 최댓값 역시 0.5임을 의미하고 결과적으로 임의로 찍는 것과 큰 차이가 없기 때문에 무의미한 변수가 됩니다. 이런 경우 해당 변수는 reject되게 됩니다. 즉 주변 감소가 큰 변수일수록 그 중요가 높은 것을 의미합니다.

 

 

 

CONCLUSION

오늘 연재에서는 Universal Bank데이터를 이용해 고객정보를 이용 향후 개인담보대출에 반응을 보일 고객인지 여부를 예측하기위한 모형을 랜덤포레스트 모형을 이용해 생성해 보았습니다. 또한 랜덤포레스트 모형에 지대한 영향을 미치는 두 가지 옵션 분리변수의 개수와 최대 하위 트리의 개수를 조정하여 실질적으로도 차이가 있음을 확인했습니다. 결과적으로는 배깅모형이 가장 좋은 성능을 나타내기는 했지만 150개의 최대 하위트리를 갖는 랜덤포레스트 모형 역시 이에 견줄만한 성능을 나타내는 것을 확인했습니다. 이 모형을 토대로 변수중요도를 보는 방법 및 적당한 서브트리의 개수를 유추하는 방법에 대해서도 알아보았습니다. 다음 연재에서는 모수를 조정하여 모형을 상이하게 생성해 이를 앙상블 하는 방법에 대해 알아보겠습니다.

 

 

 

REFERENCES

[1]  https://support.sas.com/resources/papers/proceedings14/SAS133-2014.pdf

[2]  https://support.sas.com/resources/papers/proceedings14/SAS313-2014.pdf

[3] http://www.sas.com/content/dam/SAS/en_ca/User%20Group%20Presentations/Toronto-Data-Mining-Forum/dzie...

[4]  https://support.sas.com/resources/papers/proceedings15/3361-2015.pdf

Version history
Last update:
‎06-10-2020 03:50 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags