[머신러닝] AdaBoost

sykim·2023년 7월 30일
0

머신러닝

목록 보기
3/5

Creative Common Licence가 아닌 사진들을 포함하여 비공개 처리함.


AdaBoost

Adaptive Boosting의 줄임말로 약한 학습기들을 앙상블 학습법을 통해 훈련시켜 강한 학습기를 생성하는 방법이다. 이 때 데이터마다 가중치가 부여된다.
(약한 학습기라 하면 랜덤 추측보다는 조금 더 나은 예측을 하는 모델을 말한다.)

AdaBoost는 stump tree를 약한 학습기로 사용한다.

위 그림과 같이 깊이가 1인 의사결정나무이다. 1개의 변수만을 사용하기 때문에 약한 학습기라 부르고 이것을 여러 개 사용한다.

부스팅에서 랜덤 포레스트와는 다르게 깊이가 깊은 의사결정나무를 쓰지 않는 이유는 순차적으로 학습을 하기 때문이다. 한 번 과적합된 트리를 계속해서 학습한다면 오류가 사라지지 않고 계속해서 과적합될 것이다. 따라서 stump를 사용한다.

adaboost의 작동원리를 간단히 살펴보자면

  1. 학습 데이터셋과 약한 학습기를 준비한다.
  2. 훈련 데이터 셋으로 학습을 진행한다.
  3. 2번을 통해 나온 결과에서 오분류된 데이터에 대해서는 가중치를 부여하여 다시 학습을 진행한다.
  4. 3번을 반복 진행하여 강한 학습기를 생성한다.
    최종적으로 테스트 데이터가 들어왔을 시 이전 모델의 결과값을 모두 결합해서 예측을 진행함.

다음 그림을 통해 파악할 수 있다.

  • 첫번째 그림에서 모든 데이터 포인트들은 뽑힐 확률이 동일하다.
  • 학습기에 의해 분류된 첫번째 결과가 2번째 사진이고 동그라미 쳐진 데이터 포인트가 현재 오분류된 상황이다.
  • 그렇기에 3번째 그림처럼 오분류된 데이터들에 대해서는 더 잘 예측가능하게 가중치를 부여한다. (정상 분류된 데이터는 이전과 같은 가중치)
  • 위 과정을 계속 반복한다.

  • 최종적으로 생성된 학습기가 데이터 셋을 분류하는 모습이다.

  • AdaBoost는 회귀, 분류 문제에 적용 가능하다.

profile
배움을 기록하는 습관 들이기

0개의 댓글