2014년 4월 1일 화요일

[Data Science] 예측모델링(Predictive Modeling) & 분류(Classification)


지나서 얘기지만 교육을 받을 때는 정말이지 엄청히나 이해가 안되고 감이 안잡혔던 부분이었다. 물론 어떤 경우에 사용되는가? 사례등을 들어 보면 참으로 이해가 잘된다. 그런데 막상 하려면 참 어렵다. 이것이 진실이었던 듯 자꾸 수박 겉할기 식으로만 접근 해서 그런것은 아니었나 싶다. 최근에 "Data Science for Business" 이 책을 통해서 조금이나마 이해를 하기 시작했다. 결론은 기초가 없다는것 그 시작 그리고 과정을 정리 하면서 공부하려고 한다. CRM 데이터를 기준으로 설명하고 예제 실행(with R)을 해보려고 한다.

Predictive Modeling (예측모델링) - 흥미있는 특정 값에 따라 집단을 분류하는 것 으로 설명 한다.

예를들어 보자
1) 어떤 고객이 화이트데이 이벤트에 참여/구매할 것인가?
2) 어떤 고객이 3개월이내에 탈퇴 할 것인가?
3) 어떤 고객이 내년에 VIP가 될것인가?

이러한 용도에 고객의 행동을 예측하거나 고객들의 특성(속성)을 파악하는데 사용되고 다른 마이닝된 결과(메뉴들 과의 관계분석 이나 고객의 주요 구매활동 지역정보 분석에 대한 결과)와 연계하여 활용도 가능 하다.ㅍ

용어정의 먼저 시작하고 넘어 가보려고 한다.
Model - 알려지지 않은 값을 예측하기 우한 공식
Example, Attribute, Target Attribute


Class - 다른 Target Attribute 값을 갖는 Example 들의 Group

데이터베이스개론쪽 IT수업에서 보면 테이블 형태와 유사하다. 아니 똑같다라는 표현이 맞을듯 하다 여기서 구분되어져서 봐야 할 부분 바로 Target Attribute 로 되어 있는 부분 이다.

예제로 사용되는 IRIS 데이터셋이 있는데 Petal(꽃잎), Sepal(꽃받침)의 길이와 넓이 정보를 가지고 붓꽃의 품종 3종으로 나누어진 데이터가 있다. 모델을 만들때 그러니깐 분류분석을 할때 가장 어려워 했던 부분이 바로 Attribute와 Target Attribute에 대한 명확한 구분과 의미를 몰랐던것 같다. 이제와 보니 간단하면서도 명확했던 것을 무엇이 문제 였을까.

여하튼 특정속성값들을 어떻게 조합하여 모델을 민드냐에 따라 그 예측되는 결과가 달라 질 수 있음이다. 또한 한번 만들어 보고 나니 실제로 활용되는 모델은 다양하고 계속적으로 변화 하면서 존재 할 수 밖에 없다는 생각을 하게 되었다.


** 이부분을 먼저 할까 나중에 할까 하는 고민을 하게 된다. 개인적으론 나중에 했다. 그제서야 아.. 분류할때 이런 기준으로 분류는 하는거였구나 하며 무릎을 치게된 순간이 좀 늦게 왔다랄까? 어느게 먼저이어야 한다는건 사실 현업의 실무자에겐 의미가 없어 보인다. 학문적으로나 학구적으로 한다면 당연히 이부분이 먼저여야 한다는것이 맞겠지만 글쎄 개인적인 생각으론 우선순위가 있다기 보단 기본 지식이 있는것과 없는것의 차이? 여하튼 이곳에서의 기록도 또한 개인적 우선순위로 변경하여 먼저 정리를 하고 넘어갈 생각이다.

* Informative Attributes (유의한 변수(속성)) 를 찾아 내야 한다. 그래야 제대로된 분류를 할 수 있다. 예를 3개월 안에 이탈할 고객은? 이라는 문제가 있고 이탈하지 않도록 뭔가 강한 오퍼를 날리기 위해 이벤트든 켐페인을 해야 한다고 상황이 왔을때 우리는 제대로된 집단으로 분류하고 정리해야 한다. 이때 유의한 변수(속성)을 찾아 내는 것이다.

고객의 정보에 있는 여러가지 변수들 중에 말이다. 남자/여자? 최근 구매금액? 최근 방문빈도? 여하튼 여러가지 속성정보들 중에서 어떤 속성으로 아니 더 정확히 말하면 어떤 속성을 우선순위로 하여 분류할 것인가를 생각해야 한다. 이때 가장 많이 쓰이는 것이 바로 information gain이 가장 널리 쓰인다. Information Gain은 지정된 속성이 얼마나 잘 training example들간을 구분하는가에 대한 수치 값을 의미한다. 특정 속성을 기준으로 example들을 구분하게될 때, '감소되는 entropy의 양'을 의미한다. Entropy는 또 무엇인가? 그것은  example들의 집합에서의 혼합성(impurity)을 나타내는 수치 이다. 계산하는 로직은 아래와 같다.

* pi = 속성값이 i 일 확률

이렇게만 들으면 정말이지 맨붕 온다. 나 역시도 학부시절 통계학을 듣긴 했지만 정말이지 아주 아주 기초수준을 벗어나진 못했다.. 일단 그림 한번 보자


설명을 붙이기 전에 일반 그림으로 보면 +, - 를 구분하는데 있어 왼쪽 entropy값의 변화를 보자 값이 1과 0 사이에서 어느쪽이 순수하게 구분이 되어지고 어느쪽이 복잡하게 되어지는지 변화를 보자. 0에 가까울 수록 순수함을 표기하고 1에 가까울 수록 동일한 숫자로 혼합되어 있다는것을 확인 할 수 있다.




앞에서 Information gain이란 특정 속성을 기준으로 example들을 구분하게될 때 감소되는 entropy의 양을 의미한다고 하였다. 그리고 entropy는 example들의 집합에서의 혼합성(impurity)을 나타낸다고 하였으므로, entropy가 작아질수록 혼합성이 줄어든다. example을 구분할때 혼합성이 작을 수록 서로간의 구분이 더욱 용이해 지므로, Information gain이 커질수록 좋은것이다. 따라서 Information gain이 더 큰, '습도' 속성을 기준으로 운동여부를 구분하는 것이 더욱 효율적이다




#참고문헌 및 참조 URL
1. Data Science for Business
2. 데이터분석 전문가가이드
3. 네이버 사전

댓글 없음:

댓글 쓰기

언제 부터 였던가 생각해보니 아르바이트 겸 외부 컨설팅을 의뢰 받고 맥북 프로를 처음 써봤을 때 부터 였던 것 같다. 지금은 거의 대부분의 작업을 맥으로 작업을 하다 보니 윈도우에서만 실행되는 일부 프로그램들 때문과 회사 내부 ERP프로그램이 윈도우 ...