코딩하는 해맑은 거북이
[머신러닝] 앙상블 학습(Ensemble Learning) 본문
해당 글은 아래의 3가지를 다룬다.
1. 앙상블(Ensemble) 이란?
2. 앙상블 학습(Ensemble Learning)이란?
3. 앙상블 기법 4가지
Check.
Q. 앙상블 방법에는 어떤 것들이 있나요?
앙상블(Ensemble) 은 여러개의 모델을 조합해서 그 결과를 뽑아 내는 방법이다. "정확도가 높은 강한 모델을 하나 사용하는 것보다, 정확도가 낮은 약한 모델을 여러개 조합 하는 방식의 정확도가 높다"는 개념에서 비롯한 방법이다. Bagging, Boosting, Stacking 등의 방법이 있다.
배깅(Bagging, Bootstrap Aggregation) 이란 샘플을 여러번 뽑아(Bootstrap = 복원 랜덤 샘플링) 각 모델을 학습시켜 결과물을 집계(Aggregation)하는 방법이다. 카테고리 데이터는 투표 방식(Votinig)으로 결과를 집계하며, 연속형 데이터는 평균으로 집계한다. Bagging을 사용한 대표적인 기법에는 Random Forest 방법이 있다. 학습 데이터가 충분하지 않더라도 충분한 학습효과를 주어 높은 bias의 underfitting 문제나, 높은 variance로 인한 overfitting 문제를 해결하는데 도움을 준다.
부스팅(Boosting) 이란 이전 모델의 오답에 가중치를 높게 부여하여 다음 모델을 학습하는 방법이다. 오답을 정답으로 맞추기 위해 오답에 더 집중하여 학습시키기 떄문에 일반적으로 배깅에 비해 정확도가 높다. 그러나 틀렸던 부분에 대해 반복적으로 학습하므로 오버피팅의 문제가 있으며, outlier에 취약하고, 속도가 느리다는 단점도 가지고 있다. GBM(Gradient Boosting) 방법이 대표적이고, XGBoost, AdaBoost, GradientBoost 등의 알고리즘이 존재한다.
스태킹(Stacking) 이란 여러 개별 모델이 예측한 결과값을 다시 학습 데이터셋으로 사용해서 모델을 만드는 방법이다. 그러나 위의 그림과 같은 기본적인 스태킹 방법은 같은 데이터셋을 통해 예측한 결과를 기반으로 다시 학습하므로 오버피팅 문제점이 있다. 따라서 스태킹에 Cross Validation 방식을 도입하여 이 문제를 해결할 수 있다. 데이터를 쪼개고 이들 중 일부만을 가지고 학습한 모델을 여러개 만들어, 그 결과들을 메타 학습 데이터셋(meta train dataset) 으로 사용하여 다시 학습하는 것이다. 이 방법은 많은 개별 모델의 결과를 결합하여 예측 성능을 높일 수 있다는 장점이 있다.
💡 배깅 vs 부스팅 배깅은 랜덤 복원추출(부트스트랩)을 여러번 반복하여 모델을 병렬적으로 여러개 학습을 시킨 다음, 평균을 내는 방식이다. 반면, 부스팅은 모든 데이터를 학습에 사용하되, 오답에 더 큰 가중치를 두어 다음 회차를 학습시키는 순차적인 방법이다.
[출처 - AI tech 면접]
https://boostdevs.gitbook.io/ai-tech-interview/interview/2-machine-learning#24
Q. 통계에서 사용하는 bootstrap의 의미는 무엇인가요.
200개로만 통계량을 구하는 것이 아니라 200개를 기준으로 복원 추출하여 새로운 통계량을 구하는 것을 예시로 들 수 있다.
- 머신러닝에서 부트스트램의 의미
머신러닝에서 부트스트랩은 아래와 같이 해석될 수 있다.
- 복원추출이란?
복원추출(Sampling with replacement)이란 확률을 구할 때, 추출했던 것을 원래대로 돌려놓고 다시 추출하는 방법을 말한다.
[출처 - AI tech 면접]
https://boostdevs.gitbook.io/ai-tech-interview/interview/1-statistics-math#15
- 앙상블(Ensemble) 이란?
: 앙상블은 조화 또는 통일을 의미한다.
- 앙상블 학습(Ensemble Learning)이란?
: 여러 개의 개별 모델을 조합하여 최적의 모델로 일반화하는 방법이다.
약분류기(weak classifier)들을 결합하여 강분류기(strong classifier)를 만드는 것이다.
결정트리(Decision Tree)에서 overfitting되는 문제를 앙상블에서는 감소시킨다는 장점이 있다.
- 앙상블 기법 4가지
1) 배깅(Bagging)
Bagging은 bootstrap aggregation의 약자로, 샘플을 여러번 뽑아서(bootstrap) 각 모델을 학습시킨 다음 결과물을 집계(aggregation)하는 방법이다. 복원 랜덤 추출한 데이터들로 모델을 학습시킨다. Categorical Data는 투표방식 Voting으로 집계하고 Continuous Data는 평균으로 집계한다.
* Bootstrap : (통계학) 가설 검증(test)을 하거나 매트릭(metric)을 계산하기 전에 Random Sampling을 적용하는 방법.
((머신러닝) 랜덤 샘플링을 통해 training data를 늘리는 방법 -> 데이터 셋(training set)내의 데이터 분포가 고르지 않은 경우 사용한다.
2) 보팅(Voting)
Voting은 각각 다른 알고리즘을 이용한 분류기를 결합하는 방식으로 최종 예측값을 투표하는 방식이다.
Bagging은 서로 같은 알고리즘을 이용한 분류기가 데이터 샘플링을 각자 다르게 가져가면서 학습을 수행하는 방식이다.
3) 부스팅(Boosting)
Bagging에서 각각의 모델이 독립적으로 학습하는 반면, Boosting은 가중치를 활용하여 이전 모델의 학습이 다음 모델의 학습에 영향을 미친다. 이전 모델의 학습 결과에 따라 오답에 대해서는 높은 가중치, 정답에 대해서는 낮은 가중치를 부여하여 부여된 가중치가 다음 모델에 영향을 미치는 것이다. 잘못 분류된 데이터에 집중해서 새로운 분류 규칙을 만드는 과정을 반복한다.
* 개별 결정 트리의 낮은 성능이 문제라면 Boosting이 적합, Overfitting이 문제라면 Bagging이 적합하다.
4) 스태킹(Stacking)
CV(Cross validation)기반으로 개별 모델이 예측한 데이터를 다시 meta dataset으로 사용하여 최종 모델 Meta Learner에서 학습하는 방식이다. 즉, 여러 가지 모델들의 예측값을 최종 모델의 학습 데이터로 사용하는 방법이다.
Base Learner(model stack)에서 동일한 데이터 원본을 가지고 학습하게 되면 overfitting의 문제가 발생한다. 따라서 데이터셋을 k번 나누어 train set과 test set에 활용한다. (k-fold CV)
<다음에 찾아볼것>
배깅 vs 페이스팅(Pasting)
Cross Validation (교차검증) 방법
[참고자료]
'AI' 카테고리의 다른 글
[컴퓨터비전] Object Detection, BBOX, Matrix (0) | 2022.07.15 |
---|---|
[컴퓨터비전] 컴퓨터비전 문제 영역 (0) | 2022.07.15 |
[인공지능기초] 인공지능이란, 인공지능 역사, Tree Search(Uninformed Search) (0) | 2022.07.14 |
윈도우에서 tar.gz 파일 압축 푸는 방법 (0) | 2021.06.14 |
크롤링으로 이미지 무한으로 가져오기 (0) | 2021.06.13 |