[ML] Feature Importances for Decision Tree

2024. 11. 10. 13:04·Programming/ML
728x90
728x90

이 문서는 Feature Importance를  Decision Tree에서 Gini Impurity Measure를 이용하여 계산하는 예제를 보여줌.


Tree 예시 (depth = 3)

        [Root]
         (X1)
         [5:5]
       /       \
    Node1       Node2
    (X2)        (X3)
    [4:1]       [1:4]
   /    \      /    \
Leaf1  Leaf2 Leaf3  Leaf4
[3:0]  [1:1] [0:2]  [1:2]
  • Root 노드는 X1을 사용해 데이터를 분할.
  • Node1은 X2를 사용해 데이터를 다시 분할.
  • Node2는 X3을 사용해 데이터를 다시 분할.

단계 1: Gini impurity measure 계산

Gini impurity는 다음과 같이 계산:

$$
\text{Gini} = 1 - \sum (p_i^2)
$$

1-1. 초기 상태 (Root 노드):

  • 클래스 0: 5개 샘플
  • 클래스 1: 5개 샘플

지니 불순도 (Root):

$$1 - (0.5^2 + 0.5^2) = 0.5$$


단계 2: 각 노드에서의 분할 후 Gini impurity계산 및 중요도 평가

2-1. Root 노드에서 X1으로 분할

X1에 의해 분할된 두 그룹의 Gini impurity:

  • 왼쪽 그룹 (Node1): 클래스 0 - 4개, 클래스 1 - 1개

$$1 - (0.8^2 + 0.2^2) = 0.32$$

 

  • 오른쪽 그룹 (Node2): 클래스 0 - 1개, 클래스 1 - 4개

$$1 - (0.2^2 + 0.8^2) = 0.32$$

 

분할 전 Gini impurity는 0.5 이며, 이 노드에서의 분할 후 평균 Gini impurity measures는 다음과 같음:

$$
\frac{5}{10} \times 0.32 + \frac{5}{10} \times 0.32 = 0.32
$$

즉, Root 노드에서 Gini impurity decrement:

$$0.5 - 0.32 = 0.18$$

 

X1의 중요도에 기여: 0.18


2-2. Node1에서 X2로 분할

X2에 의해 분할된 두 그룹의 Gini impurity:

  • 왼쪽 그룹 (Leaf1): 클래스 0 - 3개, 클래스 1 - 0개

$$1 - (1^2 + 0^2) = 0.0$$

  • 오른쪽 그룹 (Leaf2): 클래스 0 - 1개, 클래스 1 - 1개

$$1 - (0.5^2 + 0.5^2) = 0.5$$

 

분할 전 inpurity는 0.32 이고 분할 후 평균 Gini impurity는 다음과 같음:

$$\frac{3}{5} \times 0.0 + \frac{2}{5} \times 0.5 = 0.2$$

 

Node1에서 Gini impurity decrement:

$$0.32 - 0.2 = 0.12$$

 

X2의 중요도에 기여: 0.12


2-3.Node2에서 X3으로 분할

 

X3에 의해 분할된 두 그룹의 Gini impurity:

  • 왼쪽 그룹 (Leaf3): 클래스 0 - 0개, 클래스 1 - 2개

$$1 - (0^2 + 1^2) = 0.0$$

  • 오른쪽 그룹 (Leaf4): 클래스 0 - 1개, 클래스 1 - 2개

$$1 - (1/3)^2 - (2/3)^2 = 0.44$$

 

분할 전 Gini impurity는  0.32 이고 분할 후 평균 Gini impurity는 다음과 같음:

 

$$\frac{2}{5} \times 0.0 + \frac{3}{5} \times 0.44 = 0.264$$

 

Node2에서 Gini impurity decrement:

$$0.32 - 0.264 = 0.056$$

 

X3의 중요도에 기여: 0.056


단계 3: 특성 중요도 계산 및 정규화

  • X1의 총 기여도: 0.18
  • X2의 총 기여도: 0.12
  • X3의 총 기여도: 0.056

전체 특성 중요도의 합:

$$0.18 + 0.12 + 0.056 = 0.356$$

정규화:

  • X1: $ \frac{0.18}{0.356} \approx 0.51 $
  • X2: $ \frac{0.12}{0.356} \approx 0.34 $
  • X3: $ \frac{0.056}{0.356} \approx 0.16 $

최종 결과

  • X1의 중요도: 0.51
  • X2의 중요도: 0.34
  • X3의 중요도: 0.16

요약

  • Feature Importance는 각 node(노드)에서 purity increament(순수도 향상도)를 누적하고, 이 값의 tree 전체에 대한 기여도를 계산하기 위해 정규화함.
  • Depth가 증가하면서 추가된 node들  역시 feature importance에 영향을 미치지만, 일반적으로 상위 node에서의 분할이 더 많은 instances에 영향을 주기 때문에 상대적으로 더 높은 중요도를 가질 가능성이 큼.

'Programming > ML' 카테고리의 다른 글

[ML] Tensor: Scalar, Vector, Matrix.  (0) 2025.02.03
[ML] Nearest Neighbor Search: k-d Tree  (0) 2024.11.25
[ML] Regularization  (0) 2024.10.27
[ML] Linear Classification Model: Hyperplane and Decision Boundary  (0) 2024.10.27
[ML] Diabetes Dataset  (0) 2024.10.05
'Programming/ML' 카테고리의 다른 글
  • [ML] Tensor: Scalar, Vector, Matrix.
  • [ML] Nearest Neighbor Search: k-d Tree
  • [ML] Regularization
  • [ML] Linear Classification Model: Hyperplane and Decision Boundary
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (740)
      • Private Life (13)
      • Programming (186)
        • DIP (104)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    random
    fourier transform
    SS
    Convolution
    검사
    linear algebra
    math
    SIGNAL
    Probability
    opencv
    signal_and_system
    function
    Programming
    Optimization
    numpy
    signals_and_systems
    Python
    인허가제도
    Term
    Vector
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[ML] Feature Importances for Decision Tree
상단으로

티스토리툴바