My Data Story
[모델 알고리즘][앙상블 학습] 에이다부스트 본문
◈ '앙상블 학습' 목차 ◈
3. 에이다부스트
부스팅 컨셉에 대해 이해하고 에이다 부스트 알고리즘과 모델 구현 방식에 대해 알아보자.
1. 부스팅 개요
부스팅은 약한 학습기를 여러 개 연결하여 강한 학습기를 만드는 앙상블 방법이다.
즉 앞의 모델을 보완해나가면서 일련의 예측기를 학습시키는 것이다.
부스팅 종류는 크게 에이다 부스트와 그레이디언트 부스팅이 있다.
2. 에이다부스트
이전 예측기를 보완한 새로운 예측기를 만드는 방법으로 이전 모델이 과소 적합했던 샘플의 가중치를 더 높이는 것이다.
에이다부스트 훈련 과정은 다음과 같다.
step1
알고리즘이 첫 번째 분류기를 훈련 세트에서 훈련시키고 예측한다.
step2
알고리즘이 잘못 분류한 훈련의 샘플 가중치를 상대적으로 높인다.
step3
두 번째 분류기는 업데이트된 가중치를 사용해 훈련 세트에서 훈련하고 예측한다.
step4
다시 예측하여 가중치를 업데이트 한다.
이런 연속된 학습 기법은 경사 하강법과 비슷한 측면이 있다.
경사 하강법은 비용 함수를 최소화하기 위해 한 예측기의 모델 파라미터를 조정해가는 반면, 에이다부스트는 점차 더 좋아지도록 앙상블에 예측기를 추가한다.
모든 예측기가 훈련을 마치면, 배깅이나 페이스팅과 비슷한 방식으로 예측을 만든다. 하지만 가중치가 적용된 훈련 세트의 전반적인 예측 정도에 따라 예측기마다 다른 가중치가 적용되어 최종 예측치를 산출한다.
연속된 학습 기법의 중요한 단점은 각 예측기는 이전 예측기가 훈련되고 평가된 후에 학습될 수 있기 때문에 뱅렬화 할 수 없다는 것이다. 결국 배깅이나 페이스팅만큼 확장성이 높지 못하다.
3. 에이다부스트 알고리즘
에이다부스트 알고리즘을 통해 이진 분류 문제를 풀고자 할 때, 다음과 같다.
step0
각 샘플의 가중치 w(i) 는 초기에 1/m 로 초기화한다.
step1
첫 번째 예측기가 학습되고, 샘플 가중치 w(i) 가 적용된 에러율 r(1) 을 계산한다.
step2
에러율 r(1) 과 학습률이 적용된 예측기의 가중치 alpha(1) 를 계산한다.
예측기 가중치 식을 그래프로 그리면, 에러율(r) > 0.5이면 예측기 가중치(alpha) > 0 이고, 에러율(r) < 0.5이면 예측기 가중치(alpha) < 0 임을 알 수 있다.
step3
첫 번째 예측기의 가중치 alpha(1)을 적용해 샘플의 가중치 w(i) 를 업데이트 한다.
에이다 부스팅 모델의 주된 목적은 잘못 예측한 샘플에 대해 가중치를 높여 학습하는 것이다.
그런데 예측기 가중치(alpha) 가 0보다 작게 되면 잘못 예측한 샘플의 가중치를 더 적게 설정하여 잘못된 방향으로 훈련하게 된다.
따라서 에이다부스트 모델을 올바르게 훈련시키기 위해서 이진 분류기일 경우 각 예측기의 가중치는 0보다 커야 한다.
다시 말해 각 예측기의 에러율이 0.5보다 작아야 올바른 에이다부스트 모델을 생성할 수 있다.
step4
모든 샘플의 가중치 정규화한다.
step5
모든 예측기의 예측을 계산하고 예측기의 가중치를 더해 가중치 합이 가장 큰 클래스가 예측결과가 된다.
에이다부스트 알고리즘은 이진 분류 문제에서 각 예측기의 에러율이 0.5보다 작기만(정확도>0.5) 하면 큰 문제가 없다.
하지만 다중 클래스 분류 문제에 적용할 경우 문제가 발생한다.
K개의 클래스가 있는 다중 클래스 분류 문제에서 랜덤하게 뽑았을 때 정확도가 1/K 이기 때문에, 다중 클래스 분류 예측기의 정확도가 0.5보다 크기 쉽지 않다. 따라서 이를 보완하기 위해 SAMME 알고리즘이 구현되었다.
이제 SAMME 알고리즘에 대해 살펴보자.
4. 에이다부스트 모델 구현
4.1 AdaBoostClassifier
사이킷런에서 AdaBoostClassifier 를 통해 에이다부스트 분류기 구현할 수 있다.
AdaBoostClassifier 사용 시, 매개 변수 algorithm 을 통해 훈련 알고리즘을 설정할 수 있다.
설정 가능한 algorithm 에는 'SAMME', 'SAMME.R' 등이 있다.
algorithm 설정에 따라 예측기 가중치 설정 방법과 예측 방법이 다르다.
■ SAMME
SAMME는 '에이다부스트의 다중 클래스 버전'의 알고리즘이다.
다음과 같은 방식으로 j번째 예측기의 가중치 alpha 값을 계산한다.
만약 클래스가 두 개 뿐 (K=2) 일 때는 SAMME 알고리즘이 작동하는 방식은 위에 설명한 에이다부스트와 동일하다.
step1
j번째 예측기 훈련 후 훈련 데이터가 속하는 클래스 추정 후, j번째 예측기의 오류율 r(j)를 계산한다.
이는 에이다부스트 원리와 동일하다.
step2
j번째 예측기의 가중치를 계산한다.
cf. SAMME 알고리즘 예측기 가중치 유도 과정
이때 SAMME 알고리즘에서 예측기의 가중치 계산 식은 에이다부스트 알고리즘과 비슷하다.
log(K-1) 항이 추가되었을 뿐이다. log(K-1) 항이 추가된 이유는 다음과 같다.

step3
예측기의 가중치를 적용해 샘플의 가중치를 업데이트 한다.
step4
모든 샘플의 가중치 정규화한다.
step5
모든 예측기 생성 후, SAMME 바탕의 예측 과정은 다음과 같다.
SAMME는 투표기반 앙상블처럼 실제 예측한 클래스 수가 많은 클래스를 예측값으로 선택한다. (에이다부스트와 동일)
그래서 나중에 생성된 모델의 가중치를 낮게 설정하도록 alpha 식이 구성되어있다.
■ SAMME.R
예측기가 클래스의 확률을 추정할 수 있다면, 사이킷런은 SAMME.R 을 사용한다.
이 알고리즘은 예측할 때 클래스 값 대신 클래스 확률 기반하여 일반적으로 성능이 더 좋다.
step1
j번째 예측기 훈련 후 훈련 데이터에 대해 각 클래스(K) 에 속할 확률을 추정한다.
cf. j번째 예측기의 각 클래스 추정 확률 과정
step2
훈련 데이터 X(i)에 대한 샘플의 가중치를 업데이트 한다.
step3
모든 샘플의 가중치 정규화한다.
step4
모든 예측기 생성 후 훈련 데이터에 대해 최종 예측하는 과정은 다음과 같다.
예측기 별 클래스 확률을 계산해서 합한 후 확률이 가장 높은 클래스를 선택한다.
SAMME.R은 확률기반으로 예측하므로 예측할 때, 모든 예측기의 가중치를 1로 두고 계산한다.
from sklearn.ensembles import AdaBoostClassifier
ada_clf = AdaBoosClassifier(DecisionTreeClassifier(max_depth=1),
n_estimators=200,
algorithm='SAMME.R',
learning_rate=0.5)
에이다부스트 앙상블이 훈련 세트에 과대 적합되면 추정기의 수를 줄이거나 추정기의 규제를 더 강하게 해본다.
4.2 AdaBoostRegressor
사이킷런에서 AdaBoostRegressor 를 통해 에이다부스트 회귀 모델 구현할 수 있다.
AdaBoostRegressor는 AdaBoost.R2 알고리즘을 사용한다.
■ R2
step1
첫 번째 예측기가 학습되고, 예측기의 신뢰도를 측정한다.
v(j) 는 는 j번째 예측기가 만드는 평균 오차이다.
사이킷런 AdaBoosRegressor 클래스에서 매개 변수 loss 값에 따라 다르게 계산된다.
step2
예측기의 신뢰도를 바탕으로 j번째 예측기의 가중치를 계산한다.
step3
예측기의 신뢰도와 예측기의 평균 오차를 바탕으로 i번째 샘플의 가중치를 업데이트 한다.
step4
예측기의 결과값을 순서대롤 정렬하여 놓고, 각 예측기 가중치의 누적값이 중간이 되는 지점에서 예측기의 결과로 사용한다.
from sklearn.ensembles import AdaBoostRegressor
ada_reg = AdaBoostRegressor(DecisionTreeRegressor(),
n_estimators=200,
learning_rate=0.5,
loss='linear')
'Machine Learning > 2. 지도 학습 알고리즘' 카테고리의 다른 글
[모델 알고리즘][앙상블 학습] 스태킹 (0) | 2021.08.13 |
---|---|
[모델 알고리즘][앙상블 학습] 그레이디언트 부스팅 (0) | 2021.08.13 |
[모델 알고리즘][앙상블 학습] 랜덤포레스트 (0) | 2021.08.13 |
[모델 알고리즘][앙상블 학습] 배깅, 페이스팅 (0) | 2021.08.13 |
[회귀] 결정 트리 회귀 모델 (0) | 2021.08.13 |