topics XGBoost XGBoost란 무엇인가요?
watsonx.ai와 함께 XGBoost 사용 AI 업데이트 구독
구름 픽토그램, 파이 차트, 그래프 픽토그램이 콜라주된 일러스트

게시일: 2024년 5월 9일
기고자: 에다 카블라코글루(Eda Kavlakoglu), 에리카 루시(Erika Russi)

XGBoost란 무엇인가요?

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는 경사하강법을 활용하는 부스팅 알고리즘의 한 유형입니다. 다른 부스팅 방법론과 마찬가지로 그레이디언트 부스팅은 약한 학습기로 예측을 시작합니다. 그레이디언트 부스팅의 첫 번째 Decision Trees를 기본 학습기라고 합니다. 그다음, 기본 학습기의 실수를 기반으로 새로운 트리가 추가 방식으로 생성됩니다. 그런 다음 알고리즘은 각 트리의 예측에 대한 잔차를 계산하여 모델의 예측이 실제와 얼마나 차이가 나는지 확인합니다. 잔차는 모델의 예측값과 실제 값의 차이입니다. 그런 다음 잔차를 집계하여 손실 함수를 사용하여 모델에 점수를 매깁니다.

머신 러닝에서 손실 함수는 모델의 성능을 측정하는 데 사용됩니다. 그레이디언트 부스트 Decision Trees의 그레이디언트는 경사하강법을 의미합니다. 경사하강법은 새 모델을 학습할 때 손실을 최소화하는 데(즉, 모델의 성능을 향상하는 데) 사용됩니다. 경사하강법은 머신 러닝 문제에서 손실 함수를 최소화하는 데 널리 사용되는 최적화 알고리즘입니다. 손실 함수의 예로는 회귀 문제에 대한 평균 제곱 오차 또는 평균 절대 오차, 분류 문제에 대한 교차 엔트로피 손실 또는 특정 사용 사례 및 데이터 세트에 대한 사용자 지정 손실 함수가 있습니다.

AI 거버넌스가 엔터프라이즈 AI 확장을 위해 비즈니스에 필수적인 이유

AI 채택을 가로막는 장벽, 특히 AI 거버넌스 및 위험 관리 솔루션의 부족에 대해 알아보세요.

관련 내용

책임감 있는 AI 워크플로에 대한 eBook 등록하기

XGBoost의 기능

다음은 Python에서 XGBoost의 몇 가지 기능에 대해 설명하며, 이는 사이킷런(scikit-learn)의 일반 그레이디언트 부스팅 패키지와 비교하여 눈에 띄는 점입니다.2

  • 병렬 및 분산 컴퓨팅: 라이브러리는 블록이라는 인메모리 단위로 데이터를 저장합니다. 개별 블록을 여러 컴퓨터에 분산하거나 아웃오브코어 컴퓨팅을 사용하여 외부 메모리에 저장할 수 있습니다. 또한 XGBoost는 계산 속도를 높이기 위해 여러 컴퓨터 클러스터에 분산된 학습과 같은 고급 사용 사례도 지원합니다. Apache Spark, Dask 또는 Kubernetes와 같은 툴을 사용하여 분산 모드로 구현할 수도 있습니다.
  • 캐시 인식 사전 페칭 알고리즘: XGBoost는 대규모 데이터 세트의 런타임을 줄이는 데 도움이 되는 캐시 인식 사전 페칭 알고리즘을 사용합니다. 라이브러리는 단일 시스템에서 다른 기존 프레임워크보다 10배 이상 빠르게 실행할 수 있습니다. 인상적인 속도 덕분에 XGBoost는 더 적은 리소스를 사용하여 수십억 개의 예제를 처리할 수 있으므로 확장 가능한 트리 부스팅 시스템이 됩니다.
  • 정규화 기능 내장: 일반 그레이디언트 부스팅과 달리 XGBoost는 학습 목표의 일부로 정규화를 포함합니다. 초매개변수 튜닝을 통해 데이터를 정규화할 수도 있습니다. XGBoost에 내장된 정규화를 사용하면 라이브러리가 일반 사이킷런(scikit-learn) 그레이디언트 부스팅 패키지보다 더 나은 결과를 제공할 수 있습니다.
  • Missing Values 처리: XGBoost는 희소 데이터에 희소성 인식 알고리즘을 사용합니다. 데이터 세트에 값이 누락된 경우 데이터 포인트는 기본 방향으로 분류되고 알고리즘은 누락된 값을 처리하기 위한 최적의 방향을 학습합니다.
XGBoost 작동 방식

이 섹션에서는 XGBoost 패키지 사용 방법, XGBoost 트리 부스터의 초매개변수 선택 방법, XGBoost를 다른 부스팅 구현과 비교하는 방법 및 일부 사용 사례에 대해 설명합니다.

데이터 분할 및 DMatrix 형식으로 변환

데이터에 대한 탐색적 데이터 분석을 이미 수행했다고 가정하고, 학습 데이터 세트와 테스트 데이터 세트 간에 데이터를 계속 나눕니다. 그런 다음, 데이터를 XGBoost가 예상하는 DMatrix 형식으로 변환합니다3. DMatrix는 메모리 효율성과 학습 속도에 최적화된 XGBoost의 내부 데이터 구조입니다4.

모델 생성 및 평가

그런 다음 XGBoost 모델을 인스턴스화하고 사용 사례에 따라 'object' 초매개변수를 통해 사용할 목적 함수를 선택합니다. 예를 들어 다중 클래스 분류 작업이 있는 경우 목적을 "multi:softmax"로 설정해야 합니다5. 또는 이진 분류 문제가 있는 경우 로지스틱 회귀 목적 "binary:logistic"을 사용할 수 있습니다. 이제 학습 집합을 사용하여 모델을 학습시키고 테스트 세트와 별도로 데이터 세트에 대한 분류를 예측할 수 있습니다. 예측된 값과 테스트 세트의 실제 값을 비교하여 모델의 성능을 평가합니다. 정확도, 정밀도, 재현률 또는 f-1 점수와 같은 메트릭을 사용하여 모델을 평가할 수 있습니다. 혼동 행렬을 사용하여 참 양성, 참 음성, 거짓 양성 및 거짓 음성을 시각화할 수도 있습니다.

초매개변수 조정

다음으로 초매개변수 조합을 반복하여 모델의 성능을 향상할 수 있습니다. 초매개변수 튜닝은 머신 러닝 알고리즘의 초매개변수를 최적화하는 프로세스입니다. 최상의 초매개변수는 그리드 검색 및 교차 검증 방법을 사용하여 찾을 수 있으며, 이는 가능한 초매개변수 조합의 사전을 통해 반복합니다.

XGBoost에서 그레이디언트 부스트 트리에 대해 선택된 초매개변수

다음은 XGBoost에서 그레이디언트 부스트 트리를 조정하는 데 사용할 수 있는 일부 초매개변수에 대한 설명입니다.

  • learing rate ('단계 크기' 또는 '축소'라고도 함)는 가장 중요한 그레이디언트 부스팅 초매개변수입니다. XGBoost 라이브러리에서는 'eta'라고 하며 0에서 1 사이의 숫자여야 하며 기본값은 0.3입니다6. learning rate는 부스팅 알고리즘이 각 반복에서 학습하는 속도를 결정합니다. eta 값이 낮을수록 앙상블에서 각 트리의 기여도를 축소하므로 학습 속도가 느려져 과적합을 방지하는 데 도움이 됩니다. 반대로 eta 값이 클수록 학습 속도는 빨라지지만 신중하게 조정하지 않으면 과적합으로 이어질 수 있습니다.
  • n_estimators 초매개변수는 앙상블에 구축할 트리의 수를 지정합니다. 각 부스팅 라운드는 앙상블에 새 트리를 추가하고 모델은 이전 트리에서 만든 오류를 수정하는 방법을 천천히 학습합니다. n_estimators는 모델의 복잡성을 결정하고, 학습 시간과 모델이 보이지 않는 데이터에 대해 일반화하는 능력에 영향을 미칩니다. n_estimators 값을 늘리면 일반적으로 모델이 데이터에서 더 복잡한 패턴을 캡처할 수 있으므로 모델의 복잡성이 증가합니다. 그러나 트리를 너무 많이 추가하면 과적합이 발생할 수 있습니다. 일반적으로 n_estimators가 증가함에 따라 learning rate는 감소해야 합니다.
  • gamma (라그랑주 승수 또는 최소 손실 감소 매개변수라고도 함)는 트리의 리프 노드에서 추가 분할을 하는 데 필요한 최소 손실 감소량을 제어합니다. 값이 작을수록 XGBoost가 더 일찍 멈추지만 최적의 솔루션을 찾지 못할 수 있고, 값이 클수록 더 오래 학습하여 더 나은 솔루션을 찾을 수 있지만 과적합의 위험이 더 커질 수 있습니다. gamma에는 상한이 없습니다. XGBoost의 기본값은 0이며 10을 초과하면 큰 것으로 간주됩니다.
  • max_depth는 부스팅 프로세스에서 각 트리가 학습 중에 얼마나 깊게 성장할 수 있는지를 나타냅니다. 트리의 깊이는 루트 노드에서 리프 노드까지의 레벨 또는 스플릿 수를 나타냅니다. 이 값을 높이면 모델이 더 복잡해지고 과적합할 가능성이 높아집니다. XGBoost에서 기본 max_depth는 6이며, 이는 모델의 각 트리가 최대 6레벨까지 성장할 수 있음을 의미합니다.
Python에서 XGBoost 구현하기

XGBoost 알고리즘을 사용하여 분류 작업을 수행하는 이 튜토리얼을 살펴보세요.

XGBoost와 다른 부스팅 알고리즘 비교

XGBoost는 사용 가능한 많은 오픈 소스 부스팅 알고리즘 중 하나입니다. 이 섹션에서는 XGBoost를 세 가지 다른 부스팅 프레임워크와 비교해 보겠습니다.

XGBoost와 AdaBoost 비교

AdaBoost는 1995년 요아브 프룬드(Yoav Freund)와 로버트 샤파이어(Robert Schapire)가 발명한 초기 부스팅 알고리즘입니다7. AdaBoost에서는 예측하기 어려운 데이터 포인트에 더 큰 영향을 미치는 가중치 시스템을 통해 잘못된 예측에 더 중점을 둡니다. 먼저 데이터 세트의 각 데이터 포인트에 특정 가중치가 할당됩니다. 약한 학습기가 예제를 정확하게 예측하면 예제의 가중치가 감소합니다. 그러나 학습기가 예제를 잘못 예측하면 해당 데이터 포인트에 대한 가중치가 증가합니다.  새 트리가 생성되면 해당 가중치는 이전 학습기 트리의 오분류를 기반으로 합니다. 학습기 수가 증가함에 따라 예측하기 쉬운 샘플은 향후 학습기에 덜 사용되고, 예측하기 어려운 데이터 포인트는 더 두드러지게 가중치가 부여됩니다. 그레이디언트 부스팅과 XGBoost는 정확도와 속도 측면에서 AdaBoost보다 더 강력한 대안으로 여겨집니다.

XGBoost와 CatBoost 비교

CatBoost는 또 다른 그레이디언트 부스팅 프레임워크입니다. 2017년 Yandex에서 개발했으며, 전처리 없이 범주형 기능을 처리하는 데 특화되어 있고 일반적으로 광범위한 초매개변수 튜닝을 수행할 필요 없이 바로 사용할 수 있습니다.8 XGBoost와 마찬가지로 CatBoost는 누락된 데이터를 처리하기 위한 지원 기능이 내장되어 있습니다. CatBoost는 범주형 기능이 많은 데이터 세트에 특히 유용합니다. Yandex에 따르면, 해당 프레임워크는 검색, 추천 시스템, 개인 어시스턴트, 자율 주행 자동차, 날씨 예측 및 기타 작업에 사용됩니다.

XGBoost와 LightGBM 비교

마지막으로 검토할 그레이디언트 부스팅 알고리즘은 LightGBM(Light Gradient Boosting Machine)입니다. Microsoft에서 개발했으며 2016년에 처음 출시되었습니다.9 대부분의 Decision Trees 학습 알고리즘은 깊이 단위로 트리를 성장시키지만, LightGBM은 리프 단위의 트리 성장 전략을 사용합니다10. XGBoost와 마찬가지로 LightGBM은 빠른 모델 학습 속도와 정확도를 보이며 대규모 데이터 세트에서 뛰어난 성능을 발휘합니다.

XGBoost의 애플리케이션

XGBoost 및 그레이디언트 부스트 Decision Trees는 다음을 포함한 다양한 데이터 과학 애플리케이션에서 사용됩니다.

  • 랭킹 학습: XGBoost 알고리즘의 가장 인기 있는 사용 사례 중 하나는 랭커입니다. 정보 검색에서 랭킹 학습의 목표는 사용자에게 관련성에 따라 정렬된 콘텐츠를 제공하는 것입니다. XGBoost에서 XGBranker는 LambdaMART 알고리즘을 기반으로 합니다11.
  • 광고 클릭률 예측: 연구원들은 10일간의 클릭 데이터에서 온라인 광고가 얼마나 자주 클릭되었는지 파악하기 위해 XGBoost로 학습된 모델을 사용했습니다. 이 연구의 목적은 온라인 광고의 효과를 측정하고 어떤 광고가 효과적인지 정확히 파악하는 것이었습니다12.
  • 매장 매출 예측: 이 백서에서 XGBoost 모델을 사용하여 45개 Walmart 매장의 매출을 예측한 사례에서 볼 수 있듯이, 예측 모델링에 XGBoost를 사용할 수 있습니다13.
  • 맬웨어 분류: 코시체 공과대학(Technical University of Košice)의 엔지니어들은 XGBoost 분류기를 사용하여 논문에서 볼 수 있듯이 멀웨어를 정확하게 분류할 수 있었습니다14.
  • Kaggle 대회: XGBoost는 Kaggle 대회에서 인기 있는 우승 알고리즘으로, DMLC(Distributed (Deep) Machine Learning Community) 페이지에서 XGBoost를 사용하여 참가한 최근 Kaggle 대회 우승자 목록을 확인할 수 있습니다.15
관련 리소스 Decision Tree란 무엇인가요?

분류 및 회귀 작업 모두에 활용되는 비모수 지도 학습 알고리즘에 대해 알아보세요.

부스팅이란 무엇인가요?

약한 학습기를 강한 학습기로 결합하는 앙상블 학습 방법에 대해 알아보세요.

R에서 XGBoost 구현

XGBoost 알고리즘을 사용하여 분류 작업을 수행하는 이 튜토리얼을 살펴보세요.

다음 단계 안내

AI 빌더를 위한 차세대 엔터프라이즈 스튜디오인 IBM watsonx.ai로 생성형 AI, 파운데이션 모델 및 머신 러닝 기능을 학습, 검증, 조정 및 배포하세요. 적은 데이터로 짧은 시간 내에 AI 애플리케이션을 구축하세요.

watsonx.ai 살펴보기 라이브 데모 예약하기
각주

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 외부 링크).