2014년 1월 2일 목요일

Boosting 알고리즘

Boosting 알고리즘 이라는 것은 약한 learner들을 합쳐서 강한 learner로 만들어주는 알고리즘을 말한다.

그중에서 AdaBoost는 Adaptive boosting algorithm의줄임말로써,
misclassified 된 데이터에 더 높은 가중치를 주어 다음번 학습때 더 좋은 결과를 내도록 하는 것이다.

기본적인 알고리즘은 다음과 같다.


우선 데이터 x와 그것의 클래스 1 또는 -1값이있고. 초기의 가중치는 1/m으로 동일하다.

그때 1~T까지 루프를 돌면서 아래의 것을 반복한다.

어떤 classfied 되는 rule (직선?) 과 같은걸 찾는데 error값이 가장 작은걸로 잡는다.
그 error값은 만약 prediction이 틀렸을 때, 그것과 가중치를 곱한 값이고, 그것을 에러값이라고 한다.

에러값이 1/2보다 크면 랜덤보다 못하므로 그만두고, 그거보다 작다면 알파값을 계산한다.

이 알파값은 에러값이 작으면 커지는 현상으로

iteration이 증가할 수록 에러 줄어들기 때문에 알파값은 커지고, 그것에 곱해지는 가중치 D의 잘못된 prediction 결과 i는 더 높은 값을 띄게된다.

그래서 이게 T가 되거나 또는 에러가 1/2보다 커지면 종료되고,
이때 결과는 그것들의 합으로 나타나진다.

 일단은 이것이 binary classification 대상이기 때문에, multiple classification의 경우에는
AdaBoost.MH나 AdaBoost.MI와 같은것을 사용해야한다.

일단 부스팅의 개념은 이와같고, 다음은 Boosting SVM을 봐야지





















댓글 없음:

댓글 쓰기