ML (1) - 앙상블(Ensemble)과 부스팅(Boosting)기법

govldbstj·2023년 2월 14일
0

ML 궁금한 것!

목록 보기
1/2

앙상블(Ensemble)학습

: 머신러닝에서 알고리즘의 종류에 상관 없이 서로 다르거나, 다르지만 같은 매커니즘으로 동작하는 다양한 머신러닝 모델을 묶어 함께 사용하는 방식.
: 정형 데이터 분류 학습에 좋은 성능을 보이는 기법이다.
: 앙상블은 크게 보팅(voting), 배깅(bagging), 부스팅(boosting), 스태킹(stacking)으로 나누어볼 수 있다.

bias-variance trade-off 관계

편향
: 전체적으로 데이터가 한 방향으로 치우쳐진 경향
: 학습 알고리즘에서 잘못된 가정을 했을 때 발생하는 오차. 높은 편향 - 과소적합(underfitting) 문제
: 과소적합이란, 훈련셋으로부터 중요한 규칙성을 제대로 포착하지 못하는 문제

분산
: 정답으로부터 얼마나 흩어져있는가
: 모델이 복잡하면 발생하는 문제. 낮은 편향 - 과적합(overfitting) 문제
: 과적합이란, 훈련셋에 대해서만 학습을 해서 다른 데이터를 넣었을 때 제대로 예측하지 못하는 문제

-> 편향과 분산 둘 다 낮아야 가장 좋은 모델이라고 할 수 있다.

배깅 : Low Bias, High Variance에 효과적 (왼쪽 그림)
부스팅 : High Bias, Low Variance에 효과적 (오른쪽 그림)


보팅(voting)

여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식
서로 다른 모델을 같은 데이터셋으로 학습시키고, 각 모델의 예측값을 토대로 최종 예측값을 계산한다.
배깅과 달리 부트스트래핑 과정이 없고 각자 다른 모델로 학습시켜 이 값을 평균내거나 최빈값을 계산해 예측한다.


배깅(bagging)


Bootstrap + aggregating
Bootstrapping : 단일 랜덤 표본에서 복원으로 여러 표본을 가져와 표본 추출 분포를 추정하는 방법
부트스트랩을 집계한다. -> 병렬로, 복원추출로!
random sampling : 모집단의 각각의 요소는 표본으로 선택될 가능성이 같게 되는 표본 추출법

how to?

(1) 전체 데이터로부터 임의로 n개의 데이터를 복원 추출해 평균을 구한다.
(2) 이렇게 평균을 m번 구한다.
(3) 평균들에 대한 분포를 살펴보면 sample mean에 대한 신뢰구간을 알 수 있다.

random sampling이 갖는 의미?

예를 들어, 통학하는 데에 소요되는 시간을 예상할 때 10~15분쯤이면 도착한다라는 사실을 '통계적'으로 알고 있다. 이것은 평균적으로 구해진 신뢰 구간이다.

사용하는 이유?

학습 데이터가 충분하지 않더라도 충분한 학습 효과를 준다.
참고로, categorical(범주형)데이터는 투표로 집계, continuous(숫자형)데이터는 평균으로 집계한다.

예시 : RandomForest classifier (어디에 두더라도 반은 간다는 분류기)


부스팅(boosting)


예측 성능이 낮은 약한 분류기(weak classifier)를 여러개 활용해 더 강한 분류기를 만드는 방법
배깅과의 차이점은, 배깅은 병렬적이다 (각각의 classifier가 서로 영향을 주지 않고 학습해서 마지막에 결과를 종합)
부스팅은 순차적이다. 이전 classifier의 학습 결과를 토대로 다음 classifier의 학습 데이터의 샘플 가중치를 조정한다.

-> 모델을 꾸준히 개선해나가는 방향으로 학습이 진행된다.

단, outlier(이상치)에 취약하다. 오답에 대한 높은 가중치를 부여하기 때문!

예시 : XGBoost, AdaBoost, GradientBoost (부스트 계열)


스태킹(stacking)


cross-validation으로 상이한 모델을 조합한다!
여러가지 다른 모델의 예측 결과값을 다시 학습 데이터로 반영해 다른 모델로 재학습시켜 결과를 예측하는 방식
개별 모델이 예측한 데이터를 다시 meta dataset으로 사용해서 학습

2가지 개념의 모델이 필요하다
(1) 개별 모델들 (base learner)
(2) 최종 모델 (meta learner)

profile
ajou software 20

0개의 댓글

Powered by GraphCDN, the GraphQL CDN