codestates / codestates/ds-blog

[김지연] 잘하는 애 목소리가 더 큰 알고리즘, AdaBoost(에이다부스트)

Open
#211 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
2
Forks
4
PR merge metrics
No merged PRs in 30d

Description

### 들어가며

능력주의 사회 대한민국에서는 공부 잘하는 애들 말을 더 잘들어준다. 머신러닝 세계에도 답 잘 맞추는 애들 목소리를 더 크게 해주는 알고리즘이 있다. 그 알고리즘은 바로 AdaBoost, 에이다부스트이다. 여러 개의 트리를 모아 하나의 결정 트리보다 더 좋은 모델을 만드는 앙상블 학습법 중 하나인 에이다부스트는 부스팅을 이용하여 회귀나 분류 문제를 해결한다.

### 에이다부스트의 작동 원리

에이다부스트는 다 큰 나무인 결정트리나 랜덤 포레스트들의 트리와는 다르게 하나의 노드와 두 개의 잎사귀 노드만을 갖고 있다. 그래서 완전한 나무와는 다른 에이다부스트의 트리들을 stump(그루터기, 에이다부스트의 weak learner)라고 부른다. 하나의 stump는 분석에 사용하는 요소들 중 단 하나만을 이용해 예측을 한다. 그리고 그런 stump 들이 모여서 하나하나 예측한 것을 총합하여 최종 예측을 한다.

랜덤하게 만들어지는 랜덤 포레스트의 트리와는 다르게 에이다부스트의 stump는 다음에 만들어지는 stump에 영향을 준다. 다음 stump에 영향을 줄 수 있는 이유는 관측치들에 가중치를 두는 것에 있다. 한 stump가 관측치를 분류했을 때 맞게 분류한 관측치들은 가중치를 줄이고 틀리게 분류한 관측치들은 가중치를 높임으로써 다음 stump가 만들어질 때 가중치가 높은 관측치들이 더 잘 분류될 수 있게 하는 것이다.

에이다부스트에선 관측치만 가중치를 갖지 않는다. 각 stump들도 가중치를 갖게 된다. 이 글을 시작하며 말한 목소리와도 관련이 있다. stump가 예측을 하고 난 뒤 얼마나 잘했는지를 측정하여 잘한 stump들은 더 높은 가중치를 갖는다. 그래서 최종적으로 예측을 할 때 가중치가 높은 stump가 더 높은 영향력을 갖는다. 예를 들면 stump의 반은 클래스를 0으로 분류하고 나머지 반이 1로 분류 했을 때 목소리가 더 큰 애들이(가중치가 높은 stumpa) 있는 예측결과 더 잘 들려서 그 예측 결과를 최종적으로 사용하는 것이다.

이렇게 만들어지는 에이다부스트는 계속 해서 틀리게 분류되는 노이즈나 이상치들이 가중치가 높아지기 때문에 노이즈와 이상치 분류에 약할 수 있다. 그리고 각 stump들은 좋은 예측을 하지는 못한다. 하지만 집단 지성의 힘으로 결과적으로는 좋은 성능의 예측 성능을 보여준다.

지금까지 알아본 랜덤포레스트와 에이다부스트말고도 다양한 모델이 존재하기 때문에 우리는 데이터의 특성에 따라 맞는 모델을 선택해야 한다.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.