Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Yesterday

Total
05-07 02:26
관리 메뉴

Hey Tech

[Python] 의사결정나무(Decision Tree)의 사용이유, 장단점, 모델평가방법, 변수 중요도 산출방법 본문

AI & 빅데이터/머신러닝·딥러닝

[Python] 의사결정나무(Decision Tree)의 사용이유, 장단점, 모델평가방법, 변수 중요도 산출방법

Tony Park 2021. 9. 16. 14:41
728x90
반응형

📚 목차

1.  의사결정나무란?
2.  의사결정나무의 장단점
3.  의사결정나무 구조 및 용어
4.  의사결정나무의 분리조건
     4.1.  의사결정나무 기반 예측 모델링
         4.1.1.  MSE(Mean Squared Error, 평균 제곱 오차)
         4.1.2.  MAE(Mean Absolute Error, 평균 절대 오차)
     4.2.  의사결정나무 기반 분류 모델링
         4.2.1.  지니 지수(Gini Index)
         4.2.2.  엔트로피 지수(Entropy Index)
5.  의사결정나무 변수별 중요도 계산

1.  의사결정나무란?

의사결정나무(Decision Tree)는 설명변수(X) 간의 관계나 척도에 따라 목표변수(Y)를 예측하거나  분류하는 문제에 활용되는 나무 구조의 모델입니다. 즉, 설명변수의 관측값을 모델에 입력해 목표변수를 분류하거나 예측하는 지도학습 기반의 방법론입니다. 의사결정나무 모델을 사용하는 주된 이유는 다음과 같습니다. 목표변수(Y)를 예측하거나 분류 문제를 해결함에 있어서 어떤 설명변수가 가장 중요한 영향인자인지 확인할 수 있고, 나아가 각 설명변수별로 어떤 척도에 따라 예측 또는 분류했는지 상세한 기준을 알 수 있다는 장점이 있습니다.

2.  의사결정나무의  장단점

의사결정나무의 장단점은 아래 표 1 과 같습니다.

장점 단점
결과 해석 용이 - 직관적인 해석 가능
- 주요 변수와 분리기준 제시
비안정성 - 데이터 수가 적을 경우 특히 불안정
- 과대적합 발생률 높음(가지치기 필요)
비모수적 모델 - 통계모델에 요구되는 가정에 자유로움(e.g., 정규성 독립성, 등분산성) 선형성 미흡 - 전체적인 선형관계 파악 미흡
변수 간 상호작용 - 변수 간의 상호작용을 고려하며 선형/비선형 관계 탐색 가능 비연속성 - 분리 시 연속형 변수를 구간화 처리(비연속화)
- 분리 경계점 근처에 오류 발생 가능

표 1.  의사결정나무의 장단점

3.  의사결정나무 구조 및 용어

그림 1. 의사결정나무 구조 및 용어

위의 그림 1을 참고하여 의사결정나무의 구조 및 용어를 설명하면 아래 표 2와 같습니다.

No 항목 설명
1 루트노드(Root Node) 나무가 시작되는 노드를 의미합니다. 그림 1과 같이 의사결정나무를 시작화했을 떄 루트노드는 맨 위에 위치합니다.
2 자식노드(Child Node) 상위의 노드에서 분리된 하위 노드를 의미합니다.
3 부모노드(Parent Node) 자식 노드의 상위 노드를 의미합니다.
4 중간노드(Internal Node) 나무 중간에 위치한 노드로 루트노드 또는 최하위 노드가 아닌 모든 노드가 행당됩니다.
5 가지(Branch) 하나의 노드로부터 잎사귀 노드까지 연결된 일련의 노드들을 포함합니다.
6 잎사귀 노드(Leaf Node) 또는 끝 노드(Terminal Node) 각 가지 끝에 위치한 노드
7 순수노드(Pure Node) 해당 노드의 목표변수가 동일한 값이나 종류만 가지는 노드를 의미합니다.
8 깊이(Depth) 가지를 이루고 있는 노드의 분리 층수(그림 1의 경우 depth = 3)

표 2.  의사결정나무 구조 및 용어 정리

4.  의사결정나무의 분리기준

설명변수를 어떤 기준으로 분리하는 것이 목표변수의 분포를 가장 구별하는 판단 기준이 있어야겠죠. 의사결정나무의 분리기준은 해결하고자 하는 문제가 예측(i.e., 회귀(regression)), 분류인지에(classification) 따라 다릅니다. 각각 나누어 알아보겠습니다.

4.1.  의사결정나무 기반 예측 모델링

먼저, 의사결정나무 예측값과 실젯값 간의 차이를 최소화하는 방법으로 MSE 또는 MAE를 고려합니다.

4.1.1.  MSE(Mean Squared Error, 평균제곱오차)

Mean Squared Erro(MSE)는 평균 제곱오차라고 부르며 모델 예측값과 실젯값 간의 제곱오차의 평균을 의미합니다. 부모 노드의 평균제곱오차를 가장 많이 감소시키는 설명변수와 분리 값을 기준으로 자식 노드를 생성합니다. 따라서 MSE가 작을수록 오차가 적은 좋은 모델이라고 할 수 있습니다.

4.1.2.  MAE(Mean Absolute Error, 평균절대오차)

Mean Absolute Error(MAE)는 평균 절대오차라고 부르며 모델 예측값과 실젯값 간의 절대오차의 평균을 의미합니다. MSE와 마찬가지로 부모 노드의 평균 절대오차를 가장 많이 감소시키는 설명변수와 분리 값을 기준으로 자식 노드를 생성합니다. 따라서 MAE가 작을수록 오차가 적은 좋은 모델이라고 할 수 있죠.

4.2.  의사결정나무 기반 분류

분류 문제에서 의사결정나무 내 노드의 분리 기준은 크게 지니 지수(Gini Index)와 엔트로피 지수(Entropy Index)를 활용합니다. 그럼 각각에 대해 자세히 알아보겠습니다.

4.2.1.  지니 지수(Gini Index)

지니 지수(Gini Index)란 불순도 측정 지수로서 쉽게 말해 '얼마나 다양한 데이터가 잘 섞여있는지 정도'를 나타냅니다. 반대 개념인 순수도는 같은 클래스의 데이터가 얼마나 포함되었는지를 나타냅니다. 지니 지수의 수식은 다음과 같습니다.

 

$$ G(S) = 1 - \sum_{i =1}^{c}(p_{i})^{2} $$

 

여기서 \(S\)는 전체 데이터 개수이며, \(c\)는 클래스 개수를, \(p_{i}\)는 전체 데이터 중 특정 클래스가 포함되어 있는 확률을 의미합니다.  의사결정나무에서는 지니 지수를 최대치로 낮출 수 있도록 설명변수의 범주를 기준으로 선정하고 자식 노드를 생성합니다. 정리하자면, 지니지수가 낮을수록 순수도는 높은 것이고 분리가 잘 이루어졌다고 평가할 수 있습니다.

4.2.2.  엔트로피 지수(Entropy Index)

엔트로피(Entorpy)는 지니 지수와 비슷한 맥락으로 '데이터가 섞여있는 정도'를 나타냅니다. 아래 그림 2와 같이 파란색 공과 핑크색 공이 있을 때 공 1개를 뽑는 경우를 가정했을 때, 분홍색 공이 등장할 확률에(\(x\)축) 따른 엔트포리 수치의 변화량을(\(y축\)) 그래프로 나타냈습니다. 이러한 그래프를 크로스 엔트로피(Cross Entropy)라고 부릅니다.

그림 2. 엔트로피에 대한 이해

먼저, 확률값이 0인 경우는 분홍 공이 전혀없는, 즉 파란 공만 존재하는 경우로, 분홍 공과 파란 공이 전혀 섞여있지 않기 때문에 엔트로피는 0입니다. 반대로, 확률값이 1인 경우는 분홍 공만 존재하는 경우입니다. 이때도 분홍 공과 파란 공이 전혀 섞여있지 않기 때문에 엔트로피는 0입니다. 이제 분홍 공이 나올 확률이 절반인 점을 살펴시면 공이 가장 잘 섞여 있는 것을 확인할 수 있습니다. 따라서, 이때 엔트로피가 최댓값을 가지겠죠? 정리하자면, 크로스 엔트로피는 직관적인 정의로는 확률변수 \(X\)의 확률값이 0 또는 1일 때 최솟값을 갖고, 확률값이 0.5일 때 최대가 되는 함수입니다. 따라서, 사결정나무는 반응변수가 잘 구분이 될 수 있도록 즉 엔트로피가 낮아지는 방향으로 분리해 주어야 합니다.

5.  의사결정나무 변수별 중요도 계산

의사결정나무 모델에서 변수 중요도(Variable Importance)를 산출함으로써 목표변수를 예측 또는 분류하는 데 있어 어떤 설명변수가 가장 중요한지 상대적으로 알 수 있습니다. 즉, 어떤 변수가 주요 영향인자인지 알 수 있기 때문에 모델링에 있어 변수 선택(Feature Selection)에 유용하게 활용되는 지표입니다. 변수 중요도는 정보이득(Information Gain)을 계산함으로써 산출할 수 있으며 이론적인 관점에서 정보이득에 대해 알아보겠습니다.

정보이득(Information Gain)

정보이득(Information Gain)은 데이터를 분리할 때 특정 노드 이전과 이후에 엔트로피 차이를 측정하는 척도입니다. 즉, 아래와 같이 나타낼 수 있죠.

 

$$ Information Gain = Entropy_{before} - Entropy_{after} $$

 

위 수식에 따라, Information Gain이 높다는 것은 엔트로피를 많이 낮아지게 만든다는 것을 의미합니다. 앞서 의사결정나무 모델은 엔트로피를 최소화하는 방향으로 데이터를 분리한다고 말씀드렸습니다. 즉, Information Gain이 높은 변수는 데이터 분리에 있어서 중요한 변수라는 것을 의미합니다. 따라서 Information Gain을 계산함으로써 변수 중요도를 산출할 수 있는 것입니다.

📚 참고할 만한 포스팅

1.  의사결정나무(Decision Tree)의 사용이유, 장단점, 모델평가방법, 변수 중요도 산출방법에 대해 알아보자!
2.  랜덤포레스트(Random Forest)의 정의, 장단점, 모델 최적화 방법(+파이썬 실습)
3.  파이썬 기반 Binary Classfication 모델링 코드 공유!(feat. Wine Quality Dataset)


Last Updated @2021. 09. 16

 

오늘은 의사결정나무의 전반적인 개념에 대해 살펴봤습니다.

다음 포스팅에서는 파이썬을 활용해 의사결정나무 모델을 구현하는 방법에 대해 알아보겠습니다.

포스팅 내용에 오류가 있을 경우 아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다.

그럼 오늘도 즐거운 하루 보내시길 바랍니다.

고맙습니다 :)

728x90
반응형
Comments