데이터 사이언스 공부할래

[BDA 데이터 분석 모델링반 (ML 1) 18회차] 에이다 부스트(AdaBoost) 본문

B.D.A

[BDA 데이터 분석 모델링반 (ML 1) 18회차] 에이다 부스트(AdaBoost)

SeonHo Yoo 2024. 8. 27. 23:00
에이다 부스트(AdaBoost) 알고리즘에 대해 알아본다.

 

 

에이다 부스트

오류 데이터에 가중치를 부여하면서 부스팅을 수행하는 알고리즘으로, AdaBoost 학습 단계에서 모델이 잘못 예측한 샘플에 더 큰 가중치를 부여하여 더 잘 학습하도록 유도한다.

 

초기에는 모두 동일한 가중치를 가지며, 단계가 진행될수록 잘못 예측한 샘플의 가중치를 점진적으로 증가시켜 이전 학습기들이 잘못 예측한 부분을 보완하도록 유도한다.

 

AdaBoost 알고리즘

 

 

Input : Dataset D={(x1,y1),,(xN,yN)}, y(i){1,1} for i=1,,N

 

Step0 : 모든 i=1,,N에 대해, 초기 가중치는 w1(i)=1N로 설정한다.

 

Step1 : t=1,,T에 대해 아래 과정을 반복한다.

 

가중치 wt(i), i=1,,N에 따라 N개의 데이터를 훈련 집합 Dt로 설정한다.

 

Dt로 분류기 ht를 학습한 후, D에 대한 훈련 오류율 εt를 계산한다.

 

εt=i :ht(x(i))y(i)wt(i)

 

만약, εt이면, 루프를 중단한다.

 

αt=12log(1εtεt)를 계산한다.

 

잘못 분류된 예제의 가중치는 증가시키고 잘 분류된 예제의 가중치는 감소시킨다.

이때 Zt는 가중치를 정규화하기 위한 변수이다. Zt=Ni=1wt(i)exp(αty(i)ht(x(i)))

 

wt+1(i)=wt(i)Zt×{eαt,ify(i)=ht(x(i))eαt,ify(i)ht(x(i))=wt(i)Ztexp(αty(i)ht(x(i)))

 

Step2 : g(x)=Ni=1αtht(x)로 정의하며, 최종 분류기 H(x)=sgn(g(x))이다.

 


오류율 계산 과정은 예측이 틀렸을 때는 1을, 맞으면 0을 반환한다고 상상해본다.

wt(i)i번째 샘플의 가중치, ht(xi)i번째 샘플에 대한 t번째 학습기의 예측값, y(i)i번째 샘플의 실제 라벨을 의미한다.

 

예를 들어 3개의 변수 x1, x2 x3에 대해 실제 예측값은 y1=1, y2=1, y3=1 라고 가정한다.

초기 가중치는 w1(1)=1/3, w1(2)=1/3 w1(3)=1/3로 동일하다.

첫 번째 학습기가 예측한 결과가 h1(x1)=1, h1(x2)=1, h1(x3)=1 이다.

 

가중치 계산은 0 + 1*1/3 + 1*1/3 = 2/3이다.

 

오류율이 낮을수록 가중치가 커지게 된다.

 

알파값을 계산하면, 1/2ln((1-0.6667)/0.6667) = -0.34로 음수값이 나왔다.

 

이를 통해 가중치를 업데이트한다.

w2(1)=1/3(exp(0.340))=1/3, w2(2)=w2(3)=1/3(exp(0.341))=0.23 으로

 

정규화를 해보면, 0.333 + 0.23 + 0.23 = 0.8

w2(1)=0.3/0.8=0.41w2(2)=0.23/0.8=0.3w3(2)=0.23/0.8=0.3

해당 업데이트 된 가중치를 다음 학습기에 사용한다.