게시일: 2024년 5월 9일
기고자: 에다 카블라코글루(Eda Kavlakoglu), 에리카 루시(Erika Russi)
XGBoost(eXtreme Gradient Boosting)는 경사하강법을 활용하는 지도 학습 부스팅 알고리즘인 그레이디언트 부스트 Decision Trees를 사용하는 분산형 오픈 소스 머신 러닝 라이브러리입니다. 속도, 효율성, 대규모 데이터 세트에 대한 확장성이 뛰어난 것으로 잘 알려져 있습니다.
워싱턴 대학교의 티안치 첸(Tianqi Chen)이 개발한 XGBoost는 동일한 일반 프레임워크를 사용하여 그레이디언트 부스팅을 고급으로 구현한 것입니다. 즉, 잔차를 더하여 약한 학습기 트리를 강한 학습기로 결합합니다. 이 라이브러리는 C++, Python, R, Java, Scala 및 Julia에서 사용할 수 있습니다.1
Decision Trees는 머신 러닝에서 분류 또는 회귀 작업에 사용됩니다. 내부 노드는 기능을, 분기는 의사 결정 규칙을, 각 리프 노드는 데이터 세트의 결과를 나타내는 계층적 트리 구조를 사용합니다.
Decision Trees는 과적합되기 쉽기 때문에 부스팅과 같은 앙상블 방법을 사용하여 더 견고한 모델을 만들 수 있습니다. 부스팅은 여러 개의 개별 약한 트리, 즉 무작위 확률보다 약간 더 나은 성능을 보이는 모델을 결합하여 강한 학습기를 형성합니다. 각 약한 학습기는 이전 모델에서 발생한 오류를 수정하기 위해 순차적으로 학습합니다. 수백 번의 반복 후 약한 학습기는 강한 학습기로 변환됩니다.
랜덤 포레스트와 부스팅 알고리즘은 모두 개별 학습기 트리를 사용하여 예측 성능을 향상하는 인기 있는 앙상블 학습 기법입니다. 랜덤 포레스트는 배깅(부트스트랩 집계) 개념을 기반으로 하며 각 트리를 독립적으로 학습시켜 예측을 결합하지만, 부스팅 알고리즘은 약한 학습기가 순차적으로 학습되어 이전 모델의 실수를 수정하는 가산적 접근 방식을 사용합니다.
그레이디언트 부스트 decision trees는 경사하강법을 활용하는 부스팅 알고리즘의 한 유형입니다. 다른 부스팅 방법론과 마찬가지로 그레이디언트 부스팅은 약한 학습기로 예측을 시작합니다. 그레이디언트 부스팅의 첫 번째 Decision Trees를 기본 학습기라고 합니다. 그다음, 기본 학습기의 실수를 기반으로 새로운 트리가 추가 방식으로 생성됩니다. 그런 다음 알고리즘은 각 트리의 예측에 대한 잔차를 계산하여 모델의 예측이 실제와 얼마나 차이가 나는지 확인합니다. 잔차는 모델의 예측값과 실제 값의 차이입니다. 그런 다음 잔차를 집계하여 손실 함수를 사용하여 모델에 점수를 매깁니다.
머신 러닝에서 손실 함수는 모델의 성능을 측정하는 데 사용됩니다. 그레이디언트 부스트 Decision Trees의 그레이디언트는 경사하강법을 의미합니다. 경사하강법은 새 모델을 학습할 때 손실을 최소화하는 데(즉, 모델의 성능을 향상하는 데) 사용됩니다. 경사하강법은 머신 러닝 문제에서 손실 함수를 최소화하는 데 널리 사용되는 최적화 알고리즘입니다. 손실 함수의 예로는 회귀 문제에 대한 평균 제곱 오차 또는 평균 절대 오차, 분류 문제에 대한 교차 엔트로피 손실 또는 특정 사용 사례 및 데이터 세트에 대한 사용자 지정 손실 함수가 있습니다.
AI 채택을 가로막는 장벽, 특히 AI 거버넌스 및 위험 관리 솔루션의 부족에 대해 알아보세요.
책임감 있는 AI 워크플로에 대한 eBook 등록하기
다음은 Python에서 XGBoost의 몇 가지 기능에 대해 설명하며, 이는 사이킷런(scikit-learn)의 일반 그레이디언트 부스팅 패키지와 비교하여 눈에 띄는 점입니다.2
이 섹션에서는 XGBoost 패키지 사용 방법, XGBoost 트리 부스터의 초매개변수 선택 방법, XGBoost를 다른 부스팅 구현과 비교하는 방법 및 일부 사용 사례에 대해 설명합니다.
데이터에 대한 탐색적 데이터 분석을 이미 수행했다고 가정하고, 학습 데이터 세트와 테스트 데이터 세트 간에 데이터를 계속 나눕니다. 그런 다음, 데이터를 XGBoost가 예상하는 DMatrix 형식으로 변환합니다3. DMatrix는 메모리 효율성과 학습 속도에 최적화된 XGBoost의 내부 데이터 구조입니다4.
그런 다음 XGBoost 모델을 인스턴스화하고 사용 사례에 따라 'object' 초매개변수를 통해 사용할 목적 함수를 선택합니다. 예를 들어 다중 클래스 분류 작업이 있는 경우 목적을 "multi:softmax"로 설정해야 합니다5. 또는 이진 분류 문제가 있는 경우 로지스틱 회귀 목적 "binary:logistic"을 사용할 수 있습니다. 이제 학습 집합을 사용하여 모델을 학습시키고 테스트 세트와 별도로 데이터 세트에 대한 분류를 예측할 수 있습니다. 예측된 값과 테스트 세트의 실제 값을 비교하여 모델의 성능을 평가합니다. 정확도, 정밀도, 재현률 또는 f-1 점수와 같은 메트릭을 사용하여 모델을 평가할 수 있습니다. 혼동 행렬을 사용하여 참 양성, 참 음성, 거짓 양성 및 거짓 음성을 시각화할 수도 있습니다.
다음으로 초매개변수 조합을 반복하여 모델의 성능을 향상할 수 있습니다. 초매개변수 튜닝은 머신 러닝 알고리즘의 초매개변수를 최적화하는 프로세스입니다. 최상의 초매개변수는 그리드 검색 및 교차 검증 방법을 사용하여 찾을 수 있으며, 이는 가능한 초매개변수 조합의 사전을 통해 반복합니다.
다음은 XGBoost에서 그레이디언트 부스트 트리를 조정하는 데 사용할 수 있는 일부 초매개변수에 대한 설명입니다.
XGBoost 알고리즘을 사용하여 분류 작업을 수행하는 이 튜토리얼을 살펴보세요.
XGBoost는 사용 가능한 많은 오픈 소스 부스팅 알고리즘 중 하나입니다. 이 섹션에서는 XGBoost를 세 가지 다른 부스팅 프레임워크와 비교해 보겠습니다.
AdaBoost는 1995년 요아브 프룬드(Yoav Freund)와 로버트 샤파이어(Robert Schapire)가 발명한 초기 부스팅 알고리즘입니다7. AdaBoost에서는 예측하기 어려운 데이터 포인트에 더 큰 영향을 미치는 가중치 시스템을 통해 잘못된 예측에 더 중점을 둡니다. 먼저 데이터 세트의 각 데이터 포인트에 특정 가중치가 할당됩니다. 약한 학습기가 예제를 정확하게 예측하면 예제의 가중치가 감소합니다. 그러나 학습기가 예제를 잘못 예측하면 해당 데이터 포인트에 대한 가중치가 증가합니다. 새 트리가 생성되면 해당 가중치는 이전 학습기 트리의 오분류를 기반으로 합니다. 학습기 수가 증가함에 따라 예측하기 쉬운 샘플은 향후 학습기에 덜 사용되고, 예측하기 어려운 데이터 포인트는 더 두드러지게 가중치가 부여됩니다. 그레이디언트 부스팅과 XGBoost는 정확도와 속도 측면에서 AdaBoost보다 더 강력한 대안으로 여겨집니다.
CatBoost는 또 다른 그레이디언트 부스팅 프레임워크입니다. 2017년 Yandex에서 개발했으며, 전처리 없이 범주형 기능을 처리하는 데 특화되어 있고 일반적으로 광범위한 초매개변수 튜닝을 수행할 필요 없이 바로 사용할 수 있습니다.8 XGBoost와 마찬가지로 CatBoost는 누락된 데이터를 처리하기 위한 지원 기능이 내장되어 있습니다. CatBoost는 범주형 기능이 많은 데이터 세트에 특히 유용합니다. Yandex에 따르면, 해당 프레임워크는 검색, 추천 시스템, 개인 어시스턴트, 자율 주행 자동차, 날씨 예측 및 기타 작업에 사용됩니다.
XGBoost 및 그레이디언트 부스트 Decision Trees는 다음을 포함한 다양한 데이터 과학 애플리케이션에서 사용됩니다.
1 "Scalable and Flexible Gradient Boosting", https://xgboost.ai/ (ibm.com 외부 링크).
2 Tianqi Chen and Carlos Guestrin, "XGBoost: A Scalable Tree Boosting System," University of Washington, 2016년 6월 10일, https://arxiv.org/pdf/1603.02754 (ibm.com 외부 링크).
3 "XGBoost Python Package Introduction, Data Interface", https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface (ibm.com 외부 링크).
4 "XGBoost API Reference, Core Data Structure", https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core (ibm.com 외부 링크.
5 "XGBoost Parameters, Learning Task Parameters", https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters (ibm.com 외부 링크).
6 "XGBoost Parameters for Tree Booster", https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster (ibm.com 외부 링크).
7 Yoav Freund and Robert E. Schapire, "A decision-theoretic generalization of on-line learning and an application to boosting," Journal of Computer and System Sciences, Vol. 55, pp. 119–139, August 1997.
8 "CatBoost is a high-performance open source library for gradient boosting on decision trees", https://catboost.ai/ (ibm.com 외부 링크).
9 Qi Meng, Guolin Ke, Taifeng Wang, Wei Chen, Qiwei Ye, Zhi-Ming Ma and Tie-Yan Liu, "A Communication-Efficient Parallel Algorithm for Decision Tree", Peking University, Microsoft Research and Chinese Academy of Mathematics and Systems Science, 2016년 11월 4일, https://arxiv.org/pdf/1611.01276 (ibm.com 외부 링크).
10 "LightGBM Features, Leaf-wise (Best-first) Tree Growth", https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth (ibm.com 외부 링크).
11 "XGBoost Tutorials, Learning to Rank Overview", https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview (ibm.com 외부 링크).
12 AlAli Moneera, AlQahtani Maram, AlJuried Azizah, Taghareed AlOnizan, Dalia Alboqaytah, Nida Aslam and Irfan Ullah Khan, "Click through Rate Effectiveness Prediction on Mobile Ads Using Extreme Gradient Boosting", College of Computer Science and Information Technology, Imam Abdulrahman bin Faisal University, 2020년 9월 12일, https://www.techscience.com/cmc/v66n2/40673/html (ibm.com 외부 링크).
13 Yetunde Faith Akande, Joyce Idowu, Abhavya Gautam, Sanjay Misra, Oluwatobi Noah Akande and Ranjan Kumar Behera, "Application of Xgboost Algorithm for Sales Forecasting Using Walmart Dataset", Landmark University, Ladoke Akintola University of Technology, Brandan University, Covenant University and XIM University, 2022년 6월, https://www.researchgate.net/publication/361549465_Application_of_XGBoost_Algorithm_for_Sales_Forecasting_Using_Walmart_Dataset (ibm.com 외부 링크).
14 Jakub Palša, Norbert Ádám, Ján Hurtuk, Eva Chovancová, Branislav Madoš, Martin Chovanec and Stanislav Kocan, "MLMD—A Malware-Detecting Antivirus Tool Based on the XGBoost Machine Learning Algorithm," MDPI.com Journal of Applied Sciences, Vol 12, 6672, 2022년 7월 1일, https://www.mdpi.com/2076-3417/12/13/6672 (ibm.com 외부 링크).
15 "Distributed (Deep) Machine Learning Community XGBoost Machine Learning Challenge Winning Solutions", https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions (ibm.com 외부 링크).