본문 바로가기
AI_basic/ML

[ML] 지도학습/분류 결정트리 Decision Tree

by hits_gold 2021. 7. 13.
반응형

1. 결정 트리란(Decision Tree)?

    결정 트리란 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 Tree기반의 "분류 규칙"을 만들고, 이 규칙을 통해 최대한 균일도가 높은(과적합 고려) 결정 클래스를 만드는 분류기법입니다. 

 

2. 결정 트리의 구조

       (1) 규칙 노드(Decision Node) : 규칙 조건을 표시한 노드입니다.

       (2) 리프 노드(Leaf Node) : 결정된 클래스 값을 표시한 노드입니다.

 

3. 균일도란?

     균일도란 한 데이터 세트 내의 데이터들이 같은 성향을 나타내는 정도입니다.

   예를 들어 위와 같은 데이터 세트가 있다면, C가 제일 균일도가 높은 데이터 세트일 것입니다. 트리를 분할할 때 최대한 균일한 데이터 세트를 구성할 수 있도록 분할하는 것이 필요합니다.

 

4. 결정 트리 모델의 특징

    장점 :  "균일도"라는 룰을 기반으로 하고 있어 알고리즘이 쉽고 직관적이다.

              피처의 스케일링이나 정규화 등의 사전 가공 영향도가 크지 않다.

 

    단점 : 균일도를 최대화하기 위해 서브 트리를 계속 만들다 보면 트리의 깊이가 커지고

             복잡해지면서 Overfitting이 발생해 알고리즘의 성능이 떨어질 수 있다. 이를

             극복하기 위해 사전 튜닝이 필요하다.

 

5. 결정 트리 파라미터

     사이킷런은 결정 트리 알고리즘을 구현한 DecisionTreeClassifier 클래스를 제공합니다. 본 클래

     스의 파라미터는 다음과 같습니다.

        (1) min_samples_split

                 - 노드를 분할하기 위한 최소한의 샘플 데이터 수

                 - 디폴트는 2, 값을 작게 설정할수록 노드가 많아져 과적학 가능성 증가

 

        (2) min_sample_leaf

                 - Leaf Node가 되기 위한 최소한의 샘플 데이터 수

                 - min_samples_split과 유사하게 과적합 제어 용도이나 imbalanced 데이터의 경우

                   특정  클래스의 데이터가 극도로 작을 수 있어 이 경우 작게 설정할 필요가 있다.

 

         (3) max_features

                  - 최적 분할을 위해 고려할 최대 피처 개수. 디폴트는 None -> 모든 피처로 분할 수행

                  - int형으로 지정 -> 대상 피처의 개수, float형으로 지정 -> 대상 피처의 비율

                  - "sqrt" = "auto" 전체 피처 개수의 제곱근 수만큼 피처 선정

                  - "log"는 log2(전체 피처 개수)만큼 선정

 

         (4) max_depth

                  - 트리의 최대 깊이 규정

                  - 디폴트는 None으로 완벽하게 클래스 결정이 될 때까지 깊이를 계속 키우며 분할

                  - 깊이가 깊어지면 과적합 가능성 증가로 적절한 값으로 제어 필요

 

         (5) max_leaf_nodes

                  - 말단 노드(Leaf)의 최대 개수

 

6. 결정 트리 모델 실습(타이타닉 예제)

 (1) 전처리

   위와 같이 간단히 전처리를 해주었습니다.

 

(2) 필요 모듈 import & 데이터 분할

(3) 학습 및 예측 -> 성능 지표 확인

  정확도는 대략 79%로 측정되었습니다.

 (4) GridSearchCV를 사용한 최적 하이퍼 파라미터 값 찾기

설정한 값 중 max_depth는 12, min_split_samples_split은 16개가 최적 파라미터 값인 것으로 나왔고, 이때 정확도는 약 83프로로 튜닝을 하기 전보다 향상되었습니다.

 -> 하이퍼 파라미터 튜닝과 GridSearchCV의 사용법에 대해서는 따로 글을 올리겠습니다.

 

 

 

 

#본 글은 위키북스의 "파이썬 머신러닝 완벽 가이드"를 베이스로 저의 학습을 정리한 글로,

 제가 어떻게 이해했느냐에 따라 책의 내용과 달라질 수 있습니다.

반응형