(그림의 출처는 넷스루의 서동렬 박사님께서 그리신 것을 사용했음을 밝힙니다.)
지난 포스팅에서는 데이터 마이닝의 개념과 어떤 종류가 있는지 살펴봤다.
데이터마이닝은 아래와 같이 3가지로 분류된다고 했다.
Market Basket Anlysis (장바구니 분석)
이번 포스팅에서는 이 셋중의 한가지인 Supervised Clustering(교사 학습 단위묶기)의 방법인 Decision Trees를 살펴본다.
여기서 교사란 학생을 가르치는 교사의 뜻이다.
교사학습은 사전에 데이터와 이때 처리방법을 학습시키고 이후에 데이터가 들어오면, 학습된 방법에 따라 데이터를 처리, 분류하는 것이다.
당연히 비교사학습에 비하여 교사학습이 정확성등이 높다.
교사 학습 단위 묶기라고 쓰면 뭔가 어려운 단어처럼 보이는데, 풀이해보면 미리 학습된 방법으로 분류 단위를 묶는것이므로 개념 자체는 어렵게 생각하지 않아도 된다. (물론 How로 가면 어려워지지만..)
자 백문이 불여일견, 예시를 보자
아래의 표에서 보험 가입자와 비가입자를 구분하는 요소들의 패턴을 찾는 것이 목적이다.
즉, Income Range, Credit Card Insurance, Sex, Age 4개의 패턴과 우리의 목적인 Life Inusurance Promotion(생명보험 상품)사이의 상관관계를 찾는 것이다. 어떤 조건들이 맞아 떨어질때 사람들은 생명보험상품에 가입할까?
어떻게 찾을 수 있을까?
우선 소득 범위 (Income Range)를 기준으로 판별해본다.
음... 나온 결과들에서 그다지 변별력 있는 결과를 찾아볼 수 없다.
하지만 계속 찾아보자.
이번엔 신용카드 보험에 든 사람들 중, 생명보험상품을 가입한 사람과 관계를 따져보았다.
흠.. 이 결과에서도 딱히 변별력을 찾을 수가 없다.
하지만 이제 4개의 샘플 중 겨우 절반을 테스트했을 뿐이다.
Keep going!
나이를 기준으로 분류해보자.
오.. 이 결과는 뭔가 변별력이 있다.
나이가 43살이 넘는 사람들은 모두 생명보험을 가입하지 않았으며, 43살 이하인 사람들은 상당수가 생명보험을 가입했음을 알 수 있었다.
자 이제 지금까지 나온 결과를 하나로 연결해보겠다.
연결의 시작이 되는 기준은 Age로 정해보았다.
어떤가? No와 Yes의 극단적인 형태를 볼 수 있지 않는가?
이번엔 Credit Card Insurance를 기준으로 트리를 만들어 보겠다.
이것 또한 괜찮은 정보를 얻을 수 있다.
(Yes와 No가 극단적으로 갈릴수록 좋은 정보다. 왜냐고? Yes와 No가 어정쩡하게 섞인 정보는 아무런 의미를 해석할 수 없으니까!)
자, 이제 결정 트리 (Decision Tree)가 무엇인지 감이 왔을 것이다.
위의 과정처럼 표에서 데이터를 도출하여 컬럼별로 트리를 만들고, 각각의 트리를 이어서 의미있는 정보를 결정할 수 있는 트리를 완성시키는 것이다.
이것은 뭐가 좋을까?
첫번째로는 위에서 살펴봤듯이 의미있는 데이터를 분석할 수 있다.
두번째로는 루트에서 하위트리로 내려가면서 어디에서 사람들이 많이 갈리는지 설명하기가 편하다.
예를들어 Age를 기준으로 한 결정트리에서는 43살 이하의 사람들중에서 남자인 사람들은 전부 보험에 가입했지만, 여자인 사람들 중에서는 신용카드 보험으로 나뉘는데, 신용카드 보험 비가입자는 대부분 생명보험을 가입하지 않았고, 신용카드 보험 가입자는 전부 생명보험을 가입했다.. 글보다는 그림을 한번 보면 이해가 될 것이다!
하지만 결정 트리도 단점이 있다.
위에서는 5열 16행의 단순한 샘플 테이블이었기에 결정 트리를 한눈에 파악할 수 있었다.
하지만..
열의 개수가 100개이고 행의 개수는 1000개라면?
물론 컴퓨터의 힘을 빌려서 결정 트리를 구할수는 있겠지만..모양은 생각만 해도 징그러울 것이다.
가독성도 많이 떨어질 것이다.
즉, 샘플의 사이즈가 크면 효율성 및 가독성이 떨어진다.
원문에서는 결정 트리의 장단점을 이렇게 분류한다.
Advantages of Decision Trees (결정 트리의 장점들)
•Easy to understand. (이해하기 쉬움)
•Map nicely to a set of production rules. (상품 규칙의 집합들을 보여주기 쉽다)
•Applied to real problems. (진정한 문제들을 지원한다)
•Make no prior assumptions about the data. (데이터에 대하여 미리 추정하지 않게 해준다)
•Able to process both numerical and categorical data. (숫자적인, 단정적인 데이터들의 처리를 가능하게 해준다)
Disadvantages of Decision Trees (결정 트리의 단점들)
•Output attribute must be categorical. (출력 속성은 반드시 단정적이다)
•Limited to one output attribute. (제한된 하나의 속성이 출력된다)
•Decision tree algorithms are unstable. (결정 트리의 알고리즘은 불안정하다)
•Trees created from numeric datasets can be complex. (숫자의 데이터셋에서 만들어진 트리들은 복잡해질 수 있다.)
음.. 나의 번역보다는 직접 원문을 읽는 것을 추천한다. 나도 이제 막 개념을 접했을 뿐이라 매끄럽게 번역해 줄 수 없음을 양해 부탁한다.
이로써, 결정 트리의 대략적인 개념을 예시와 함께 알아봤다.
물론 결정 트리를 자동으로 만들어주는 알고리즘, 툴이 있지만 결정 트리의 원리를 알면 이해에 도움이 될 것이다.
레거시 코드 리팩토링은 무엇이며 왜 필요할까 (1) | 2015.12.06 |
---|---|
자바에 메모리가 저장되는 구조와 원리 (0) | 2015.12.06 |
Java String 메소드 정리 (0) | 2015.12.06 |
if문 vs switch문 (0) | 2015.12.06 |
web.xml의 <welcome-file-list> (0) | 2015.12.06 |
댓글 영역