오답노트

[ML] 의사결정 트리 (Decision Tree) 본문

Python/ML

[ML] 의사결정 트리 (Decision Tree)

권멋져 2022. 8. 24. 13:31

Decision Tree

분석과정을 실제로 눈으로 확인 가능한 알고리즘이다.

계산 비용이 낮아 대규모의 데이터도 빠르게 연산 가능한 장점이 있다.

 

지니 불순도

분류 후 얼마나 분류가 잘 됐는지 평가하는 지표다.

불순도가 낮을 수록 분류가 잘됐다고 판단한다.

 

어떤 집단에서 A를 가지는 집단과 B를 가지는 집단 둘로 나눴을 때,

각각의 집단에서 또 다시 True, False를 나눌 수 있다.

 

이 때, 집단 A의 불순도는 1-((A|T)^2 + (A|F)^2) 이고,

집단 B의 불순도는 1-((B|T)^2 + (B|F)^2) 이다.

 

수식으로 표현하면 아래와 같다.

p 는 집단에서 어떤 사건이 일어날 확률이다.

예를 들어 A|T는 A 집단에서 True가 발생할 확률이다.

 

정보 증가량

지니 불순도는 어떤 집단(부모)에서 A 또는 B를 가지는 집단(자식)으로 나눴을 때

A 또는 B를 가지는 집단(자식)의 불순도를 계산했다.

 

정보 증가량은 부모의 불순도에서 자식의 불순도를 뺀 것이다.

 

정보 증가량이 클 수록 분류가 잘됐다고 판단한다.

 

모델링 과정

1. root node(부모)에서 불순도가 가장 낮은 변수로 자식 node를 나눈다

2. 분리된 자식 node에서 또 또 다시 불순도가 가장 낮은 변수로 분리한다.

3. 2번을 반복하여 leaf node(target의 값)을 분리한다.

 

트리의 크기에 따라 예측 결과(정확도)가 달라진다.