co-code 님의 블로그
co-code
« 2026/08 »
| 일 |
월 |
화 |
수 |
목 |
금 |
토 |
| |
|
|
|
|
|
1 |
| 2 |
3 |
4 |
5 |
6 |
7 |
8 |
| 9 |
10 |
11 |
12 |
13 |
14 |
15 |
| 16 |
17 |
18 |
19 |
20 |
21 |
22 |
| 23 |
24 |
25 |
26 |
27 |
28 |
29 |
| 30 |
31 |
|
|
|
|
|
관리 메뉴
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 (지수) : 매우 큰 오차에 더 강한 페널티