티스토리 뷰

머신러닝

[12] Xgboost

up_one 2025. 2. 24. 17:11

2024.06.28 - [머신러닝] - [7] 앙상블 모델에서 언급된 Boosting 기반으로 만들어진 Xgboost는 Gradient Boosting 모델에 정규화 함수를 더해서 과적합을 방지하고 병렬 컴퓨팅을 통해 학습 속도를 개선시킨 장점을 가지고 있습니다. 이번 글에서는 Xgboost의 동작 원리에 대해 자세히 다뤄보겠습니다.

 

[7] 앙상블 모델

SVM(Support Vector Machine), KNN 알고리즘과 같이 단일 분류 알고리즘을 조합해 하나의 예측 모형으로 만드는 지도학습 방법론을 앙상블 모델이라고 합니다. 이번 시간에는 앙상블 모델의 종류인 Bagging

up-one-coding.tistory.com

 

1. 동작원리

 Xgboost의 기본 원리가 되는 Decision Tree(결정 트리)는 이진트리를 기반으로 조건에 따라 집단을 분류하여 아래 노드로 내려갈수록 Entropy(불순도)를 낮추는 것을 목표로 합니다. 성능을 개선시키기 위해 이러한 이진트리를 여러 개 생성하고 생성된 각 이진트리가 서로를 보완한다는 것입니다.

식 (1). 최종 트리의 예측값

 

식 (1)은 생성된 여러 개의 이진트리의 예측값들의 합이 최종 모델의 예측값임을 보이는 식입니다. 기본이 되는 원리인 Boosting은 이전 트리 함수(위 식의 f)가 오분류한 관측치에 가중치를 부여하여 미래 트리 함수에서는 정확하게 분류하는 것입니다. 그렇다면 이전 트리 함수로 미래 트리 함수를 추정하는 방법을 구현해 손실함수를 정의하는 것이 중요합니다.

식 (2). 손실함수 (obj의 값이 최소가 되는 f 함수 찾기)

 

식 2를 통해 손실함수가 최소가 되는 f을 찾는 방법에는 '테일러 정리'라는 수학적 이론이 필요합니다. '테일러 정리'는 특정 함수를 n번 미분하면 다음과 같은 조건을 만족하는 함수 h을 찾을 수 있어 복잡한 다항식의 계산을 간단하게 만들 수 있는 효과를 가집니다.

테일러 정리의 개념
식 (3). 식 (2)을 테일러 정리를 이용해 변환한 식

 

'테일러 정리'를 이용하면 함수 형태인 f 함수를 실수 형태(트리의 예측값의 형태)로 바꿀 수 있어 손실 함수를 최소로 만드는 f 함수를 구할 수 있게 됩니다.

 

식 (4). 식 (3)에 정규화 식을 더한 형태

 

바뀐 식(식 (4))의 의미는 손실함수가 다음의 3가지 항의 덧셈으로 표현될 수 있습니다

  1. (미래 트리 함수의 1차 미분 형태) X (미래 트리의 예측값)
  2. (미래 트리 함수의 2차 미분 형태) X (미래 트리의 예측값)
  3. 과적합 방지를 위한 정규화 함수 (T(리프 노드의 개수)가 작아질수록 모델은 단순해지고, W(가중치)가 작아질수록 과적합을 방지한다)

식 (4)로는 아직 손실 함수를 최소로 하는 f 함수를 찾기에는 무리가 있습니다. 따라서 이 값을 리프 노드 기준으로 변환하는 기준이 필요합니다. 이 기준은 Xgboost가 Boosting을 기반으로 동작된다는 개념에서 시작됩니다. 결론적으로 Xgboost의 트리 함수는 리프 노드 각각에 가중치를 곱한 형태이고 이 형태의 모든 원소가 Tree의 집합입니다. 

식 (5). 식 (4)을 리프노드 기준으로 변환한 식

 

식 (5)을 통해 손실 함수를 최소로 하는 w을 구할 수 있습니다.

 

2. Tree의 분할 기준

Tree의 분할 기준은 모델에 따라 특정 기준으로 분할된 변수들의 Similarity Score로 정해집니다. 정의된 손실함수로부터 Similarity score는 정의되고 여기서 중요한 것은 회귀 문제일 때는 제곱손실함수를, 분류 문제일 때는 음의 로그 가능도 함수를 손실 함수로 정해야 합니다.

Similarity score 식

 

특정 기준으로 분할된 자식 노드들의 Similarity Score의 합이 부모 마디의 Similarity Score보다 클 때에만 분할이 이루어집니다. 모든 변수에 대한 Similarity Score을 구해서 이 값이 최대로 하는 변수와 변수 기준을 선택하고 이를 기준으로 부모 노드에서 자식 노드로 분할하는 방법입니다. 이처럼 Similarity Score을 구하는 과정을 미리 정한 횟수만큼 반복하는 것입니다.

 

 

 

[Reference]

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

'머신러닝' 카테고리의 다른 글

[13] Lightgbm  (0) 2025.03.04
[11] RandomForest Model  (0) 2025.02.13
[10] 로지스틱 회귀 모델  (1) 2025.02.11
[9] 정규화 모델 (Regularization)  (0) 2024.07.07
[8] 의사결정나무  (2) 2024.06.30
TAG more
글 보관함
최근에 올라온 글