티스토리 뷰

이번 포스팅에서는 GBM Regressor 안에 Decision Tree(DT)가 어떤 식으로 split하는지 알아보고자 한다.

이미 DT포스팅에서 어떻게 Split 하는지 포스팅을 했다. 그런데 왜 같은 내용을 또 하냐면...

DT에서는 split 기준(criterion)공식을 squared_error로 사용한다. 하지만, GBM속 안 DT는 Friedman mse를 사용한다고 한다.

이 차이점 때문에 다시 한번 손으로 직접 구하는 포스팅을 하는 것이다.

* 참고로, 기준(criteriion)의 의미는 IG(Information Gain)을 구할때 어떤 방식으로 구할지에 대한 기준이라 보면 된다.

 

혹시, 기존 DT에서 IG(Information Gain)을 구하는 방식을 모른다면, 한번쯤 보고 오는 것을 추천한다.

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

 

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

이번 포스팅에는 직접 Decision Tree의 Regrssion을 살펴보자! 이전 포스팅과 마찬가지로 손으로 한번 간단한 dataset을 가지고 직접 구해보겠다. 만약, Decision Tree Classification을 모른다면, 밑에 링크를 참

sims-solve.tistory.com

 

사실 말로 설명하는 것보다, 직접 작성한 과정을 보는것이 좋기에 과정을 첨부하겠다.

 

위 같은 과정을 통해 Split 구간이 AveRooms or HouseAge 라는 사실을 알게 된다.

그럼 실제로 Tree의 모양을 한번 살펴보자

[그림 1]

위처럼 Tree의 모양이 그려지는데, 가장 맨 위 Root node에 우리가 손으로 구했던 AveRooms를 이용해 Split한 모습을 볼 수 있다.

(House Age도 가능하나, 랜덤이기에 위와같이 나옴.

단, 내부적으로 소수점 연산때문에 같은 값을 가진 칼럼이 많아도 특정 칼럼으로만 Split될 수도 있음 - 개인적 생각)

각 노드가 어떤 의미를 나타내는지 설명 후 넘어가보도록 하겠다.

자, 그럼 그 다음 단계인 MedInc로 왜 split 됐는지 한번 더 손으로 구한 후 마무리 지어보겠다.

이처럼 손으로 구한 것과 GraphViz에서 그려주는 Tree의 값을 비교하면 똑같은 것을 볼 수 있다!!

GBM도 결국, DT를 기반으로 돌아가지만, Criterion의 기준이 Friedman mse라는 점만 기억하자.

 

추가적으로, GBM은 Level-wise Tree Growth 라는 표현을 들어볼 수 있을것이다.

[그림 2]
[그림 3]

이러하게 Tree를 균형잡히게 생성한다고 한다. 하지만, 위 [그림 1]을 보면.. 이게 Level-wise Tree인가? 싶을 것이다.

[그림 1]은.. [그림 3]과 유사하게 보이긴 한다.. 하지만, 그 이유는 데이터 수가 총 4개밖에 안되서 그런거다..

GBM은 내부 파라미터 값으로 Max_depth의 default 값이 3으로 되어있다. (DT는 -1로 되어있음!)

즉, 데이터가 많아지게 된다면... [그림 2]와 같이 균형잡힌 트리가 만들어 질 수밖에 없다.

( 왜냐면.. 엄청나게 많은 데이터를 나눌때.. 정말 잘 분류되는 데이터 셋이 아니라면, 완벽하게 구분하지 못할것이기 때문)

 

 

지금까지 GBM Regressor를 살펴보았고 손으로도 직접 구해보았다.. (힘들다..)

정리를 해보자면...

1. sklearn GBM Regressor는 fridman mse를 사용한다.

2. sklearn GBM은 max_depth default가 3으로 되어있다.

이정도가 될 것 같다.

공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함