티스토리 뷰

이번 포스팅에는 직접 Decision Tree의 Regrssion을 살펴보자! 이전 포스팅과 마찬가지로 손으로 한번 간단한 dataset을 가지고 직접 구해보겠다.

 

만약, Decision Tree Classification을 모른다면, 밑에 링크를 참고하시길..

https://sims-solve.tistory.com/89

 

[ML] 의사결정트리(Decision Tree) 정리 - Classicifation 손으로 구하기

이번 포스팅에는 직접 Decision Tree가 어떤 방식으로 분기하는지 그림으로만 보는 것이 아닌, 손으로 계산하여 정말 똑같은지 확인해보고자 한다. 만약, Decision Tree에 대해 잘 모르겠다면.. 정보를

sims-solve.tistory.com

해당 포스팅은 손으로 직접 트리를 구해보는 포스팅이다.

사진 1. dataset
사진 2. regressor Tree

[사진 1]은 Boston 집값 데이터 중 4개만 가져온 것이다.

[사진 2]는 [사진 1] 데이터를 가지고 만든 Decision Tree (Regressor)이다!

 

Regressor는 Classification과 다른점이 한가지 존재한다.

바로 Gini 계수를 사용할 수 없다는 것이다.

그럼 Gini 계수를 무엇으로 대체할까?

바로 squared_error로 Gini 계수를 대체한다.

 

어떻게 계산하는지 한번 천천히 해보도록 하자.

 

일단 CRIM Feature를 한번 계산해보자.

사진 3. 구하느라 죽겠어요...

CRIM Feature로 경계선을 그어 3부분의 경계선에 따른 IG를 구하면.. 각각 28.8305 , 20.25 , 30.083이 나온다.

즉, IG이 가장 큰 세번째 경계선을 선택해야 한다!

 

사진 4. Root

그럼, 경계선은 손으로 구했을때 얼마인가! 바로 0.09876이다. 실제 [사진 4]와는 조금의 차이가 존재한다.

이유는 1. 소수점 계산 2. 소수점 3자리만 표현하는 방식 때문이다. 

즉, 해당 경계선으로 Split을 한 것을 볼 수 있다! 

squared_error 또한 손으로 구한것이 44.27 , 사진속에는 44.27로 동일하다. (부모노드의 SE)

value는 평균을 뜻한다. 손으로 구한 평균은 23.1이다! 일치한다! 

 

이와같이 손으로 모든 feature에 대해 구하고 난 후 살펴보자. 단, 계산식은 생략하겠다. (힘듬 ㅠㅠ)

사진 5.

위와같이 모든 Feature의 IG을 SE를 통해 구했고, 그 중 가장 높은 두 경계선을 찾을 수 있었다!

 

**주의

간혹, IG이 똑같아도 랜덤으로 선택되지 않고 하나의 Feature를 기준으로 Split하는 경우를 grapviz로 볼 수 있는데...그 이유는 Regressor라는 특징때문에, 같은 값이 들어가더라도, 순서가 다르면 소숫점이 달라질 수 있기 때문이다.조심하자... 위에 dataset도 CRIM만나오고 INDUS로 Root에서 분기하지 않았는데, 연산순서에 따라 소숫점이 정말 미세하게 바뀐다는 사실을 알았다...

 

여기까지 Decision Tree Regressor의 Root에서 분기점을 찾는 것을 손수 구해보았다.. 그럼 하나만 더 해보겠다.

사진 6.

왼쪽 자식 노드의 Split 구간을 손으로 구해보았다 .

CRIM과 ZN이 후보로 뽑힐 것이고, 둘 중 하나가 랜덤으로 선택되어 Split 할 것이다.

이처럼 Root의 왼쪽 자식 Node를 Split 할때 CRIM의 0.074, ZN의 20을 기준으로 Split 한것을 볼 수 있다.

[사진 6]에서 볼 수 있듯, 경계선의 평균이 정확히 일치하는 것을 볼 수 있다!!!

 

지금까지 Decision Tree Regressor가 무엇을 기준으로 분기하고, 어떻게 진행되는지 정말 자세히 살펴보았다. 

Decision Tree Classification과 진행과정은 동일하지만, Gini 계수 대신 Squared Error를 이용한다는 사실만 기억하고 있으면, Decision Tree를 온전히 어떻게 트리를 구성해 나가는지 알고 있다고 말해도 되겠다.

 

Decision Tree에 대한 글을 쓰면서 정말 자세하게 살펴본 결과 깊게 지식을 쌓은 느낌이 들어 뿌듯하다.

해당 지식 잘 습득해 나가길...!

 

아...! 아직 안끝났다.. Prune(가지치기)가 남았다!!!!! 하지만 간단한 내용이고, 해당 글은 너무 길어졌으므로 다음 포스팅으로 넘기겠다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함