티스토리 뷰
이번 포스팅에서는 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
사실 말로 설명하는 것보다, 직접 작성한 과정을 보는것이 좋기에 과정을 첨부하겠다.
위 같은 과정을 통해 Split 구간이 AveRooms or HouseAge 라는 사실을 알게 된다.
그럼 실제로 Tree의 모양을 한번 살펴보자
위처럼 Tree의 모양이 그려지는데, 가장 맨 위 Root node에 우리가 손으로 구했던 AveRooms를 이용해 Split한 모습을 볼 수 있다.
(House Age도 가능하나, 랜덤이기에 위와같이 나옴.
단, 내부적으로 소수점 연산때문에 같은 값을 가진 칼럼이 많아도 특정 칼럼으로만 Split될 수도 있음 - 개인적 생각)
각 노드가 어떤 의미를 나타내는지 설명 후 넘어가보도록 하겠다.
자, 그럼 그 다음 단계인 MedInc로 왜 split 됐는지 한번 더 손으로 구한 후 마무리 지어보겠다.
이처럼 손으로 구한 것과 GraphViz에서 그려주는 Tree의 값을 비교하면 똑같은 것을 볼 수 있다!!
GBM도 결국, DT를 기반으로 돌아가지만, Criterion의 기준이 Friedman mse라는 점만 기억하자.
추가적으로, GBM은 Level-wise Tree Growth 라는 표현을 들어볼 수 있을것이다.
이러하게 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으로 되어있다.
이정도가 될 것 같다.
'머신러닝' 카테고리의 다른 글
[ML] MCD ( Minimum Covariance Determinent ) - 2. MCD모델 원리 (0) | 2023.03.31 |
---|---|
[ML] MCD ( Minimum Covariance Determinent ) - 1. 마할라노비스 거리 (Mahalanobis distances) (0) | 2023.03.26 |
[ML] GBM(Gradient Boosting Machine) - (1) 실제 학습, 예측 방법 (0) | 2023.03.22 |
[ML] GBM(Gradient Boosting Machine) - 정리 (0) | 2023.03.21 |
[ML] AdaBoosting 정리 (0) | 2023.03.05 |
- Total
- Today
- Yesterday
- Tree
- 오블완
- GNN
- 디텍션
- 도커
- 백준
- c3k2
- 어탠션
- 이미지
- V11
- 자바
- 정리
- 초보자
- 욜로
- java
- github
- docker
- 오류
- 깃
- python
- DeepLearning
- YOLOv8
- GIT
- 뜯어보기
- 딥러닝
- CNN
- yolov11
- 티스토리챌린지
- YOLO
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |