본문 바로가기
데이터 분석

의사결정나무(Decision Tree) 종류 및 학습 - 장단점

by Data Lib 2023. 9. 19.

 
이전 포스팅에서 의사결정나무의 특징 및 동작 원리에 대해서 알아보았다면, 이번 포스팅에서는 어떤 종류가 있고 학습은 어떻게 하는지 알아보겠습니다. 마지막에는 Decision Tree 알고리즘의 장단점에 대해 살펴 보겠습니다. 
 

 

의사결정나무 모델 종류

Decision Tree는 흔히 재귀적 분할 알고리즘이라고 합니다. 재귀적이라는 말은 자기자신을 사용한다는 의미입니다. 우선 자신의 하나의 노드 내에서 하나의 변수 값을 기준으로 분기합니다.

 

그리고 새롭게 생성된 자식 노드들의 동질성이 최대화되도록 분기점 선택하는 원리입니다. 여기서 동질성이 불순도와 같은 개념입니다. 이전 불순도 알고리즘에서 배웠던 것처럼 불순도를 최소화하는 일을 합니다. Decision Tree 불순도 알고리즘에 대한 내용은 링크를 참고하세요.

 

 


일반적으로 의사결정나무의 종류는 아래 세가지가 많이 언급됩니다. 표를 보시면 상대적인 비교를 확실히 알 수 있습니다. 

  • CART(Classification and Regression Detection) : 지니 지수 사용, 이지분리, 회귀/분류
  • C4.5, C5.0 : 엔트로피 지수 사용, 다지분리, 회귀/분류
  • CHAID(Chi-square Automatic Interaction Detection) : 카이제곱 통계량 사용, 다지분리, 분류만

 

Decision Tree 모델 종류
Decision Tree 모델 종류

C4.5

C4.5 모델의 특징은 Information gain ratio로 분기합니다. 그런데 information gain 의 한계점이 있습니다. 데이터를 잘게 분해할 수록 더 높은 수치가 나오게 됩니다. 이렇게 잘게 분해하는 것이 좋은 분류라고 말하기는 어렵습니다. 따라서 C4.5에서는 information gain을 수정한 information gain ratio 를 사용게 됩니다. 

CART

CART 모델은 지니 지수를 사용하는 것이 특징입니다. 분류 모델에서는 cost function 을 gini index로 두고 계산합니다. 불순도를 gini index로 계산한다는 의미입니다. 회귀 모델에서는 cost function을 MSE로 계산합니다. 우리가 자주 사용하는 
scikit learn DecisionTreeClassifier는 CART 기반으로 구현되어 있습니다. 예측변수가 범주형, 연속형 모두 활용 가능합니다. binary tree 방식으로 여러개의 자식 노드가 아니라 단 두개의 노드로 분기를 합니다. 그래서 '이지분리'라고 합니다. 
 

CHAID

CHAID는 원래 변수들 간의 통계적 관계를 찾는 것이 목적이었습니다. 하지만 CHAID 모델은 예측변수가 범주형일 때만 가능하다는 한계가 있습니다. CART와 다르게 데이터를 Overfitting(과적합) 되기 전에 Tree 형성을 멈춘다는 장점이 있기도 합니다. 또 한가지는 C4.5, CART는 가지치기로 완전 모형을 개발한다면 CHAID는 최적 모형 개발을 위해 만족할 때까지 과정을 반복합니다.  
 

복잡도 제어하기 : 가지치기(Pruning)

Decision Tree에서 모델 복잡도 제어는 가지치기(Pruning)를 이용합니다. 모든 리프노드를 순수 노드가 될 때가지 진행하면 과대적합이 되기 때문에 생성된 Tree를 자르는 과정(일반화)이 필요합니다. 

  • 많이 세분화하면 복잡도가 올라가고 Overfitting(Tree 깊을수록)
  • 적게 세분화하면 복잡도가 낮아지고 Underfitting(Tree 낮을수록)

주위해할 것은 가지치기(Pruning) 과정은 데이터를 버리는 개념이 아니고 분기를 합치는(merge) 개념입니다. 

  • 사전 가지치기 : 트리 생성을 일찍 중단하는 전략, 하이퍼파라미터를 수동으로 설정합니다. 
  • 사후 가지치기 또는 가지치기 : 트리를 만든 후(모두 성장시킨 후) 데이터 포인트가 적은 노드를 삭제 또는 병합 전략

가지치기 방법은 카이제곱검정으로 p-값 >  0.05(통상적인 임의값)이면 불필요한 것으로 간주하고 자식노드 삭제 합니다. 
이과정을 통해 필요한 노드를 모두 없어질 때까지 계속합니다. Scikit-learn은 사전 가지치기만 지원합니다. 최대 깊이,  최대 리프노드수, 리프노드가 가질 최소 샘플수 중 하나 설정할 수 있습니다. (max_depth, max_leaf_nodes, min_samples_leaf)

 

모델 학습(최적화)

분류 모델의 경우는 첫째, 각 노드에서 분기하기 위한 최적의 질문은 정보이득이라는 값이 최대가 되도록 만들어주는 것이 핵심입니다. 둘째, 불순도를 최소화 하는 방향으로 분할합니다. 회귀 모델은 불순도를 최소화 하는 방향으로 분할하는 대신 평균제곱오차(MSE)를 최조화하도록 분할합니다. 
 

장점

  • Decision Tree 모델을 쉽게 시각화할 수 있어 비전문가도 이해와 해석이 쉽습니다. graphviz 모듈로 Tree로 그릴 수 있습니다.
  • 데이터를 분할할 때 스케일의 양향을 받지 않으므로 Feature의 정규화나 표준화 같은 전처리 과정이 필요 없습니다.(정규화, 결측치, 이상치)
  • 수치형과 범주형 데이터 모두 다룰수 있습니다.
  • 중요한 변수를 자동으로 선택해주는 효과가 있습니다. 불순도가 가장없게하는 피쳐부터 선택하여 feature selection 하게 됩니다.
  • 이상치에 덜 민감합니다. 가지치기, 분류하는 개념이기 때문입니다. 
    모델 가정이 필요 없습니다.(선형성, 등분산성 등), 비모수적 모형이기 때문입니다. 

단점

  • 트리 모델은 훈련 데이터 밖의 새로운 데이터를 예측할 능력이 없습니다. 모든 트리 기반 모델의 공통적인 단점입니다. 이런 이유로 회귀보다는 결정트리에서는 분류를 많이 사용합니다. 
  • 높은 변동성, 샘플에 민감할 수 있습니다.(비 안정성)
  • 사전 가지치기를 사용함에도 불구하고 과대적합되는 경향이 있어 일반화에 좋지 않습니다. 이 단점을 보완하기 위해 앙상불 기법 사용합니다.
  • 시계열 분석은 어렵습니다.
  • 비사각영역에서 예측 문제가 있습니다. 계단 모댱의 결정 경계를 만들기 때문에 훈련세트의 회전에 민감 합니다. 선형 예측 데이터 어렵습니다. 


적용 분야

Decision Tree 모델의 적용 분야는 은행대출에서 도산업체를 분류하는데 사용됩니다. 또 카드발급대상에서 신용불량자 분류해 내기도 합니다. 의료에서 병 진단에 활용하기도 합니다. 특히 설명이 중요한 업무에서 사용됩니다. 통신 업계에서는  이탈고객(해지자 또는 번호이동) 분류하는데 사용됩니다.

Decision Tree 모델은 최신 알고리즘인 랭덤 포레스트, Boosting 모델의  기반이 되는 모델이라는 점에서 모델에 대한 원리와 특징을 알아 놓아야 합니다.