
목차
지난 주에는 데이터 학습 시 발생할 수 있는 편향과 분산에 대해 알아보았다.
편향과 분산은 트레이드-오프 관계이고, 적당한 합의점을 찾는 게 핵심이다.
이와 관련하여 앙상블 기법이란 게 있는데, 오늘은 앙상블 기법에 대해 간단히 알아보고, 부스팅에 대해서 정리해볼 것이다.
앙상블 기법
여러 개의 모델을 만들고 이들을 조합하여 하나의 최종 모델을 만드는 방법
- 앙상블 : 조화, 총체라는 뜻
- 여러 전문가의 의견을 종합하는 것과 같이, 개별 모델 하나만 사용하는 것보다 여러 모델을 사용하면 예측 성능을 향상시키고 과적합을 줄이는 데 효과적
보팅
모델들로 투표를 하여 결정하는 것
- 하드 보팅 : 여러 개의 분류기 간 투표를 하여 다수결로 최종 클래스 결정
- 소프트 보팅 : 여러 개의 분류기들의 클래스확률의 평균들을 계산한 후, 가장 평균이 높은 클래스로 결정하는 것
배깅
유사한 데이터 셋들로 각 학습기들의 결과를 만들어서 합침
- 핵심 : 여러 약한 학습기를 독립적으로 병렬 학습시킨 후 결과를 취합하여 분산을 감소시키고 과적합을 줄이는 방법
- Bagging은 Bootstrap aggregating을 줄인 말
- 주로 분산(Variance)을 감소시켜 과적합을 줄이고 예측의 안정성을 높이는 데 효과적인 방법
- Bootstrap
- 원본 데이터 셋으로부터 원본과 유사한 새로운 데이터 셋을 추출
- 이것을 Scikit-learn에서는 원본데이터에서 중복을 허용하여 무작위로 원본데이터의 갯수만큼 새로운 데이터 셋을 추출
- 즉, 이 데이터 셋들은 서로 유사하지만 서로 다른 데이터 셋들이다. 따라서 학습결과도 조금은 다 다르게 나올 것이다.
- aggregating
- 모으다, 합치다라는 뜻
- Bootstrap을 통해 여러 데이터 셋을 추출하고, 서로 다르게 학습시켜서, 그 예측값을(결과값들을) 합치는 것.
- 회귀 문제에서는 평균을 낼 것이고, 분류 문제에서는 빈도수를 기준으로 할 것이다.
- 보팅이랑 비슷해보이지만 다르다
- 대표적인 모델 : 랜덤 포레스트
부스팅
“전보다 더 크거나 높게 하다”라는 뜻. 여러 모델을 데이터 셋을 바꾸며 순차적으로 연속해서 사용
- 핵심 : 이전 학습기가 잘못 예측한 데이터에 더 큰 가중치를 부여하며 다음 학습기를 훈련시켜 오차를 점진적으로 줄여나가는 방법 → 편향 감소, 예측 성능 향상
- 일부러 약한 학습기를 사용하여, 결과에 따라 뒤에 있는 모델이 사용할 데이터 셋을 바꾼다.
- 종합적으로 예측값들을 합칠 때, 성능이 좋은 모델의 예측에 더 큰 가중치를 부여한다.
- 배깅과 비슷한데 샘플링의 방법이 다르다.
- 배깅과 비교
- 공통점 : 원본 데이터 집단으로부터 “원본과 유사한 새로운 데이터 집단”을 K번 추출하여 K번의 약학습기 학습을 진행. 둘 다 데이터 셋을 계속 바꾼다.
- 차이점 : Bagging은 K번의 샘플링을 독립적으로 수행, Boosting은 순차적으로 수행.
- 앞선 결과에서 오차가 발생한 데이터에 가중치를 더 강하게 준 다음, 다음 샘플링을 수행함으로써 “오차가 발생했던 데이터를 또 틀리지 않도록 학습시킴” (틀린 데이터 위주로 집어넣는다)
종류
- AdaBoost(Adaptive Boosting, 적응 부스팅), GBM, XGBoost, LightGBM, MadaBoost, LogitBoost, CatBoost 등이 있다. Cost를 계산하는 방식이 서로 다름
- AdaBoost
- 지수 손실로 계산
- 부스팅이나 배깅처럼 d개를 골라 사용하는 것이 아닌, 학습 데이터 전체를 사용.
- 초기 가중치를 균등하게 부여
- 작은 깊이의 Decision Tree 등 약한 학습기를 학습.(앙상블 특징이기도 함)
- 약한 학습기 대표적인 특징 : 평균적으로 50%보다 조금 좋은 성능을 냄
- Gradient Boosting Model(GBM)
- Gradient Descent + Boosting
- Ada Boost와 유사하지만 경사하강법(Gradient Descent)을 사용하는 것이 차이점.
- Overfitting의 문제가 있어서 Early Stop방식으로 해결
- XGBoost(eXtreme Gradient Boosing)
- 대규모 데이터 세트에서 높은 성능을 발휘하며, 데이터 분석 경진 대회에서 자주 사용됨
- 정규화 기법을 통해 과적합을 방지하고 병렬 처리를 지원함
- LightGBM
- 트리를 확장하는 방식 : Leaf-wise
- Leaf-wise 방식이 빠른대신 과적합 위험이 있어서 파라미터 튜닝이 중요
- 높은 예측 성능, 다만 과적합 발생 가능성 up
스태킹
개별 모델의 예측 결과를 다시 학습 데이터로 활용하여, 이를 입력으로 받아 최종 예측을 수행하는 메타 모델을 훈련시키는 방식
- 모델 여러 개를 추론해놓은 다음에 똑같은 결괏값들로 다른 모델 학습시킨다.
앙상블 기법 정리
위 4가지 앙상블 기법의 공통점 : 여러 모델을 조합해서 더 좋은 성능을 얻는다는 것
차이점 : 조합하는 방식과 주로 해결하려는 문제가 다름.
| 구분 | 보팅 (Voting) | 배깅 (Bagging) | 부스팅 (Boosting) | 스태킹 (Stacking) |
|---|
| 핵심 | 여러 독립적인 모델들의 '예측값'을 투표 (또는 평균)하여 최종 결정 | 여러 약한 학습기를 '독립적으로' 병렬 학습시킨 후 결과 취합 (주로 분산 감소) | 약한 학습기들을 '순차적으로' 학습시키면서 이전 모델의 오류에 집중 (주로 편향 감소) | 여러 모델의 '예측값 자체를' 새로운 데이터(피처)로 활용하여 최종 모델 학습 |
| 학습 방식 | 서로 다른 알고리즘을 가진 모델들이 각각 독립적으로 학습 | 동일한 알고리즘을 가진 모델들이 부트스트랩 샘플링으로 생성된 서로 다른 데이터셋으로 독립 병렬 학습 | 동일한 알고리즘을 가진 약한 학습기들이 이전 모델이 틀린 데이터에 가중치를 높여 주며 순차적으로 학습 | 다양한 모델들을 학습시킨 후, 이 모델들의 예측값을 수집하여 또 다른 메타 모델이 학습 |
| 결과 취합 | - 하드 보팅: 다수결 - 소프트 보팅: 확률 평균 | - 분류: 다수결 (Voting) - 회귀: 평균 (Averaging) | 각 학습기의 성능에 비례한 가중치를 부여하여 합산 (AdaBoost) 이전 잔차를 예측하여 합산 (GBM 계열) | 최종 메타 모델이 개별 모델의 예측값을 바탕으로 최종 예측 |
| 주요 목표 | 다양한 모델의 강점을 활용하여 예측 성능 향상 | 모델의 분산(Variance) 감소 및 과적합(Overfitting) 방지. 더 안정적인 예측 | 모델의 편향(Bias) 감소 및 예측 성능 극대화. 더 강력하고 정확한 예측 | 여러 모델의 강점을 조합하여 최상의 예측 성능 달성 (때로는 부스팅보다도 더 좋다고 함) |
| 비유 | 여러 전문가 (각자 다른 전공)의 의견을 취합해서 최종 결정 | 한 분야 전문가 (A)를 여러 명 복제해서 각자 다른 정보를 주고 독립적으로 판단하게 한 후 의견 취합 (평균) | 한 분야 전문가 (A)가 특정 문제를 틀리면 그 틀린 문제에 더 집중해서 계속 재학습시키는 방식으로 실력 향상 | 여러 전문가 (각자 다른 전공)에게 최종 판단을 맡기지 않고, 그 전문가들의 예측 결과를 보고 최종 의사결정자가 다시 한번 판단 |
| 대표 모델 | 로지스틱 회귀 + SVM + 결정 트리 조합 등 | 랜덤 포레스트 (Random Forest) | AdaBoost, Gradient Boosting (GBM), XGBoost, LightGBM, CatBoost 등.. | |
부스팅 모델의 특징과 장단점
앙상블 공부를 했으니 이번에는 부스팅 모델을 활용하여 자전거 수요 예측을 해볼 것이다.
여러 앙상블 기법 중에서 부스팅 모델을 자세히 살펴본 결과, 다음과 같이 정리해볼 수 있다.
주요 특징
- 순차적 학습 : 이전 모델이 학습을 마친 후에 다음 모델이 학습을 시작한다는 특징
- 이전 모델의 오류에 집중 : 이전 모델이 잘못 분류하거나 오차가 컸던 데이터에 가중치를 부여하거나 예측 오차를 다음 모델의 정답으로 삼아서 학습
- 약한 학습기 사용 : 성능이 뛰어나지 않은 약한 학습기(ex 깊이가 얕은 결정 트리)를 기본 모델로 사용. 약한 모델들이 순차적으로 보완하며 합쳐져서 강력한 하나의 최종 모델이 됨.
장점
- 높은 예측 성능
- 복잡한 패턴 학습
- 특성 중요도 제공(피처 중요도를 제공하여 모델을 해석하는 데 도움을 줌)
단점
- 과적합 위험 ← 파라미터 튜닝 중요
- 노이즈에 민감 : 틀린 데이터나 예측 오류가 큰 데이터에 집중하는 특성 때문에 조심