working_helen

[ Week 4-2 ] Decision Tree, ID3 algorithm 본문

교내 수업/Machine Learning

[ Week 4-2 ] Decision Tree, ID3 algorithm

HaeWon_Seo 2024. 3. 25. 18:16

Lecture : Machine Learning

Date : week 4, 2024/03/21

Topic : Decision Tree 

 

 

1. Decision Tree 

2. ID3 

   1) ID3 algorithm 

   2) Entropy와 Information Gain

   3) ID3 Decision Tree 예제 

   4) Information Gain Ratio

 

 


1. Decision tree 의사결정 나무

출처 :  https://itwiki.kr/w/%EC%9D%98%EC%82%AC%EA%B2%B0%EC%A0%95_%EB%82%98%EB%AC%B4

 

- 특정 변수와 변수값을 기준으로 분기 > 데이터의 영역을 나누어 결과를 구분하는 모델 

- 분기 이후 불순도(Impurity) 값이 가장 많이 감소하는(정확도가 증가하는) 방향으로 분기 

- 불순도 지표 : 엔트로피(entropy), 지니계수(Gini Index) 등

 

Why? 왜 불순도가 감소하는 방향으로 분기하는가?
: 트리의 깊이가 깊어지고 노드가 많아질수록 모델이 복잡해지기 때문에 결정 트리는 과적합에 민감하다는 단점이 있다. 따라서 과적합을 방지하기 위해 적은 노드로도 높은 정확도를 보여야 하며, 이를 위해 한 번 분기할 때 동질한 데이터끼리 최대한 같은 노드에 속할 수 있도록 만드는 것이 필요하다. 따라서 엔트로피(부정확성)와 지니계수(불균일 지수)가 낮아지는, 즉 동질적인 데이터들이 많이 모이게 되는 노드를 가지는 방향으로 분기해야 한다. 
※ 참고도서 : 파이썬 머신러닝 완벽 가이드 183-184pp

 

- 의사결정나무의 학습 과정

  • 재귀적 분기 (recursive  partitioning) : 불순도를 최대한 감소시키는 attribute를 선택해 분기하는 과정을 반복, 불순도가 0% 상태인 Full tree를 생성 
  • 가지치기(pruning) : 지나지게 세분화된 가지를 제거함으로써 overfitting을 방지하는 과정, 생성된 Full tree에서 불필요한 가지를 제거한 subtree를 선택 

 

 

 

 

2. ID3 

1) ID3 algorithm 

출처 :  https://en.wikipedia.org/wiki/ID3_algorithm#/media/File:ID3_algorithm_decision_tree.svg

(위키백과 영어 번역) ID3 알고리즘은 초기 데이터셋 S를 루트 노드로 시작된다. 알고리즘을 반복할 때마다 아직 사용되지 않은 모든 attribute에 대하여 반복하며, entropy 혹은 information gain을 계산한다. 그런 다음 entropy가 가장 작은 혹은 information gain값이 가장 큰 attribute를 선택한다. S는 선택한 속성에 따라 분할되어 데이터의 하위 집합을 생성합니다. 알고리즘은 각 하위 집합에서 계속 반복적으로 진행되며, 이전에 사용되지 않은 attribute만 사용한다. 

 

- ID3 = Iterative Dichotomiser 3

- 반복적 분기로 의사결정 나무를 생성하는 알고리즘의 일종 

 

- 엔트로피(entropy)를 불순도(Impurity) 값으로 사용하여 분기할 attribute를 선택한다. 
- 초기 전체 데이터셋에서부터 entropy 값이 작아지는 방향으로 의사결정 나무를 신장시킨다. 

- entropy가 작을수록 = 불확실성(unpredictability)이 감소 = 더 예측을 잘 하는 분기 

 

 

 

2) Entropy와 Information Gain

  • S : 전체 데이터셋 / A : attribute / t : A attribute의 각 class
  • IG(S, A) : S에서 A를 기준으로 분기했을때 Information Gain 
  • H(S) : S의 entropy
  • H(S, A) : S에서 A를 기준으로 분기 후 entropy 
  • p(t) : A attribute가 t class에 속할 확률 
  • H(t) : t class의 entropy
- Information Gain(IG) = 분기 전후 entropy 값의 변화량 = 분기 전후 엔트로피의 차이 
- 분기 후 엔트로피 = 각 class entropy의 weighted average 

 

ID3는 분기 후 entropy값이 작아지는 방향으로 분기하는데, 이때 분기 전 entropy 값이 고정되어 있으므로 결국 Information Gain을 가장 크게 만드는 Attribute를 분기 기준으로 선택한다. 

 

==> 분기 후 entropy가 작다

        = 분기 후 Information Gain이 크다

        = 불확실성(unpredictability)이 작다 = 더 예측을 잘 한다 

 

 

 

3) ID3 Decision Tree 예제 

==> 'outlook' attribute를 기준으로 전체 데이터셋 1차 분기

 

① 분기 전 H(S) 계산

② 각 attribute마다 분기 후 H(S, A), IG(S, A) = H(S) - H(S, A) 계산

③ H(S, A)값이 가장 작은 = IG(S, A)값이 가장 큰 attribute를 분기 기준으로 결정

④ 동일한 과정을 반복하여 의사결정 나무 생성 (이때 이전에 분기에 사용된 attribute는 재사용되지 않음)

 

 

 

 

4) Information Gain Ratio (GR)

  • IG : Information Gain 
  • IV : Intrinsic Value, H(S, A)와 동일한 값 

- Information Gain은 가지 split을 잘게 할수록 값이 커질수밖에 없다는 특징이 있고, 

  이로 인해 지나치게 많이 분기하거나 overfitting될 수 있다는 문제점이 있다.
- Information Gain Ratio는 기존의 IG값을 IV값으로 나눠주는 방식으로 split 개수에 따른 disadventage를 주어 의사결정나무 가지가 지나치게 많이 split되지 않도록 개선해준다. 

 

 

 

 

 

 

 

 

Jupter Notebook