이번 포스팅에서는 앙상블 모델에 대해서
학습해보겠습니다.
해당 포스팅을 참고해서 학습해볼게요!
https://limitsinx.tistory.com/48
[코드로 이해하는 딥러닝 17] - Ensemble with CNN
[코드로 이해하는 딥러닝 0] - 글연재에 앞서 https://limitsinx.tistory.com/27 [코드로 이해하는 딥러닝 1] - Tensorflow 시작 https://limitsinx.tistory.com/28 [코드로 이해하는 딥러닝 2] - Tensorflow 변수선언 https://lim
limitsinx.tistory.com
https://ybeaning.tistory.com/17
앙상블(Ensemble) 모형 / Bagging과 boosting
데이터 분석에 있어서 모델링은 최적의 알고리즘을 선택함으로써 최종 모델을 도출하는 데 있어서 큰 역할을 한다. 앙상블(ensemble)이란 '함께, 동시에, 한꺼번에, 협력하여'라는 의미의 프랑스어
ybeaning.tistory.com
https://tyami.github.io/machine%20learning/ensemble-1-basics/
앙상블 (Ensemble)의 기본 개념
앙상블 모델의 개념과 종류를 정리해봅시다
tyami.github.io
https://helpingstar.github.io/ml/ensemble/
배깅, 부스팅 그리고 스태킹: Bagging, Boosting and Stacking
앙상블 방법은 예측기가 가능한 한 서로 독립적일 때 최고의 성능을 발휘한다. 다양한 분류기를 얻는 한 가지 방법은 각기 다른 알고리즘으로 학습시키는 것이다. 이렇게 하면 매우 다른 종류의
helpingstar.github.io
1. 앙상블이란?
앙상블은 "함께, 동시에"라는 의미의 프랑스어입니다.
머신러닝 측면에서 보면
여러개의 모델을 다양한 방식으로 합쳐서 여러 결과를 도출하고
이 결과를 종합해서 가장 좋은 모델을 뽑아내는 것이라고 하네요!

이미지출처 : https://untitledtblog.tistory.com/156
위 이미지를 보면 한 데이터를 LinearRegression, RegressionTreem SVM 으로 돌려보고
투표를 해서 나은 것을 사용하고 있습니다.
앙상블은
"여러개의 모델(동일한 모델포함)들로 학습을 해서 가장 나은 것을 쓰자"
라는 개념이 핵심이라고 합니다.
여기서 "어떻게 가장 나은 것을 골라낼 것인가?"의 방식은
여러가지가 있다고 합니다.
위 이미지에서는 Voting(투표) 방식을 사용했구요!
2. 앙상블의 장점
지나친 치우침(bias)로 인한 underfitting,
혹은 높은 분산으로 인한 overfitting을 막을 수 있다고 합니다.
여러 모델의 평균을 구해서 어느쪽에도 치우치지 않는 결과를 얻을 수 있다고 합니다.
사람으로 비유하면
데이터를 한 사람이 분석한 결과보다
여러 사람들이 같이 분석한 내용을 취합한게
객관적이고 더 좋은 결과가 나올 수 있는 것과 같은 것이니까요!
(앙상블은 이런 '집단지성' 으로부터 나온
아이디어라고합니다.)
1. 보팅(Voting)
결과를 보고 가장 나은 결과값을 투표하는 방식의 앙상블 방식입니다.
Voting 방식은 하드보팅(Hard Voting), 소프트보팅(Soft Voting)으로 나눠진다고 합니다.
2-1 하드보팅(HardVoting)
각 weak learner들의 예측 결과값을 바탕으로
다수결 투표하는 방식이라고 합니다.
(weak learner: 특정 데이터를 이용해 인스턴스한 모델로,
최종 결과물보다는 상대적으로 적확하지 않은 결과를 보이는 learner)

위 그림에서 빨간공인지 파란공인지 이중분류하는 문제에서
각 모델은 서로 다른 예측 값을 계산하는데,
이 예측값을 다수결 투표로 결정해서 예측값을 결정합니다.
위 그림에서는 5개의 모델 중
빨간공의 예측이 3, 파란공의 예측이 2개로
빨간공이 최종 예측값이 됩니다.
2-2 소프트보팅(SoftVoting)
weak learner들의 예측 확률값의 평균 또는 가중치의 합을 구하는
방식이라고 합니다.

위의 그림이 평균을 내는 방식입니다.
그림을 보면
빨간공의 예측 확률과, 파란공의 예측 확률의 평균을 내서
평균이 높은 예측값인 파란공이 최종 예측값이 되었네요!

weak learner의 신뢰도가 다를 경우 가중치의 합 방식을 사용한다고 합니다.
가중치를 임의로 부여하거나 스테킹 기법으로 주고
더 높은 가중치가 나온 결과를 예측한다고 합니다.
여기서 가중치는 똑같은 데이터가 얼마나 많이 있는가를
나타내는 의미라고 합니다
위의 그림을 보면
0.3의 가중치를 가진 Weak learner1과 Weak leaner2의
결과의 비중이 크니 중요하겠네요.
Weak learner3는 파란공을 예측한 확률이 0.8이지만
가중치는 0.05이므로 이 확률은 전체 결과로서는 미미한 값이 되구요.
3. 배깅(Bagging)
Bootstrap aggregating의 약어라고 합니다.
이름에 나온 부트스트랩을 사용하는 앙상블 방식입니다.
부트스트랩이란 데이터가 뽑힐 확률 분포를
유지하면서 sampling 하는 방식이라고 합니다.
부트스트랩을 이용해 데이터 셋을 random samplig하고
이를 이용해서 새로운 모델을 만들어 낸다고 하네요.

위 그림을 보면 boottrrap으로 샘플을 재조합해서
Weak learning(Model)을 만듭니다.
그리고 이 결과를 Voting 해서 예측값을 뽑아냅니다.
대표적인 예시로 DecisionTree를 여러개 만들어 결과를 종합하는
RandomForest(결정트리) 알고리즘이 있습니다.
(자세한건 ML 포스팅에서 다뤄보겠습니다.)
하나의 기준의 모델을 만드는 것 보다
조합을 통해 다양한 모델을 만들면서
'알고리즘의 안정성'을 얻을 수 있다고 합니다.
4. 부스팅(Boosting)
틀린 케이스에 가중치를 줌으로서 반복적으로 모델을 업데이트 하는
앙상블 방식이라고 합니다.

Iteration 1번: 빨간원이 잘못 분류된 샘플로 판단해서
이 샘플에 대한 가중치를 높여 모델을 다시 만들어 줍니다.
Iteration2번 : iteration1의 모델과 새로운 모델을 함께 사용해서
분류하고 이를 통해 파란색 네모가 잘못 분류된 것을 확인합니다.
Iteration3번 : 파란색 네모에 대한 가중치를 높여 새로운 모델을 만들어줍니다.
이런 방식을 반복진행해서 최종 모델을 만들어줍니다.
Boosting 방식은 Adaptive Boosting방식과
Gradient Boosting 으로 나눠진다고 합니다.
4-1 Adaptive Boosting
위에서 설명한 Boosting 방식이 Adaptive Boosting 방식에 가깝네요.
이전 모델이 과소적합 했던 샘플의 가중치를 높여서
이전 모델을 보완한 새로운 모델을 만드는 부스팅 방식입니다.
대표적인 알고리즘으로
Adaboost가 있습니다.
4-2 Gradient Boosting
Adaptive Boosting이 과소적합한 샘플의 가중치를 높여서
새로운 모델을 만드는 방식이었다면
Gradient Boosting는 이전 모델이 만든 오차에
새로운 모델을 만들어서 학습시키는 방식입니다.
경사하강법이라는 방식으로 가중치를 업데이트한다고 합니다.
learning_rate 를 이용해서 각 트리의 기여 정도를 조절한다고합니다.
learning_rate가 낮을 수록 많은 트리가 필요하다고하네요.

왼쪽은 learning_rate가 너무 높아 학습 트리가 부족하고,
오른쪽은 learning_rate가 너무 낮아 과대적합 된 것을 확인할 수 있습니다.
ML에서 가장 많이 사용하는
XGBooter, LightGBM, CatBooster가
이 알고리즘 방식입니다.
오늘은 앙상블에 대해서 학습해봤습니다.
ML 포스팅에서 더 자세한 내용을 다뤄보겠습니다.
틀린부분 있으면 지적 부탁드립니다!
'인공지능 개발하기 > Machine Learning' 카테고리의 다른 글
퍼셉트론과 XOR 문제 (0) | 2024.02.18 |
---|---|
SVM(Support Vector Mchine) (1) | 2024.02.13 |
[Tensorflow] 31. 임베딩(Embedding) (0) | 2024.02.04 |
[Tensorflow] 30. keras RNN 모델 살펴보기 (0) | 2024.02.03 |
[Tensorflow] 29. RNN(Recurrent neural network) (1) | 2024.02.03 |