XGBoost가 급격히 인기가 높아진 이유는 캐글(Kaggle) 대회에서 유례없는 성공을 거둔 영향이 큽니다.
캐글 대회에서는 참가자들이 최상의 예측을 만들고 상금을 타기 위해 머신러닝 모델을 만드는데요. 다른 모델과 비교할 때 XGBoost가 대회에서 압도적으로 우승을 많이 했다고 합니다.
XGBoost에 대해 알아보기 전에 캐글 대회는 도대체 어떤 대회인지부터 살펴보겠습니다.
[출처: www.kaggle.com]
캐글 대회는 특정 문제를 풀도록 설계된 머신러닝 경연 대회입니다. 2006년 넷플릭스가 영화 추천 알고리즘의 성능을 10% 향상한 사람에게 1백만 달러를 상금으로 걸면서 머신러닝 경연 대회가 유명해졌습니다.
(2009년 BellKor의 Pragmatic Chaos 팀이 백만 달러 상금을 받았습니다. 대략 원화로 치면 12억이 넘겠네요.)
많은 비즈니스, 컴퓨터 과학자, 수학자, 학생들이 사회에서 머신러닝의 가치가 증가하는 것을 인지하기 시작했습니다.
머신러닝 대회의 인기가 높아지면서 대회를 개최하는 회사와 머신러닝 기술자에게 모두 이익이 발생했죠. (상금도 타고, 기술도 개발하고...) 2010년부터 일찌감치 이런 분위기를 체감한 기술자들은 하나 둘, 머신러닝 대회에 참가하기 위해 캐글에 가입하기 시작합니다.
캐글 대회에서는 훈련 데이터와 점수 측정 방법이 제공됩니다. 팀은 훈련 데이터에서 머신러닝 모델을 만들고 그 결과를 제출합니다. 테스트 데이터의 타깃은 제공되지 않습니다. 하지만 여러 번 제출할 수 있으며 반환되는 점수를 확인하고 참가자들은 데드라인까지 모델을 개선할 수 있습니다.
캐글 대회는 머신러닝 알고리즘을 테스트하기 위한 좋은 토대를 제공합니다. 산업 분야와 다르게 캐글 대회에서는 수천 명의 경쟁자들이 우승한 머신러닝 모델을 테스트하는 데 매우 열정적으로 참여합니다.
2014년 캐글은 ATLAS와 함께 힉스 보손 머신러닝 챌린지(https://www.kaggle.com/c/higgs-boson)를 열었습니다. $13,000 상금이 걸린 이 대회에 1,875 팀이 참가했습니다.
힉스 보손 대회가 열리기 6개월 전인 2014년 3월 27일 XGBoost가 공식적으로 릴리스되었습니다. 그리고 힉스 보손 대회에 참가해 좋은 성적을 거둔 이들이, XGBoost를 활용해서 시간을 절약하고 캐글 리더보드에도 올랐다는 것이 알려지면서 많은 관심을 받게 되었습니다.
XGBoost는 익스트림 그레이디언트 부스팅(Extreme Gradient Boosting)의 약자입니다. 익스트림은 '정확도'와 '속도'를 달성하기 위해 계산량을 극대화하는 것을 의미합니다. 그러니까, XGBoost는 그레이디언트 부스팅을 크게 업그레이드한 모델이라고 할 수 있죠.
익스트림한 그레이디언트 부스팅, 그러니까 XGBoost의 장점을 이해하려면 그레이디언트 부스팅의 작동 방식을 알아야 합니다. 그 전에 머신러닝 알고리즘에 등장하는 '부스팅'에 대해 조금 짚고 넘어가죠.
컴퓨팅 성능의 발전으로 1990년대와 2000년대 초에 랜덤 포레스트(random forest)와 에이다부스트(AdaBoost) 같은 새로운 머신러닝 알고리즘을 소개하는 논문이 많이 등장합니다.
부스팅(boosting)의 일반적인 아이디어는 약한 학습기(weak learner)를 반복해 오차를 개선하여 강한 학습기로 바꾸는 것입니다. 그레이디언트 부스팅(gradient boosting)의 핵심 아이디어는 경사 하강법(gradient descent)을 사용해 잔여 오차를 최소화하는 것이었습니다.
XGBoost의 경쟁 도구인 랜덤 포레스트는 XGBoost와 마찬가지로 결정 트리의 앙상블입니다.
차이점은 랜덤 포레스트는 배깅(bagging)을 통해 트리를 연결하고 XGBoost는 부스팅(boosting)을 통해 트리를 연결하는 것입니다.
각각 장점과 단점이 있지만 랜덤 포레스트는 개별 트리에 제약이 있습니다. 모든 트리가 동일한 실수를 저지르면 랜덤 포레스트도 실수를 합니다.
만약 데이터를 섞기 전에 이런 상황이 발생하면 개별 트리가 해결할 수 없는 데이터 내의 문제 때문에 랜덤 포레스트의 성능이 향상될 수 없게 됩니다.
에이다부스트는 인기 있는 초기 부스팅 모델 중 하나입니다. 이 모델에서는 새로운 트리가 이전 트리의 오차를 기반으로 가중치를 조정합니다. 오류 샘플의 가중치를 높여 잘못된 예측에 더 많은 주의를 기울이게 되죠.
에이다부스트는 실수에서 학습하기 때문에 약한 학습기를 강력한 학습기로 만들 수 있습니다. 약한 학습기를 강력한 학습기로 변환하는 것이 부스팅 알고리즘의 일반적인 아이디어입니다.
(약한 학습기는 우연보다 조금 나은 성능을 내는 머신러닝 모델을 말합니다. 강한 학습기는 많은 양의 데이터에서 학습하여 매우 잘 수행되는 모델입니다.)
약한 학습기로 시작하는 데는 목적이 있습니다. 일반적으로 부스팅은 강력한 기반 모델을 만드는 것이 아니라 반복적으로 오류를 고치는 데 초점을 맞추기 때문이죠. 기반 모델이 너무 강력하면 학습 과정이 제한되어 부스팅 모델의 전략이 약화됩니다.
수백 번의 반복을 통해 약한 학습기가 강력한 학습기로 바뀝니다. 즉, 작은 성능 개선을 오래 지속하는 것이 골자입니다.
사실 부스팅은 지난 수십년 동안 최적의 결과를 만드는 점에서 가장 뛰어난 머신러닝 전략 중 하나로 꼽힙니다.
빅데이터 관리가 가속화되면서 정확하고 최적의 예측을 만드는 최고의 머신러닝 알고리즘을 찾는 일이 시작되었습니다. 그런데 결정 트리는 너무 정확해서 새로운 데이터에 잘 일반화되지 않은 머신러닝 모델을 만들게 됩니다.
앙상블 방법은 배깅과 부스팅을 통해 많은 결정 트리를 연결하기 때문에 더 효과적이라고 입증되었습니다. 그런 트리 앙상블 중에서 선두에 있는 알고리즘이 '그레이디언트 부스팅'입니다.
그레이디언트 부스팅은 에이다부스트와 다른 전략을 사용합니다. 그레이디언트 부스팅도 잘못된 예측을 기반으로 조정되지만 한 단계 더 나아갑니다.
그레이디언트 부스팅은 이전 트리의 예측 오차를 기반으로 완전히 새로운 트리를 훈련합니다. 즉, 그레이디언트 부스팅은 각 트리의 실수를 살펴보고 이런 실수에 대한 완전한 새로운 트리를 만듭니다. 새로운 트리는 올바르게 예측된 값에는 영향을 받지 않습니다.
오차에만 초점을 맞추는 머신러닝 알고리즘을 만들려면 정확한 최종 예측을 만들기 위해 오차를 계산하는 방법이 필요합니다. 이런 방법은 모델의 예측과 실제 값 사이의 차이인 잔차(residual)를 활용합니다.
그레이디언트 부스팅은 각 트리 예측 값을 더해 더해 모델 평가에 사용합니다. 이는 그레이디언트 부스팅의 고급 버전인 XGBoost의 핵심이므로 트리의 예측을 계산하고 더하는 것을 이해하는 것이 중요합니다.
워싱톤 대학교의 티엔치 첸(Tianqi Chen)은 그레이디언트 부스팅의 일관성, 성능, 뛰어난 결과를 더 향상시켰습니다. 새로운 이 알고리즘의 이름을 익스트림 그레이디언트 부스팅의 줄임말인 XGBoost라고 불렀습니다. 첸의 그레이디언트 부스팅 방식에는 내장된 규제와 속도 향상이 포함되어 있습니다.
2016년 캐글 대회에서 성공을 거둔 후 티엔치 첸과 카를로스 게스트린(Carlos Guestrin)은 「XGBoost: A Scalable Tree Boosting System」 논문으로 머신러닝 커뮤니티에 이 알고리즘을 소개합니다.
앞서 언급했듯이 XGBoost는 일반적인 구조는 동일한 그레이디언트 부스팅의 고급 버전입니다. 즉 잔차로부터 훈련한 트리를 추가하여 약한 학습기를 강력한 학습기로 바꿉니다.
머신러닝 모델을 만들 때 매우 중요한 두 가지 요소로 '성능'과 '속도'를 꼽을 수 있습니다. XGBoost가 일반적으로 그레이디언트 부스팅보다 선호되는 이유는 더 좋은 성능을 내고 더 빠르기 때문입니다.
그레이디언트 부스팅은 랜덤 포레스트의 알고리즘이 가진 여러 결점을 보완하는 매력적인 대안으로, 예측 분석 도구 상자 안에 있는 강력한 기술입니다. XGBoost는 그런 그레이디언트 부스팅 중에서 매우 유연하고 성공적으로 구현된 고급 기술이죠.
XGBoost는 이미 산업계와 학계 모두에서 중요한 위치를 차지하고 있을 뿐만 아니라, 수치형과 범주형 특성을 포함한 구조적인 테이블 형태 데이터를 기반으로 하는 데이터 분석 대회에서 꾸준히 (아마도) 최고 성능의 알고리즘으로 선정되고 있습니다.
앞서 소개한 것처럼 캐글 대회는 머신러닝 기술자들이 최고의 점수를 내고 상금을 받기 위해 경쟁하는 머신러닝 대회입니다.
XGBoost는 캐글 대회에서 큰 성과를 거두어 최고의 머신러닝 알고리즘으로 명성을 얻었습니다. 2014년 힉스 보손 대회에 처음 등장했을 때, 바로 리더보드에 오르며 캐글 대회에서 가장 인기있는 머신러닝 알고리즘 중 하나가 되었죠.
특히 XGBoost는 신경망을 사용하는 딥러닝 모델과 함께 우승 솔루션의 앙상블에 자주 등장하고 있습니다.
2014~2018년 사이에는 이미지나 텍스트 같이 비구조적인 데이터가 아니라 행과 열로 구성된 테이블 형태의 데이터를 사용한 대회에서도 XGBoost는 지속적으로 다른 알고리즘을 앞섰습니다.
캐글 대회에서 XGBoost를 사용해 우승한 사례는 DMLC 깃허브에서 확인할 수 있습니다. 더 많은 목록은 캐글 대회 우승 솔루션 노트북에서 확인할 수도 있고요.
이 글은 <XGBoost와 사이킷런을 활용한 그레이디언트 부스팅> 도서 내용 일부를 발췌 편집하여 작성되었습니다. XGBoost를 사용하여 오차는 최소화하고 속도는 최대화한 고성능 머신러닝 모델을 구축하는 방법은 하기 책에서 만나볼 수 있습니다.
최신 콘텐츠