1. 

 트리기반 모델을 자주사용하지만 모델에 대한 이해가 부족한것 같아 하나씩 작성해보려한다.

참조의 대부분은

https://www.youtube.com/watch?v=7VeUPuFGJHk&t=268s 

 

에서 가져왔다.

 

 

2-1. decision tree 

 decision tree 즉 의사결정나무는 어떤한 데이터를 받았을 떄 ㄷ그 데이터를 바탕으로 질문을 던저 해답을 얻는 과정이다. 쉽게 말하면 스무고개 게임을 하는것이다.

 

 스무고개 게임을 할 때 가장 중요한 점은 질문의 순서일 것이다. 대상을 많이 좁힐 수 있는 질문을 가장 먼저 던지는 것이 답을 구하는데 가장 빠르게 도달할 수 있는 방법일 것이다.

 이런 이유로 의사결정 나무에서도 어떤 질문을 하는지, 즉 어떤 변수를 대상으로 질문을 던지는 것인지를 판단해야한다.

이에 쓰이는 척도가 불순도이다.

 불순도를 나타내는 척도에는 gini, entropy같은 척도가 있는데 이번에는 gini를 기반으로 설명을 진행하겠다.

 

 

2-2. 지니계수

 

위 사진의 경우 다람쥐가 1마리 낙타가 4마리이다.

지니계수를 계산하면 1- (P(다람쥐)^2 + P(낙타)^2) = 1 - ((1/5)^2 + (4/5)^2)  = 0.32 이다. 이 이미지가 얼마나 순수한지를 나타내는 척도라고 이해하면 좋다.

 

위 사진의 경우 다람쥐가 2마리 낙타가 2마리이다.

1- (P(다람쥐)^2 + P(낙타)^2) = 1 - ((1/2)^2 + (1/2)^2)  = 0.5 이다. 데이터가 반반 일시에는 이렇게 지니지수가 항상 반반이 나온다.

 

 

2-3. decision tree 만드는과정 (이진변수)

 

영상의 예시를 들어 지니계수를 계산해보자

 

좌측노드의 지니계수를 계산하면 다음과 같다.

 

 

우측노드의 지니계수를 같은 방법으로 계산하면 0.336이다.

하지만 우리는 이 질문의 지니계수를 구해야한다. 질문의 지니는 두 좌우측노드의 가중평균으로 구한다.

 

좌측노드의 총 데이터 갯수는 144개 우측노드의 갯수는 159개로 

 

 

가중평균하여 chestpain의 질문에 대한 지니계수를 산출한다.  

 

 

같은 방법을 다른 featrue들에도 반복하면  위와 같은 숫자등이 나오게된다. 

세질문중에 불순도 즉 지니계수가 가장낮은 Blood Circulation에 관한 질문을 가장 먼저 물어보는 질문으로 설정한다.

 

같은 과정을 이후에 생긴 노드에도 반복하면 chest pain에 관한 질문을 할것인가 Block Arteries에 대한 질문을 할 것인지 불순도를 계산한다. 위 경우에는 지니계수가 더 낮은 Block Arteries를 선택할것이다.

그리고 그 이후 남은 질문인 chest pain에 관한 질문을 이어나간다.

 

이렇게 가장 좌측가지는 완성이된다.

 

이제 나머지 가지들을 채워나갈 차례다.

만약 질문을 하는것이 분류를 하는데에 오히려 방해가 된다면 질문을 하는것이 유리할까?

그렇지 않다 즉, 가지를 더 뻗어나가지않고 가지를 자르는게 옳다. 그렇다면 이 경우를

숫자로 어떻게 판단을 해야할까?

 

해당 분기점 노드의 불순도와 다음 질문했을 때의 불순도를 비교하여보면된다.

질문을 하지않았을때의 불순도는 yes 13/ no 102로 0.2이고

 

분기점을 나눈이이후의 불순도는 0.29이다. 이 경우 질문을 더이상하지않고 멈추는것이 옳다.

 

이과정을 모든 노드에 반복하면

 

 

이렇게 완성된 트리형태가 나오게된다.

 

 

2-4. 수치형변수에서의 노드분기

 

 

수치변수에서는 임의로 범주형변수로 전환을 하여 지니계수를 계산한다.

위와 같은 데이터가 있다면 선택한 변수를 정렬하고 각 값사이의 평균값을 기준으로 크다 작다를 비교하여 범주형 변수로 변환한 후 각 지니계수를 계산한다.

 167.5를 기준값으로 먼저 지니계수를 구하는 과정이다. 이과정을 모든 기준값에 반복하여

모든 경우에대하여 지니계수를 계산하였으면 가장낮은 0.27이 weight에 대한 지니계수가 되는것이고

다른 변수에대한 지니계수를 비교하여 질문을 선택하게된다.

 

 

2-5. 순서형변수에서의 노드분기

 

순서형변수의 경우 수치형변수의 경우와 비슷하게 지니계수를 계산한다.

만약 [1, 2, 3, 4 ] 가 있다면 위와 같이 세가지 질문의 지니꼐수를 계산하고 가장낮은 것을 취한다.

 

 

2-6. 범주형변수에서의 노드분기

 

[green, blue, red] 세가지 범주가 있다면 3C2 + 3C1총 6가지의 지니계수를 계산하고 가장낮은 것을 취한다.

'ML' 카테고리의 다른 글

[ML] Gradient Boost - Classification  (0) 2022.01.03
[ML] Gradient Boost - regression  (0) 2021.12.30
[ML] Adaboost  (0) 2021.12.29
[ML] Randomforest  (0) 2021.12.29
[ML] Regression Tree  (0) 2021.12.28

+ Recent posts