여러가지공부/머신러닝(Machine Learning)

[Classification] Decision Tree 예제 설명 #2 (노드 순서 정하기)

끄적끄적아무거나 2023. 5. 4. 09:13
반응형

 

목차

     

     

     

    앞 시간 포스트(https://scribblinganything.tistory.com/709)에 이어서 이번에는 나이(Numeric value)에 대한 지니 불순도(Gini Impurity)를 계산해보겠습니다. 

     

    Decision Tree : Gini Impurity 예제로 알아보기

     

    테이블1

     

    나이의 지니 불순도(Gini Impurity)를 구하기 위해 나이순으로 테이블을 정렬합니다. 위 테이블과 같이 7에서 83으로 작은 수에서 큰수로 정렬합니다.

     

     

    테이블2

    다음으로 위와 같이 나이들의 평균 값을 구해줍니다. 

     

     

     

     

     

    그림1

     

    다음으로 그림1과 같이 평균을 경계로 수식1을 적용해서 지니 불순도(Gini Impurity)를 구합니다. 

     

    수식1

     

     

    "나이<9.5"의 True 결과의 지니 불순도는 1-(0/1)^2 - (1/1)^2 = 0이 됩니다. 동일 방식으로 계산하면 False는 0.5가 됩니다.

     

    Weight를 포함한 "나이<9.5"의 전체 지니 불순도(Total Gini Impurity)는 아래와 같이 계산 됩니다. 

     

     

     

     

     

    위와 같은 방식으로 나머지 나이 평균에 대한 지니 불순도를 구하면 아래와 같이 계산 됩니다. 

     

     

     

    여기서 지니 불순도가 가장 낮은 값은 0.343으로 2개 있습니다. 이 중에 "나이 < 15" 를 노드(Node) 값으로 사용하겠습니다. 

     

     

     

     

    Decision Tree  노드 순서 결정하기

     

     

     

    앞서 포스트(https://scribblinganything.tistory.com/709)에서 구한 채소와 피자에 이제 나이에 대한 지니 불순도를 구했습니다.

     

    그림2

     

    • 채소 지니불순도 = 0.405
    • 피자 지니불순도 = 0.214
    • 나이<15 지니불순도 = 0.343

     

     

    이제 Root Node를 정해야 할 시 간입니다. Root Node와 아래 트리 구성은 지니 불순도가 낮은 값 부터 배치 합니다. 이유는 지니 불순도가 낮아야 명확하게 결과를 구분하는 경계이기 때문입니다. 여기서는 피자가 지니불순도가 가장 낮으므로 Root Node에 배치 합니다. 

     

     

     

     

    그림3

     

     

    다음은 그림3과 같이 Root Node 다음 True에 해당하는 Internal Node를 찾아보겠습니다. 테이블의 값은 이제 4개가 남았고 여기에 대해 지니불순도를 구하면 됩니다. 

     

     

     

    그림4

     

    그림4와 같이 다음 단계 노드를 채소와 나이<12.5에서 지니불순도를 통해 계산합니다. 방법은 앞서 진행했던 방식으로 처리 합니다. 

     

     

    • 채소 지니불순도 = 0.25
    • 나이<12.5 지니불순도 = 0

     

     

     

    그림5

     

    그림5와 같이 나이<12.5가 지니 불순도가 낮아서 Internal Node로 결정하고 더 이상 분류 할 필요가 없으므로 나머지는 Leaf Node로 결정이 됩니다. 

     

    Leaf Node는 가장 많은 값을 가지는 카테고리로 분류하면 됩니다. 

     

     

     

     

     

     

     

     

    Decision Tree  특징, 장단점

     

    • 데이터셋이 작을 경우 Impurity가 적은 트리를 만들고 이는 Overfitting의 가능성이 있음
    • Overfitting 문제는 Prune(가지치기) 방식으로 해결(다음 포스트 참조)
    • 최종 Leaf에 Impurity가 있어도 문턱값(Threshold)를 정하고 해당 값을 기준으로 Leaf Node 결정
    • 하나의 Decision Tree가 최적화인지 알 수 없으므로 Cross Validation으로 최적의 모델을 선정함

     

    과적합(Overfitting) 설명 포스트 : https://scribblinganything.tistory.com/698

    CV(Cross Validation) 설명 포스트 : https://scribblinganything.tistory.com/699

     

     

    반응형