본문 바로가기

머신러닝

[앙상블] 보팅(Voting), 배깅(Bagging), 부스팅(Boosting)

심화 프로젝트를 하면서 '앙상블'이라는 기법을 알게 됐다. 

처음엔 단순히 '여러 모델들을 돌려보고 그중에 좋은 모델들의 성능을 합치면(앙상블하면)

더 좋은 모델이 나오지 않을까???' 하는 생각에서 찾아봤는데 정말 있었다.

 


1. 앙상블이란?

앙상블 학습은 여러 개의 모델을 생성하고, 훈련시켜

예측의 결과를 여러 방식으로 종합하여 좀 더 정확한 예측을 하는 방법

 

2. 앙상블 모델 종류

'여러 방식으로 종합'에서 어떤 방식으로 종합하냐에 따라 모델의 종류가 크게 네 개로 나뉜다고 한다.

 

① 보팅 (Voting)

서로 다른 알고리즘을 가진 분류기를 각각 학습시키고 그 결과를 투표해서 다수결로 결정.

즉, 아래 그림처럼 여러 모델들의 예측 결과를 투표해 최종 클래스를 결정하는 것이다. 

투표하는 방식은 결과만을 직접적으로 투표하는 hard 방식과

확률을 평균내어 투표하는 soft 방식이 있다. 

 

내가 1차원적으로 단순히 생각했던 방식은 바로 이 보팅 방식이었다. 

 

② 배깅(Bagging)

같은 유형의 알고리즘을 기반으로 한 분류기를 데이터 샘플링을 다르게 학습하여 수행하는 것 

어떤 블로그에서 (너무 많은 곳을 찾아봐서 어디였는지 못찾겠다..)

문제은행이 있고, 모의고사를 많이 봐서 시험을 잘보게 되는 거라고 비유를 해주셨는데 딱 맞는 것 같다. 

 

배깅은 랜덤 샘플링을 적용하여 학습 데이터가 충분하지 않더라도 충분한 학습효과를 주어

높은 편향의 underfitting 문제나, 높은 분산으로 인한 overfitting 문제를 해결하는데 도움을 준다고 한다.

 

지피티에 따르면 배깅의 장점을 총 세가지이다.

  • 분산 감소: 배깅은 모델의 분산을 줄이는 데 효과적입니다. 여러 모델의 예측을 평균하여 개별 모델의 변동성을 줄입니다.
  • 성능 향상: 여러 모델의 예측을 결합하여 성능을 향상시킬 수 있습니다. 특히, 서로 다른 모델을 사용하여 다양한 패턴을 학습할 수 있습니다.
  • 강건성: 여러 모델을 사용함으로써 특정 모델의 단점이나 과적합의 영향을 줄일 있습니다. 이를 통해 예측 성능과 모델의 강건성을 높일 있습니다.

대표적인 배깅 모델로는 '랜덤 포레스트'가 있다. 

하지만 프로젝트 때의 난 앙상블 모델링이라는 개념이 따로 있고,

'랜덤 포레스트'는 앙상블의 하나의 재료가 될 수 있는 모델이라고 착각했다.

그래서 랜덤 포레스트에 BaggingClassifier를 한 번 더 씌우는 일을 벌이는데...

 

다행히 불가능한 건 아니었다. 그럴 필요가 있었냐고 묻는다면 하하..

그래도 장점이 있었는데 앙상블의 계층을 추가함으로써 모델의 편향을 줄이고 분산을 감소시킬 수 있고, 

여러 랜덤 포레스트 모델을 결합하여 변동에 강한 더욱 강건한 모델을 만들 수 있다는 것이다. 

 

그러나 복잡성 증가, 과적합 가능성, 성능 향상 한계라는 단점도 있다.

 

③ 부스팅

일련의 약한 학습자(weak learners) 순차적으로 학습시키고,

단계에서 이전 단계에서 잘못 예측된 샘플에 많은 가중치를 부여하여 학습하는 앙상블 방법

 

 

이전 분류기의 학습 결과를 토대로 다음 분류기의 학습 데이터의 샘플 가중치를 조정해 학습을 진행하는 방법으로

일반적으로 오답에 대해 높은 가중치를 부여하므로 정확도가 높게 나타난다고 한다. 

다만 오류, 즉 이상치에 과도하게 적응해(Overfitting) 전체 모델이 이상치에 민감하게 반응할 확률이 높아진다. 

 

부스팅 과정에서 이상치가 강조되면, 전체 데이터의 균형이 왜곡될 수 있고,

이는 모델이 전체 데이터의 일반적인 패턴보다 이상치의 패턴을 더 잘 학습하려는 경향을 초래한다.

 

이를 방지하기 위해서는 부스팅 모델을 학습시키기 전에 이상치를 처리하거나,

부스팅 알고리즘에 강건성을 추가하는 기법(예: 로버스트 부스팅 알고리즘)을 사용하는 것이 필요하다고 한다.

 


 

 

그럼 앙상블하면 모든 모델들의 성능이 향상되나?

NO! 앙상블하였다고 무조건 성능이 향상된다고 할 수는 없었다.

 

만약 개별 모델들이 비슷한 내용을 학습했거나, 모두 정확도가 떨어진다면 앙상블 모델 역시 정확도가 높아질 수는 없다. 

즉, 개별 모델들의 '모델의 다양성'과 '모델의 품질'이 떨어진다면

그들을 종합한 앙상블의 성능도 제한적일 수밖에 없다.  

(그래서 나의 앙상블 모델이...)