공부일기/Machine-Learning

결정 트리(Decision Tree)

pipiiiiii 2024. 7. 12. 19:10

 

결정 트리란

의사 결정 트리, 의사 결정 나무라고도한다. 

결정 트리는 분류와 회귀 모두 가능한 지도 학습 모델 중 하나이다. 

결정 트리 학습법은 지도 분류 학습에서 가장 유용하게 사용되고 있는 기법 중 하나다.  

결정 트리는 예 / 아니오 질문을 이어가며 학습하는데 특정 기준(질문)에 따라 데이터를 구분하는 모델을 결정 트리 모델이라고 한다. 

입력 데이터에 따라 목표 변수의 값을 예측하는 실행 모델을 만들기 위해 사용한다. 

어떤 기준으로 규칙을 만들어야 가장 효율적인 분류가 될 것인가가 알고리즘의 성능을 크게 좌우한다. 그러나 규칙이 많다는 것은 예측을 위한 학습이 잘된다고 말할 수 있음과 동시에 복잡하다는 의미이며 이는 과적합으로 이어질 수 있다. 

즉, 트리의 깊이가 깊어질수록 예측 성능이 저하될 가능성이 높기 때문에 적절한 값을 찾아야 하며 가장 적은 노드로 높은 예측을 가지려면 균일하게 나눠야 한다.  

 

 

결정 트리 구조 및 용어 

 

 

결정 트리의 장 / 단점

장점

  • 결과를 해석하고 이해하기 쉽다.
  • 자료를 가공할 필요가 거의 없다. 
  • 수치 자료와 범주 자료 모두 적용할 수 있다.  
  • 화이트 박스 테스팅(내부 동작을 관측할 수는 있지만 변경은 불가능한 테스트)을 사용할 수 있다. 
  • 안정적이다. 
  • 대용량 데이터로 수행이 가능하다

단점 

  • 결정 트리 학습자가 훈련 데이터를 제대로 일반화하지 못할 경우 너무 복잡한 결정 트리를 만들 수 있다.(이를 과적합 문제라고 한다.)
  • 결정 트리로는 배타적 논리합이나 패리티, 멀티플렉스와 같은 문제를 학습하기 어렵다. 이런 문제를 학습하기 위해서는 결정 트리가 엄청나게 커진다. 
  • 각각 서로 다른 수의 단계로 분류가 가능한 변수를 포함하는 데이터에 대하여 더 많은 단계를 가지는 속성 쪽으로 정보 획득량이 편향되는 문제가 있다. 
  • 데이터의 특성이 특정 변수에 수직 / 수평적으로 구분되지 못할 때 분류율이 떨어지고, 트리가 복잡해지는 문제가 발생한다. 
  • 약간의 차이에 따라 트리의 모양이 많이 달리질 수 있다.  

 

 

결정 트리 학습 방법

결정 트리 모델은 불순도< 불순도란? 데이터가 얼마나 잘 분류되어 있는지를 의미한다. >를 낮추는 방향으로 학습해야 한다. 

 

그렇다면 불순도는 어떻게 낮출까? 

바로 불순도를 측정하는 지표인 지니불순도(Gini impurity)와 엔트로피(Entropy)를 사용한다. 

두 지표 모두 불순도를 측정하는 지표라는 점에가 같지만 계산하는 공식과 특징이 다르다. 

  • 지니불순도 (Gini impurity)
    • 각 노드의 순도를 측정하는 지표로 한 노드에 있는 데이터들이 얼마나 불순한지를 판단한다.
    • 값이 '0'에 가까울수록 순수하며, '1'에 가까울수록 불순하다.
      • 예를 들어 세 개의 데이터 포인트가 있는 노드가 있다고 가정해보자 
      • 1번 노드에는 빨간공만 있다. 이 노드는 매우 순수하다고 판단되며, 지니불순도는 0이다. 
      • 2번 노드에는 두 개의 빨간공과 한 개의 파란공이 있다. 이 노드는 약간 혼합되어 있다고 판단되며, 지니불순도는 0.44다.
      • 3번 노드에는 빨간공, 파란공, 초록공이 한 개씩 있다. 이 노드는 매우 불순하다고 판단되며, 지니불순도는 0.67이다. 
    • 결정 트리는 지니불순도가 가장 낮아지는 방향으로 데이터를 분할하여, 각 노드가 최대한 순수해지도록 한다.
  • 엔트로피 (Entropy)
    • 엔트로피 불순도도 지니불순도와 같이 크기가 커질수록 불순도가 크다는 것을 의미한다.
    • 지니불순도와의 차이점은 로그 계산이 포함되어있어 연산이 더 무겁고 느리다는 점이다. 
    • 값이 '0'에 가까울수록 순수하며, '1'에 가까울수록 불순하다.
      • 예를 들어 두 개의 클래스 A와 B가 각각 50% 포함된 노드가 있다고 가정해 계산을 해보면 
        [ H = - (0.5 \log_2(0.5) + 0.5 \log_2(0.5)) = - (0.5 \times -1 + 0.5 \times -1) = 1 ]로 두 클래스가 균등하게 섞여있기 때문에 엔트로피는 최대값이 '1'이 되어 불순하다는 것을 나타낸다. 
      • 반면 두 개의 클래스에 A가 100%, B가 0% 포함된 노드를 계산하면 [ H = - (1 \log_2(1) + 0 \log_2(0)) = 0 ]로 엔트로피가 '0'이 되어 순수하다는 나타낸다. 
    • 결정 트리는 엔트로피가 가장 낮아지는 방향으로 데이터를 분할하여, 각 노드가 최대한 순수해지도록 한다.  

 

 

결정 트리 평가 방법

MSE(Mean Squared Error, 평균 제곱오차)와 MAE(Mean Absolut Error, 평균 절대오차)가 있다. 

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

 

결정 트리 변수 별 중요도 계산

의사결정나무 모델에서 변수 중요도를 산출하는 것으로 목표 변수를 예측 또는 분류하는데 어떤 설명 변수가 가장 중요한지 상대적으로 알 수 잇다. 즉, 어떤 변수가 주요 영향인자인지 알 수 있기 때문에 모델링에 있어 변수 선택에 유용하게 활용되는 지표다. 

 

변수 중요도는 정보이득을 계산함으로써 산출할 수 있어 이론적인 관점에서 정보이득에 대해 알아보려고 한다.

정보이득은 데이터를 분리할 때 특정 노드 이전과이후에 엔트로피 차이를 측정하는 척도로 수식은 아래와 같다.    

 

위 수식은 Information Gain이 높다는 것은 엔트로피를 많이 낮아지게 만든다는 것을 의미한다. 

의사결정나무 모델은 엔트로피를 최소화하는 방향으로 데이터를 분리하기 때문에 Information Gain을 계산함으로써 변수 중요도를 산출할 수 있다. 

 

 

결정 트리 코드 공부 

https://github.com/DIB-PP/Machine-Learning

 

GitHub - DIB-PP/Machine-Learning

Contribute to DIB-PP/Machine-Learning development by creating an account on GitHub.

github.com

 

 

 

 

 

 

 

 

참고 사이트