본문 바로가기
머신러닝

머신러닝 Decision Tree 핵심 개념(Entropy, Information Gain)

by 데싸루나 2023. 2. 24.

머신러닝 모델은 수학과 통계에 기반을 두고 있습니다. 이번 포스팅에서는 Classification Tree 또는 Decision Tree가 어떤 수학에 기초하여 트리를 만들어 예측을 수행하는지 꼼꼼하게 알아보도록 하겠습니다. 핵심 개념인 엔트로피(Entropy)와 인포메이션게인(Information Gain)이 어떻게 계산되는지 살펴보겠습니다.

 

classification tree-Decision tree-entropy-information-gain
classification tree-Decision tree-entropy-information-gain

 

Classification Tree(Decision Tree)가 트리를 그리는 과정

이해를 돕기 위해 데이터를 보면서 이 데이터에 대해 Decision Tree가 어떻게 트리를 그려나가는지 살펴보겠습니다. 

아래 데이터는 특정 사람이 날씨와 어제 바빴는지 여부와 그리고 오늘 조깅을 했는지 여부를 기록한 데이터로, WEATHER, Busy_YESTERDAY, Jog today(target variable)의 세 가지 속성을 가지고 있고 총 14개의 instance가 있습니다. 이 데이터를 활용하여 오늘 이 사람이 조깅을 할 것인지 여부를 예측하는 Classification Tree(Decision Tree, 의사결정트리)를 만들어 보고자 합니다.

 

data
data
data
data

Classification Tree(Decision Tree, 의사결정트리)가 Root node(루트노드)를 구하는 방법

Classification Tree(Decision Tree, 의사결정트리)는 먼저 각 속성별로 노드가 되었을 때 split 하기 전 엔트로피와 split 하고난 후의 엔트로피를 모두 구해봅니다. 그 후 Information Gain을 구해서 Information Gain이 큰 순서대로 노드를 상단에 위치시키고 같은 기준으로 트리를 아래로 계속 그려나갑니다.

 

여기서 엔트로피(Entropy)불순도를 뜻하며, 섞여있을 수록 큰 값, 섞여있지 않을수록 작은 값을 가집니다. log공식을 사용하는데 아래 그림의 상세 계산 과정을 참고하시면 됩니다.

 

인포메이션게인(Information Gain)부모노드의 엔트로피에서 자식노드의 엔트로피를 뺀 값인데, 한마디로 이 노드를 통해 데이터의 불순도를 얼마나 낮춰줬는지를 보는 지표입니다. 

 

아래는 Weather노드의 엔트로피(Entropy), 인포메이션 게인(Information Gain)을 구하는 과정입니다. Weather노드는 세 가지 속성이 있기 때문에 세 개의 가지를 칩니다. 그리고 split 하기 전 엔트로피는 아직 전혀 split이 되지 않은 상태이기 때문에 전체데이터의 엔트로피와 같습니다.

만약 Weather가 Cold일 때는 위에 데이터를 참고하면 조깅을 한날이 두번, 조깅을 하지 않은 날이 세 번 있습니다. 그렇기 때문에 Cold 가지를 타고 내려온 노드는 2개의 Positive, 3개의 negative가 섞여있는 엔트로피를 가집니다.

반면 Weather가 Raining의 경우 위에 데이터를 보면 Jog Today가 모두 'No'인 것을 알 수 있습니다. 그렇기 때문에 여기서 after split 엔트로피는 0이 됩니다.

이런 식으로 split 하기 전 엔트로피와 split 한 후 엔트로피를 각각 모두 구한 다음에 Information Gain을 구합니다. 여기서 자식 노드는 3개가 있으니 Weighted average를 이용합니다. 아래 그림에서 Weighted entropy after split부분을 보시면 됩니다. 

how-to-calculate-entropy-information-gain
how-to-calculate-entropy-information-gain

 

그다음 Busy_Yesterday 속성도 노드로 두고 split하기전 엔트로피와 split 한 후 엔트로피를 구한 다음 Information Gain을 구해봅니다. 

how-to-calculate-entropy-information-gain
how-to-calculate-entropy-information-gain

 

위에 두가지 경우를 비교했을 때, Busy_Yesterday를 루트노드로 두었을 때 Information Gain이 더 큰 값을 가지는 것을 알 수 있습니다. 따라서 Classification Tree(Decision Tree, 의사결정트리)는 이 노드를 루트노드로 설정합니다. 

how-to-calculate-entropy-information-gain
how-to-calculate-entropy-information-gain
how-to-calculate-entropy-information-gain
how-to-calculate-entropy-information-gain

그런다음 그 밑에 노드를 두기 위해서 또 루트노드가 아닌 Weather 노드를 뒀을 때 split 전후 엔트로피와 Information Gain을 계산해 봅니다. Classification Tree는 아래중 하나에 해당하면 가지치기를 중단합니다. 이 예제의 경우 아래 3번에 해당하는 기준치들은 설정하지 않았기 때문에 1번이나 2번 중에 해당이 되면 가지치기를 멈추고 트리를 완성시킵니다. 위에서 인포메이션게인은 양수의 값이 나왔지만 이제 2번 조건인 모든 속성이 하나 이상의 노드에 사용되었기 때문에 가지는 여기까지 치고 더 이상 가지를 치지 않습니다. 

 

<Classification Tree가 트리 생성을 중단하는 조건> 

1. Information Gain이 더이상 양수를 가지지 않음(불순도를 더 이상 낮춰주지 않음)

2. 모든 속성이 하나이상의 노드에 사용되었음

3. maximum depth나, minimum number of instance 기준치에 도달하였음

 

여기서 한가지 주의해야 할 점은, Busy_Yesterday가 y인 경우는 Weather가 무엇인지에 상관없이 결국에는 모두 Jog_Today를 No로 예측하는 모델이 만들어졌음을 확인할 수 있습니다. 하지만 Weather 조건에 따라 class 예측값은 모두 같을지라도, Probability 예측값은 리프노드마다 모두 다르기 때문에 여전히 두 번째 가지를 유지해야 합니다. 

 

이렇게 Classification Tree(Decision Tree, 의사결정트리)가 어떻게 Entropy(엔트로피)와 Information Gain(인포메이션 게인)을 계산하고 트리를 어떤 방식으로 그려나가는지, 언제 트리 생성을 중단하는지 간단한 데이터 예시를 들어 step by step 살펴보았습니다.

 

머신러닝은 이렇게 기본 원리를 이해하는 게 코딩을 배우는 것보다 훨씬 중요합니다. 코딩의 경우에는 사이킷런(Scikit-learn) 라이브러리 등을 이용하면 너무나도 간편하게 머신러닝 모델을 만들 수 있기 때문입니다. 그렇기 때문에 코딩에 능하다고 해서 머신러닝의 원리를 잘이해할 수 있는 것은 아닙니다. 이번 포스팅이 Classification Tree(Decision Tree, 의사결정트리)가 작동하는 원리에 대해 이해를 돕는데 도움이 되셨길 바랍니다. 

 

<참고하면 좋을 포스팅>

 

 

머신러닝 Decision Tree 핵심 개념 (데이터 사이언티스트 면접 질문)

이번 포스팅에서는 머신러닝 Classification 모델 중 Decision Tree(의사결정트리)와 관련된 데이터사이언티스트 단골 면접(인터뷰) 질문 및 꼭 알고 넘어가야 하는 핵심 개념들에 대해 정리해 보겠습니

datasciencediary.tistory.com

 

 

불균형 데이터(Imbalanced Data) 머신러닝 Classification 문제점 해결방법

머신러닝 Classification을 할 때 흔히 접하는 문제는 데이터가 불균형하게 형성되어 있는 것입니다. 우리가 관심가지는 데이터를 현실적으로 충분하게 얻을 수 없을 때 발생합니다. 불균형 데이터(

datasciencediary.tistory.com

 

 

Classification Decision Tree (결정트리) 개념 - Information gain, impurity, Entropy 이해

Decision Tree(결정트리)는 Classification을 하기 위해 트리를 그려 마지막 leaf node에서 class가 구분되도록 하는 모델이다. Classification이 어떤 방식에 의해 결정이 됐는지 확인하기가 직관적이고 시각화

datasciencediary.tistory.com

 

댓글