Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[머신러닝] Decision Tree 본문

연구 Research/인공지능 Artificial Intelligent

[머신러닝] Decision Tree

보통의공대생 2021. 5. 25. 22:11

번역하면 의사결정 나무라고 하는데,

classification과 regression에 둘 다 쓰일 수 있는 머신러닝 방법입니다.

 

class1과 class2를 분류하기 위한 decision tree

 

 

decision tree는 feature에 대한 조건을 통해 가지를 치면서 학습하는 방법입니다. numerical, categorical variable 둘 다 쓸 수 있고 분석 과정이 직관적이라는 점 때문에 많이 쓰이고 있습니다. (나중에 쓸 random forest가 decision tree를 더 발전시킨 형태)

 

이 decision tree는 불순도(impurity, 범주들이 섞여있는 정도)를 최소화하는 방향으로 진행되어야 합니다.

우리가 decision tree를 사용할 때 

이 불순도를 판단하기 위한 척도로서, 

 

1) Gini index, 2) Entropy index가 사용됩니다. 사이킷런에서 decision tree를 사용해보신 분들이라면 decision tree 설정 중에 gini index를 쓸 것인지, entropy index를 쓸 것인지 결정할 수 있음을 아실 겁니다.

 

$\text{Gini Index }=1-\sum_{i}^{n}(p_{i})^{2}$

여기서 $p_{i}$는 node에 존재하는 각 class의 비율을 의미합니다. (총 class의 개수는 n개)

 

위 decision tree 그림에서 leaf node로 표시한 node의 경우 gini index를 구해보면

$1-\( \frac{1}{30} \)^{2}-\( \frac{29}{30}\)^{2}=0.064$로 매우 낮은 값이 나옵니다. 즉 매우 불순도가 낮습니다.

 

반면에 마지막 depth의 왼쪽에서 두 번째 노드를 보면

$1-\( \frac{5}{10}\)^{2}-\( \frac{5}{10}\)^{2}=0.5$로 위의 0.064에 비하면 아주 큰 값이고, 불순도가 위 노드에 비해 높다고 볼 수 있습니다.

 

이 불순도를 기준으로 불순도가 충분히 낮아질 때까지 decision tree를 만들도록 기준을 세울 수도 있습니다.

 

$\text{Entropy index }=-\sum_{i=1}^{n} p_{i}\log_{2}(p_{i})$

이 지표 역시 불순도를 나타내는 지표입니다.

 

 


Decision tree의 과적합을 막기 위한 여러 기법들이 있는데 나중에 보충하도록 하겠습니다.

Comments