본문으로 바로가기

BJCHOI.DEV

WEB / APP / DATA SCIENCE / ML KR
시스템 시간

00:00:00:00

화면
언어 KO EN

[알고리즘 비교] Random Forest vs XGBoost

기술 로그 2026-08-04

요약

Random Forest는 여러 트리를 독립적으로 학습한 뒤 평균하는 배깅 방식이고, XGBoost는 이전 단계의 오차를 다음 트리가 보완하는 부스팅 방식임.

0이 많은 카운트 데이터에서는 단순 알고리즘 우열보다 count:poisson 목적함수 결합 여부가 핵심이며, 전환 후 오차율(WAPE)이 최대 30%p 개선됨.


1. 핵심 차이

구분 Random Forest XGBoost
학습 방식 배깅 (Bagging) 부스팅 (Boosting)
트리 학습 독립적 (병렬) 순차적 (직렬)
최종 예측 여러 트리 평균 트리 결과 누적
이전 오차 활용 없음 있음 (오차 집중 교정)
튜닝 난이도 낮은 편 높은 편
목적함수 선택 제한적 다양함

구조를 단순화하면 다음과 같음.

Random Forest
Tree 1 ─┐
Tree 2 ─┼─> 평균 ─> 최종 예측
Tree 3 ─┘

XGBoost
Tree 1 → 오차 확인 → Tree 2 → 오차 확인 → Tree 3 → 최종 예측

2. 0이 많은 데이터에서의 차이

예시 데이터:

0, 0, 1, 0, 2, 0, 0
  • Random Forest 회귀는 여러 트리의 예측값을 평균하므로 0.3, 0.5, 1.6 등의 실수 예측 가능.
  • XGBoost도 일반 회귀 목적함수(reg:squarederror)를 사용하면 동일하게 실수 예측 가능.

따라서 다음과 같은 단순 구분은 부정확함:

Random Forest = 0.x 발생
XGBoost = 정확히 0

신규 모델의 핵심 차이는 XGBoost 자체보다 다음 설정에 있음:

objective="count:poisson"

카운트 데이터에 맞는 목적함수를 사용하여 음수 예측을 방지하고 건수 데이터 특성을 학습에 반영하는 방식임.


3. 프로젝트 적용 비교

기존 모델 (golden-pipeline)

RandomForestRegressor(
    n_estimators=200,
    max_depth=12,
    random_state=42
)

주요 특징:

  • 독립적인 트리 200개 학습
  • 최종 예측값 평균 사용
  • 일반 회귀 구조 사용 (L2/MSE)
  • 카운트 데이터 전용 목적함수 없음

신규 모델 (ml-pipeline)

XGBRegressor(
    objective="count:poisson",
    n_estimators=500,
    learning_rate=0.04,
    max_depth=6,
    random_state=42
)

주요 특징:

  • 트리를 순차적으로 학습
  • 이전 단계 오차를 계속 보정
  • Poisson 목적함수 적용
  • 음수가 없는 카운트 데이터 구조 반영

실제 변경 흐름:

Random Forest + 일반 회귀
            ↓
XGBoost + Poisson 목적함수

4. 실측 정확도 개선 결과 (WAPE / fMAPE)

28개 백테스트 구간 실측 결과, 희소 구간 및 0인 날짜에서의 예측 안정성이 대폭 개선됨.

평가 기준 기존 모델 (RF + 일반 회귀) 신규 모델 (XGB + Poisson) 개선 폭
일별 운송 오차 (WAPE) 44.5% 14.5% 30.0%p 개선
시간대별 오차 (WAPE) 30% 초중반 19.0% ~ 22.9% 목표치(30% 이하) 진입
휴일/주말 0구간 오차 85.7% 27.4% 58.3%p 대폭 개선