본문 바로가기
Learning-driven Methodology/ML (Machine Learning)

[XGBoost] 트리 부스팅 (Tree Boosting) (1)

by goatlab 2022. 5. 6.
728x90
반응형
SMALL

트리 부스팅 (Tree Boosting)

 

나무를 어떻게 학습해야 할까? 그 답은 모든 지도 학습 모델에서 항상 그렇듯이 목적 함수를 정의하고 최적화하는 것이다.

 

다음을 목적 함수로 설정한다 (항상 훈련 손실과 정규화를 포함해야 함을 기억해야 함).

 

 

Additive Training

 

나무의 매개변수는 무엇인가? 그 함수 fi들이라는 것을 알 수 있다. 각각은 트리의 구조와 잎 점수를 포함한다. 학습 트리 구조는 단순히 그라디언트를 취할 수 있는 기존의 최적화 문제보다 훨씬 어렵다. 한 번에 모든 나무를 배우는 것은 다루기 힘든 일이다. 대신에, 배운 것을 수정하고 한 번에 하나의 새로운 나무를 추가하는 추가 전략을 사용한다. 단계에서 예측 값을 쓴다.

 

 

각 단계에서 어떤 나무를 원할까? 목표를 최적화하는 것을 추가하는 것은 자연스러운 일이다.

 

 

평균 제곱 오차 (MSE)를 손실 함수로 사용하는 것을 고려하면 목적은 다음과 같다.

 

 

MSE의 형식은 1차 항 (일반적으로 잔차라고 함)과 2차 항이 있는 친숙하다. 기타 이자 손실 (ex: 물류 손실)의 경우 이러한 좋은 형태를 얻기가 쉽지 않다. 따라서 일반적인 경우에 손실 함수의 테일러 확장을 2차까지 취한다.

 

 

모든 상수를 제거한 후 단계의 특정 함수 t는

 

 

이것이 새 트리에 대한 최적화 목표가 된다. 이 정의의 중요한 이점 중 하나는 목적 함수의 값이 gi 그리고 hi에만 의존한다는 것이다. 이것이 XGBoost가 사용자 정의 손실 함수를 지원하는 방법이다. 로지스틱 회귀 및 쌍별 순위를 포함한 모든 손실 함수를 다음을 수행하는 것과 정확히 동일한 해를 사용하여 gi 그리고 hi 입력으로 최적화할 수 있다.

 

모델 복잡성 (Model Complexity)

 

훈련 단계를 도입했지만, 한 가지 중요한 것이 있다. 바로 정규화 기간이다. 트리의 복잡성 ω(f)을 정의해야 한다.

 

 

w는 잎에 있는 점수의 벡터이고, q각 데이터 포인트를 해당 잎에 할당하는 함수이고, T는 잎의 수이다. XGBoost에서 복잡성을 다음과 같이 정의한다.

 

 

물론 복잡성을 정의하는 방법은 여러 가지가 있지만 실제로는 이 방법이 효과적이다. 정규화는 대부분의 트리 패키지가 덜 신중하게 처리하거나 단순히 무시하는 부분 중 하나이다. 이는 트리 학습의 전통적인 처리가 불순도 개선만을 강조하는 반면 복잡성 제어는 휴리스틱에 맡겨졌기 때문이다. 그것을 공식적으로 정의함으로써 배우고 있는 것에 대한 더 나은 아이디어를 얻을 수 있고 야생에서 잘 수행되는 모델을 얻을 수 있다.

 

https://xgboost.readthedocs.io/en/stable/tutorials/model.html

 

Introduction to Boosted Trees — xgboost 1.6.0 documentation

XGBoost stands for “Extreme Gradient Boosting”, where the term “Gradient Boosting” originates from the paper Greedy Function Approximation: A Gradient Boosting Machine, by Friedman. The gradient boosted trees has been around for a while, and there

xgboost.readthedocs.io

 

 

 

 

728x90
반응형
LIST