본문 바로가기
데이터 사이언스

머신러닝에서 자주 쓰이는 Random Forest, Boosting

by 빛나는존재 2022. 4. 10.

Random Forest, bagging의 단점을 보완하다

Bagging은 복원추출을 한 관측값들을 대상으로 동일한 모든 feature를 사용하여 예측하기 때문에 tree간의 상관관계가 높아지는 단점이 있다. 이런 문제를 해결 하기 위해서 random forest 기법 에서는 tree마다 랜덤하게 전체 feature 수 P 개 중 m개 (보통 p의 제곱근)만으로 fitting 하는 획기적인 방법을 택한다. 예를 들어 모든 feature 수가 16개이면, 그 것의 제곱근은 4이므로, 결국은 tree 1개마다 4개의 feature를 16개 중에서 random 하게 선택한다. 예를 들어, 1번 tree 에서는 feature 1,4,7,11번째 를 사용, 2번 tree에서는 2,3,5,8번째를 사용 하는 등 각각의 tree 마다 다른 feature들을 적용하여 예측한다. 각 tree마다 random하게 feature들을 배정받기 때문에 이들을 모아놓은 것이 Random Forest라는 이름을 갖게 된다. Random Forest에 대해 한 번도 들어본 적이 없는 사람이라면, 왜 이런 아까운 feature들을 다 사용하지 않고 극히 일부만 사용하는지 의아해 할 수 있을 것이다. 하지만 이렇게 해야 tree들 간의 correlation이 낮아지고 실제로 Random Forest는 대체적으로 다른 기법에 비해 예측 및 분류 성능이 괜찮은 편이다.

Boosting, 틀린 것에 주목하다

Bagging과 마찬가지로 boosting도 tree 뿐 만 아니라 많은 regression, classification 에 두루 사용될 수 있는 방법인데, 일단 여기서는 tree 에 관련한 부분만 이야기하도록 한다. Bagging은 training dataset으로부터 샘플들을 복원추출하고, 각각의 복원추출된 샘플에 decision tree를 fitting하고 나중에는 그 tree들을 전부 통합해서 하나의 예측모델을 만드는 방식인 것과 대조적으로, Boosting은 tree를 순차적으로 만들어 나간다. 다시 말해, 한 tree를 이전 단계에서의 tree 로부터의 정보를 이용해서 다음 단계에서는 더 나은 tree를 천천히 만들어 나가는 것이다. Boosting 은 특이하게도, 이전 단계의 모델에서 설명되지 않은 잔차에 fitting을 하고 그 정보를 다음단계의 tree에 update 해 주는 방식이다. 이것은 마치 우리가 학생이었을 때 틀린 문제만을 모아서 그 문제를 왜 틀렸는지 복기를 하는 작업을 하여 거기서 배운 것을 토대로 다음 문제를 풀 때에는 잘 풀려는 시도와도 유사하다. (이를 한국에서는 “오답노트”라고 한다.) Boosting 에서는 나무의 개수 B, 학습 속도 lambda, depth 등의 parameter들이 사용되며 자세한 것은 다음 포스팅에서 다뤄보도록 하겠다.

모델도 중요하지만 데이터 자체의 질도 중요

위에서 설명한 두가지 분석 방법인 Random Forest 와 Boosting은 Decision tree보다 예측 성능이 뛰어나다. 요즘은 그를 응용한 Gradient boosting model, XGBoost, Light GBM 등의 또 다른 tree-based 최신 모델은 계속 나오고 있다. 그런데 사실 중요한 것은, 얼마나 좋은 모델을 쓰는지도 중요하지만 데이터 자체의 질도 중요하다는 것이다. 음식을 만드는 것에 비유하자면 모델은 칼, 음식물은 데이터와도 같다. 우리는 언제나 좀 더 예리한 칼을 만들고 싶어해서 여러가지 시행 착오 끝에 이전 칼의 단점을 보완하여 다음 단계에서 업그레이드 시킨다. 그런데 만약 그 칼로 자를 음식물이 쓰레기 수준이라면 어떨지 생각해봐야 한다. 예를 들어 케익을 자르려고 하는데 그 케익에 밀가루 말고도 모래가 들어가고 설탕이 덜 들어가고 계란이 너무 많이 들어가서 물컹하게 만들어진 케익이라면 아무리 칼이 좋아도 그 칼을 쓰는게 어색할 정도일 것이다. 그렇기 때문에, 성능 좋은 모델 찾는것도 좋지만, 데이터 자체의 퀄리티에도 신경 써야 한다는 점을 강조하고 싶다.

반응형