정보공간_1

[6기 신촌 김윤상] SAS E-Miner를 이용한 Big Data - Decision Tree 분석 본문

IT 놀이터/Elite Member Tech & Talk

[6기 신촌 김윤상] SAS E-Miner를 이용한 Big Data - Decision Tree 분석

알 수 없는 사용자 2014. 12. 11. 00:23

안녕하세요 신촌멤버십 23-1기 김윤상입니다.

이번 시간에는 SAS Enterprise Miner(E-Miner)를 이용하여

빅데이터를 다루는 방법을 알아 보겠습니다.

이번 포스팅에서는 Decision Tree를 이용하여 공공데이터 부분의 한 주제를 분석해 볼 것입니다.






Decision Tree란?

- 의사결정 트리 모델은 변수의 조건에 따라 target 변수에 어떻게 접근이 되는지 알아보는 모델 입니다. 

Target 변수는 0 또는 1 과 같이 정확한 결과를 나타내는 변수입니다. 한 Decision Tree에 1개의 Target 변수만이 허용되며 이 Target 변수에 적합한 조건을 분류하는 다른 변수들이 있습니다.

이 모델은 주어진 데이터를 '분류' 하는 모델이며 '예측' 하는 모델이 되지는 않습니다.

허나, form에 맞는 데이터가 접근 한다면 이미 분류된 모델로 계략적인 예측은 할 수 있다고 볼 수 있습니다.






공공 데이터에서 적합한 데이터 탐색



http://data.go.kr 사이트에서는 국가의 각종 데이터들을 제공합니다. 

이 사이트에서, 저는 Decision Tree에 가장 적합한 데이터를 찾아 보도록 하겠습니다.

Target 변수는 0 또는 1과 같은 결과를 가집니다. 저는 이 Target 변수에 적합한 것이

'합격' 혹은 '불합격' 이라 판단하여 '합격' 이라는 키워드로 검색을 진행하였습니다.


이 키워드로 발견하게 된 데이터는 바로

"보건의료인 국가시험 응시자 DB"

입니다.

이 데이터에는 연도, 직종, 회차, 성별, 연령대, 응시지역, 졸업여부라는 Input variable

합격 여부라는 확실한 Target variable이 존재합니다.



이 데이터를 이용하여 분석을 진행해 보겠습니다.

데이터의 총 샘플 갯수는 86,744개로 일일히 분류를 하기에는 조건도 많고 데이터도 많은 것을 확인할 수 있습니다.

우리가 흔히 부르는 Big Data급의 데이터라고 정의할 수 있겠습니다.





SAS - EnterPrise Miner로 분석


분석에는 SAS 라는 툴의 Enterprise Miner 도구가 이용됩니다.

SAS는 개인 사용자가 사용하기엔 많이 비싼(^^;) 도구이나

저는 대학생이기에! 학교의 SAS를 이용하여 분석을 진행하였습니다.

혹여나, 집에서 분석을 해 보고 싶은 "학생"분은 다음의 링크를 이용하셔서 

SAS University Edition을 이용해 주시면 됩니다.

http://www.sas.com/offices/asiapacific/korea/analyticsU/main.html



SAS를 실행한 후, 파일 - 데이터 가져오기를 이용하여 다운로드 받은 데이터를 불러 옵니다.


다운로드 받은 데이터(.xlsx 확장자를 선택하여 주셔야 됩니다)를 import하면 다음과 같이 무슨 시트의 데이터를 사용할 것인지 묻습니다. 저는 '의사, 치과의사, 한의사' 시트를 사용하니 저것을 선택하였습니다.


다음 WORK라는 라이브러리 안에 dtree라는 이름으로 데이터를 정의하고


dtree라고 이름을 정의하고 Finish를 눌러 데이터 임포트를 끝냅니다.


이제 라이브러리를 더블클릭 해 보시면


다음과 같이 WORK 라이브라리가 나타나고


Dtree 데이터가 있는 것을 확인할 수 있습니다. 클릭을 해 보시면 다음과 같이 정상적으로 들어온 것을 확인 가능합니다.


다음 분석을 진행하기 위해 솔루션 - Enterprise Miner를 실행합니다.


유져 이름에 우클릭을 하셔서 새 Workspace를 부르시고(제 학교의 이름이 보이네요)

좌측 상단의 Input Data Source를 드래그 앤 드롭으로 공간에 끌어다 넣습니다.


이 Input Data Source를 더블클릭 하시면 다음과 같은 화면이 나타납니다. Soruce Data에 아까 집어넣은 Dtree를 선택 합시다.


이 부분이 제일 중요합니다.

합격 여부는 계속 설명했던 Target 변수입니다. 이 부분에 우클릭 하신 후, Set model Role를 선택하셔서


다음과 같이 Target으로 바꾸어 줍니다. 그리고 X 버튼을 눌러 설정 창을 닫습니다.


그리고, 위에 트리 모양을 드래그 앤 드롭으로 끌어 놓으신 다음에 

Input Data Source 외곽선을 드래그 앤 드롭으로 Tree에 이어 줍니다.


그리고 Tree를 우클릭 후, Run을 합니다.


다음과 같이 분석된 것을 볼 수 있습니다. 여기서 Plot 탭을 클릭하면


다음과 같은 그래프를 확인 가능합니다. 이 그래프의 의미는 데이터가 분류되지 않는 비율이 Leaves 2>3 갈때 확 낮아지며, 7에서 최적을 이루고 있다는 것을 의미합니다. 7 이후의 Leaves가 계속 증가하여도 데이터의 분류에는 영향을 미치지 않는 다는 것을 확인할 수 있습니다.


/*

Leaves란? 

최종 단계의 이파리 갯수 입니다. Leaves가 3인 경우 최종으로 분류되는 Target 조건이 3개라는 것을 의미합니다.

*/


이제 Leaves 3의 Tree를 살펴보겠습니다. 해당 행에 우클릭 후 보기-트리를 선택합니다.


다음과 같이 Tree를 확인할 수 있습니다.

이 Tree의 의미는 졸업 여부가 가장 중요한 변수란 것입니다.

졸업 예정자는 95.2%의 확률로 합격, 졸업자는 49.6%로 합격한 것을 확인할 수 있습니다.

졸업자 중에서, 연령대에 따라 합격률과 불합격률이 갈리는데 20대는 73.6%로 합격, 그 외에는 35.3%로 합격한다는 것을 알 수 있습니다.

결국, 회차와 응시년도 이런 것은 중요하지 않으며 졸업 여부가 가장 큰 input 변수이고 다음으로 연령대가 된다는 것을 Leaves 3의 Tree에서 알 수 있습니다.


이번엔 Leaves 7의 트리입니다. 아까와 다르게 직종이란 조건이 추가되었습니다. 하지만, 4개의 leaves밖에 보이지 않네요.

이유는 이름 표시줄에서 보이듯 3 Depth밖에 표시가 안 되기 때문입니다.

우클릭을 하여 설정에서 Depth를 바꾸면 나머지 Leaves를 확인할 수 있습니다. 모니터가 작아서 다 찍히진 않지만, Depth 6까지 내려가면 7개의 Leaves를 확인할 수 있습니다.


이 Tree를 보고 Rule을 작성할 수 있습니다. 

다음은 Depth 3, Leaves 15 이상의 Tree입니다. 이 때, 가장 합격률이 좋은 Leaves와 낮은 Leaves는 다음 네모 친 Leaf들 입니다.


가장 합격률이 높을 조건은

IF 졸업 예정자 AND 여자 AND 치과의사 = 98%의 합격률

가장 합격률이 낮을 조건은

IF 졸업자 AND 나이>20 AND 치과의사 = 19.9%의 합격률


이와 같이 데이터를 분류 분석 가능하다는 것을 볼 수 있습니다. 

이렇게 분석 결과는 실제로 많은 의사 결정에 사용되고 있기 때문에 Decision Tree라고 불리우는 것입니다.






여러분도 실제로 빅 데이터를 다룰 수 있습니다.

제가 소개한 포스팅이 여러분들이 데이터를 다루고 의사 결정을 하는 데에 도움이 되길 바랍니다.

이상 23-1기 신촌 삼성소프트웨어멤버십 엘리트회원 김윤상이었습니다.