본문 바로가기

데이터 과학/머신러닝(Machine Learning)

Decision Tree(개념편)

1. Classification Tree 예시

1.1 데이터로 부터 Classification 트리 구성하기

  1.1.1 지니 불순도 계산하기 - 열에 대해 최상위 루트 열 판단하기

           - 이진 값을 가진 열에 대해 지니 불순도 계산하기

           - 수치 값을 가진 열에 대해 지니 불순도 계산하기

 

2. Regression Tree 예시

2.1 데이터로 부터 Regression 트리 구성하기

 

(참고 사이트는 아래에 있습니다)


의사 결정 트리(Decision Tree)가 카테고리 분류를 수행하다면 분류 트리(Classification Tree)라 한다.

의사 결정 트리(Decision Tree)가 숫자 값을 예측한다면 회귀 트리(Regeression Tree)라 한다.

 

1. 분류 트리(Classification Tree) 예시

- 분류 트리는 Leaves에 True/False를 가지고 있다. 다만, 수치 데이터가 섞여 있을 수도 있다.

- 수치 데이터의 Threshold는 같은 데이터에 대해서 다를 수 있다.

- 또한, 최종 분류 결과는 반복될 수 있다.

1.1 데이터로 부터 Classification 트리 구성하기

- 어떤 열이 의사 결정 트리의 최상위에 올 것인지를 판단해야 한다.

- 각각의 열이 최상위에 왔다고 가정하고, 잘 예측을 하는지(정답 열과 상관관계가 가장 높은지) 판단한다

- 각각의 열을 최상위로 두고, 정답과의 상관성을 체크해 본 결과 3개의 Leaf가 불순(Impure) 하다.

- 각 열에 대해 불순한 정도를 정량적으로 나타낼 수 있는 지표가 여러가지 있다. GINI Impurity(지니 불순도, Entropy, Information Gain 이라 불리기도 한다).

 

1.1.1 지니 불순도 계산하기 - 두 열에 대해 최상위 루트 열 판단하기

- 1 - ('yes' 확률)^2 - ('no' 확률)^2 로 계산하며 왼쪽 Leaf는 0.375 값을 가진다.

- 오른쪽 Leaf는 0.444 값을 가진다. 

- 하지만, 왼쪽 Leaf가 표본이 더 많으므로 가중치를 매겨 계산하면 아래와 같다.

- 위와 동일하게 계산하여 'Loves Soda' 열에 대해 지니 불순도는 0.214가 나온다.

- 마지막으로, 수치 값을 가진 열에 대해서 지니 불순도를 계산해 본다 (다소 복잡함...)

  : 먼저 열 값에 대해 정렬을 하고, 사이 값(두 행 값 사이 평균 값)으로 지니 불순도를 계산한다.
  : 여기서는 '15'를 수치 값을 가진 열에 대한 결정 트리 값으로 선택한다

- 세 열 중에서 'Loves Soda' 열이 가장 낮은 지니 불순도를 가지므로, 'Loves Soda'가 최상위 루트가 된다.

 

- 최상위 루트를 기준으로 왼쪽 Leaf는 불순도가 '0'이 아니다. 따라서, 다른 열을 이용해서 트리를 더 구성한다

- 루트 노드에 들어갈 '열'을 선택하 듯이 자식 노드도 마찬가지로 '불순도'를 계산하여 자식 로드에 들어갈 '열'을 선택한다.

- 최종적으로 모든 Leaf 노드는 불순도가 '0'이 되게 한다.

- 최종적으로 데이터로 부터 의사 결정 트리를 만들게 되었다.

 

- 때로는 만든 트리가 데이터에 Overfit 할수도 있다. 다르게 표현하면, 최 하단 Leaf 노드가 불순도가 '0'이 아닌 것이 있는 것이 더 나을 수도 있다. 따라서, Cross Validation을 해봐야 한다 (끝)

 

2. Regression Tree 예시

- 아래와 같은 예시의 데이터에서 단순 회귀는 데이터를 표현하는 좋은 모델이 아닐 수 있다.

- 대신 오른쪽과 같이 데이터를 트리 구조를 사용하여 표현할 수 있다.

- 회귀 트리에서 각 노드는 관찰된 데이터를 클러스터링 한 후에 각 클러스터링의 평균 값을 사용할 수도 있다.

 

- 결과 값에 영향을 미치는 요소가 적을 경우, 트리는 구성하는 것이 오히려 일 일수 있다.

  (아래와 같이 데이터 분포에서 바로 값을 예측하는 것이 나을 수 있다)

  하지만, 요소(Feature)가 많을 경우 회귀 트리를 구성하는 것이 효율적이다.

 

2.1 데이터로 부터 Regression Tree 구성하기

- 만약 Threshold가 아래 그림 처럼 '3' 이라면, Threshold >=3 이상인 것은 38.8로 예측하는 것이 된다.

- 이 평균 값으로 부터 각각의 실제 값 간의 Residual을 계산 할 수 있다.

 

 

- 그리고, 데이터의 Threshold를 변경해 가면서, 좌우 Leaf의 Sum of Residuals를 표로 나타낼 수 있다. 

- 만약 컬럼수가 여러개 라면 가장 낮은 SSR(Sum of Square Residual)을 가진 컬럼을 노드로 둔다.

 

-  Leaf를 더이상 나눌 수 없는 정도로 트리를 구성하면 데이터에 Overfit 될 가능성이 높다.

 따라서, 데이터가 최소 20개가 있다 싶으면 하나의 노드로 구성하려 Overfit을 피하도록 한다.

 


- https://www.youtube.com/watch?v=_L39rN6gz7Y 

- https://www.youtube.com/watch?v=g9c66TUylZ4 

 

반응형