co-code 님의 블로그

부스팅(Boosting) 본문

python

부스팅(Boosting)

co-code 2026. 5. 14. 19:00
  • 부스팅(Boosting)
    • 모델을 순차적으로 학습
    • 이전 모델이 잘못 맞추거나 확률이 애매한 경우 데이터에 가중치를 증가시켜 다음 모델에서 집중 학습
    • 단순 모델들을 결합하여 강력한 모델로 생성
    • 장점
      • 편향이 감소해 예측의 확률이 올라감
      • 단순한 모델들을 이어서 학습하기 때문에 성능이 많이 올라감
    • 단점
      • 순차적으로 학습하므로 병렬화가 어려움 -> 학습 속도가 느려짐
      • 학습의 횟수가 너무 많은 경우 과적합 위험
      • 파라미터 튜닝이 중요함
    • 대표 알고리즘
      • AdaBoost
        • 오차가 더 큰 샘플에 더 높은 가중치를 부여
        • 각각의 모델들은 가중치가 조정이 된 데이터 셋을 이용하여 학습
        • 최종 모델에서는 가중치의 합산으로 변경
      • GradientBoost(GBM)
        • 이전 모델의 잔차를 예측하는  새로운 모델을 새롭게 추가함
        • 손실 함수 직접 최적화
        • 계산량이 많음
      • XGBoost
        • GBM을 개선한 알고리즘
        • 규제 및 병렬 학습 지원
          • 병렬 지원을 통해 시간 감소
          • 규제를 통해 과적합 방지
        • 대표적인 부스팅 알고리즘
        • 해당 모델은 추가적인 라이브러리 설치 필요
      • LightGBM
        • XGBoost에 비해 속도면에서 우수함
        • 히스토그램 기반 학습을 통해 대용량 데이터의 처리에 특화됨
      • CatBoost
        • 범주형 데이터들을 자동 처리
        • 비교적 튜닝이 간단함
  • AdaBoost (분류)
    • 초기에는 모든 샘플의 가중치를 동일하게 부여
    • 첫 번째 모델에서는 약한 모델을 학습하여 잘못 분류한 샘플에 대해 가중치를 증가시킴
    • 가중치가 증가한 데이터를 이용하여 다음 모델에서 학습하여 더 잘 맞추도록 집중 학습
    • parameter(매개변수)
      • estimator (base_estimator 매개변수는 sklearn의 구버전에서 사용)
        • 기본값 : DecisionTreeClassifier(max_depth=1)
        • 모델 리스트
          • DecisionTreeClassifier : 매개변수의 값들을 바꿔서 사용 가능
          • LogisticRegression : 신형 분류 모델
          • SVC (probability=True) : 확률 예측을 True로 변경해야 사용 가능
      • n_estimator
        • 기본값 : 50
        • 일반적으로 50 ~ 500
        • 모델의 개수가 너무 많아지면 시간이 증가 & 과적합 위험성 증가
      • learning_rate
        • 기본값 : 1.0
        • 각 단계별 기여도 (가중치)
        • n_estimator와 상호 보완적으로 설정 (rate를 작게 하면 모델의 개수를 증가시킴)
        • 약한 모델의 기여도를 조절하는 스케일링 값
        • 값이 작은 경우 각 단계별 영향이 줄어들어 많은 모델이 필요
        • (데이터의 크기 / 복잡도) 가 클수록 모델의 개수를 늘리고 줄여주는 것이 유리
        • 작은 데이터인 경우 데이터의 개수를 줄이고 기여도를 증가시키는 것이 유리
      • algorithm
        • 기본값 : SAMME.R
        • SAMME.R : 확률을 사용, 보통 시간이 빠르고 성능이 우수
        • SAMME : 클래스 별 점수를 기반으로 함(확률 필요 없음)
    • 속성
      • estimators_ : 학습된 모델의 리스트
      • estimators_weights_ : 각 모델의 가중치 (분류 중요)
      • estimators_errors_ : 각 단계별 오차율
      • feature_importances_ : feature별 중요도 (가중치의 합)
    • 메서드
      • staged_predict(X) / staged_predict_proba(X)
        • 각 단계별 누적 모델의 예측을 순차적으로 제공 (학습 곡선)
  • AdaBoost (회귀)
    • 여러 개의 약한 회귀 모델을 순차적으로 학습하여 이전 단계의 오차를 줄이도록 가중치를 조절하여 높은 성능의 회귀 모델을 생성
    • parameter(매개변수)
      • estimator
        • 기본값 : DecisionTreeRegresson(max_depth=3)
        • DecisionTreeRegression : 매개변수들을 변경하여 사용 가능
        • Ridge : 릿지 모델 (L2 패널티)
        • SVR : 서포트 벡터 머신 (max_iter 값 조절
      • loss
        • 기본값 : linear
        • 오차에 대한 가중치의 변환 방식
        • linear : 기본적인 선형 업데이트
        • square (제곱) : 큰 오차에 더 민감하게 반응
        • exponential (지수) : 매우 큰 오차에 더 강한 페널티

'python' 카테고리의 다른 글

앙상블(ensemble) 中 배깅(Bagging)  (0) 2026.05.15
서포트 벡터 머신(SVM : Support Vector Machine)  (0) 2026.05.14
이진 분류  (0) 2026.05.13
데이터 불균형 문제 및 완화 방법  (0) 2026.05.08
이상치 판별 및 처리  (2) 2026.05.08