본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Boosting; 부스팅
약한 학습기를 순차적으로 학습시키면서 앞 모형이 틀린 부분을 다음 모형이 보완하게 해, 강한 학습기를 만드는 앙상블 기법

배깅이 독립적인 모형을 병렬로 만들어 평균하는 반면, 부스팅은 모형을 하나씩 차례로 더해 간다. 주로 편향을 줄이는 효과가 있으며, 정형 데이터 예측에서 성능이 좋아 실무와 경진대회에서 많이 쓴다.

  • 가중치 조정 방식(AdaBoost) : 이전 모형이 잘못 분류한 관측치의 가중치를 높여, 다음 모형이 그 관측치에 집중하게 한다
  • 잔차 학습 방식(Gradient Boosting) : 이전까지의 앙상블이 남긴 오차, 정확히는 손실함수의 음의 기울기(제곱 오차일 때는 잔차)를 다음 모형이 예측하도록 학습한다

최종 예측은 각 모형의 예측을 가중합한다. 경사 부스팅에서 m번째 단계의 모형은

Fm(x)=Fm−1(x)+νhm(x)

로 갱신된다. hm은 새로 학습한 트리, ν는 학습률(shrinkage)이다. 학습률을 작게 하면 트리 개수를 늘려야 하지만 일반화 성능이 좋아지는 경향이 있다.

주요 알고리즘

편집 원본 편집
알고리즘 제안 특징
AdaBoost Freund·Schapire (1997) 오분류 관측치 가중치 증가. 이진 분류에서 모형 가중치 αm=12ln⁡1−εmεm(εm: 가중 오류율). 기본 학습기로 깊이 1 트리(스텀프)를 흔히 쓴다. 이상치에 민감하다
GBM(Gradient Boosting Machine) Friedman (2001) 임의의 미분 가능한 손실함수에 대해 음의 기울기를 트리로 적합. 순차 학습이라 느리고 과적합에 주의해야 한다
XGBoost Chen·Guestrin (2016) 목적함수에 트리 복잡도 정규화 항 추가, 2차 미분(헤시안) 사용, 결측값 처리 방향 자동 학습, 분할 탐색 병렬화
LightGBM Microsoft (2017) 히스토그램 기반 분할, 리프 중심(leaf-wise) 트리 성장, GOSS·EFB로 대용량에서 빠르다. 데이터가 적으면 과적합되기 쉬워 num_leaves 등을 제한한다
CatBoost Yandex (2017~2018) 범주형 변수를 ordered target statistics로 자동 인코딩, ordered boosting으로 목표 누수(target leakage) 완화, 대칭(oblivious) 트리 사용
구분 배깅 부스팅
학습 방식 병렬(독립) 순차(이전 모형에 의존)
샘플링 부트스트랩 복원 추출 전체 데이터에 가중치 부여 또는 잔차 학습(부분 샘플링 변형도 있음)
주로 줄이는 오차 분산 편향(분산도 일부 감소)
결합 방식 동일 가중 투표·평균 모형별 가중합
과적합 모형 수를 늘려도 잘 생기지 않음 반복이 많으면 생길 수 있어 조기 종료·학습률 조절이 필요
이상치·잡음 비교적 강함 민감한 편
대표 모형 랜덤 포레스트 AdaBoost, GBM, XGBoost, LightGBM, CatBoost

scikit-learn 예제

편집 원본 편집
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, stratify=y, random_state=42)

gb = GradientBoostingClassifier(
    n_estimators=200, learning_rate=0.05, max_depth=3, random_state=42)
gb.fit(X_train, y_train)
print(gb.score(X_test, y_test))

주요 하이퍼파라미터는 트리 개수(n_estimators), 학습률(learning_rate), 트리 깊이(max_depth)다. 학습률을 낮추면 트리 개수를 늘려야 한다.

  • 순차 학습·오분류 가중치 증가(AdaBoost), 잔차(음의 기울기) 학습(GBM)의 원리
  • 배깅과의 비교(병렬/순차, 분산/편향 감소)
  • XGBoost(정규화), LightGBM(리프 중심·히스토그램), CatBoost(범주형 처리)의 특징 구분

GBM 계열 비교

편집 원본 편집
알고리즘 특징
GBM 손실함수의 음의 기울기(경사하강법)로 가중치를 갱신하며 나무를 순차적으로 더한다. 순차 학습이라 느리다
XGBoost GBM 에 규제(정규화)를 넣고 병렬 처리·결측값 처리를 더했다. GBM 보다 빠르다
LightGBM 나무를 리프(leaf) 중심으로 키운다(leaf-wise). 대용량에서 XGBoost 보다 빠르다
CatBoost 범주형 변수 처리에 강하다
  • "XGBoost 는 GBM 보다 속도가 늦다" 는 틀리다.