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

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


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

바뀐 식(식 (4))의 의미는 손실함수가 다음의 3가지 항의 덧셈으로 표현될 수 있습니다
- (미래 트리 함수의 1차 미분 형태) X (미래 트리의 예측값)
- (미래 트리 함수의 2차 미분 형태) X (미래 트리의 예측값)
- 과적합 방지를 위한 정규화 함수 (T(리프 노드의 개수)가 작아질수록 모델은 단순해지고, W(가중치)가 작아질수록 과적합을 방지한다)
식 (4)로는 아직 손실 함수를 최소로 하는 f 함수를 찾기에는 무리가 있습니다. 따라서 이 값을 리프 노드 기준으로 변환하는 기준이 필요합니다. 이 기준은 Xgboost가 Boosting을 기반으로 동작된다는 개념에서 시작됩니다. 결론적으로 Xgboost의 트리 함수는 리프 노드 각각에 가중치를 곱한 형태이고 이 형태의 모든 원소가 Tree의 집합입니다.

식 (5)을 통해 손실 함수를 최소로 하는 w을 구할 수 있습니다.
2. Tree의 분할 기준
Tree의 분할 기준은 모델에 따라 특정 기준으로 분할된 변수들의 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 |
- #opencv #이미지 연산 #합성
- python #deque #프로그래머스 #공 던지기 #문자열 계산하기 #코딩테스트
- 머신러닝 #xgboost #
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- #seq2seq #encoder #decoder #teacher forcing
- python #프로그래머스 #겹치는선분의길이
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- nlp #토큰화 #nltk #konply
- subquery #sql 코딩테스트
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- #attention #deeplearning
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- #프로그래머스 #안전지대 #시뮬레이션
- # 할인행사 #counter #딕셔너리 #프로그래머스
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- #tf idf
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- 딥러닝 #오차역전파 #연쇄법칙 #계산그래프 #최적화
- 머신러닝 #lightgbm #goss #ebf
- 파이썬 #시각화 #matplotlib
- 잘라서 배열로 저장하기 #2차원으로 만들기
- 파이썬 #코딩테스트 #프로그래머스 #스택 #큐
- html #javascript #구구단 출력
- seaborn #데이터시각화 #타이타닉
- python #프로그래머스 #리스트 #인덱싱
- # 프로그래머스 #연속된 부분수열의 합 #이중 포인터 #누적합
- 머신러닝 #project #classification #dacon
- #자연어 처리 #정수 인코딩 #빈도 수 기반