XGBoost란 무엇인가요?

XGBoost란 무엇인가요?

XGBoost(eXtreme Gradient Boosting)는 경사 하강법을 활용하는 지도 학습 부스팅 알고리즘인 그레이디언트 부스트 의사결정트리를 사용하는 분산형 오픈 소스 머신 러닝 라이브러리입니다. 속도, 효율성, 대규모 데이터 세트에 대한 확장성이 뛰어난 것으로 잘 알려져 있습니다.

워싱턴 대학교의 티안치 첸(Tianqi Chen)이 개발한 XGBoost는 동일한 일반 프레임워크를 사용하여 그레이디언트 부스팅을 고급으로 구현한 것입니다. 즉, 잔차를 더하여 약한 학습기 트리를 강한 학습기로 결합합니다. 이 라이브러리는 C++, Python, R, Java, Scala 및 Julia에서 사용할 수 있습니다.1

의사결정트리와 부스팅 비교

의사결정트리머신 러닝에서 분류 또는 회귀 작업에 사용됩니다. 내부 노드는 특징을, 분기는 의사 결정 규칙을­, 각 리프 노드는 데이터 세트의 결과를 나타내는 계층적 트리 구조를 사용합니다.

Decision Trees는 과적합되기 쉽기 때문에 부스팅과 같은 앙상블 방법을 사용하여 더 견고한 모델을 만들 수 있습니다. 부스팅은 여러 개의 개별 약한 트리, 즉 무작위 확률보다 약간 더 나은 성능을 보이는 모델을 결합하여 강한 학습기를 형성합니다. 각 약한 학습기는 이전 모델에서 발생한 오류를 수정하기 위해 순차적으로 학습합니다. 수백 번의 반복 후 약한 학습기는 강한 학습기로 변환됩니다.

랜덤 포레스트와 부스팅 알고리즘은 모두 개별 학습기 트리를 사용하여 예측 성능을 향상하는 인기 있는 앙상블 학습 기법입니다. 랜덤 포레스트는 배깅(부트스트랩 집계) 개념을 기반으로 하며 각 트리를 독립적으로 학습시켜 예측을 결합하지만, 부스팅 알고리즘은 약한 학습기가 순차적으로 학습되어 이전 모델의 실수를 수정하는 가산적 접근 방식을 사용합니다.

부스팅 - 순차적 앙상블 학습

그레이디언트 부스트 의사결정트리 

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

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

XGBoost의 기능

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

  • 병렬 및 분산 컴퓨팅: 라이브러리는 블록이라는 인메모리 단위로 데이터를 저장합니다. 개별 블록을 여러 컴퓨터에 분산하거나 아웃오브코어 컴퓨팅을 사용하여 외부 메모리에 저장할 수 있습니다. 또한 XGBoost는 계산 속도를 높이기 위해 여러 컴퓨터 클러스터에 분산된 학습과 같은 고급 사용 사례도 지원합니다. Apache Spark, Dask 또는 Kubernetes와 같은 툴을 사용하여 분산 모드로 XGBoost를 구현할 수도 있습니다."

  • 캐시 인식 사전 페칭 알고리즘: XGBoost는 대규모 데이터 세트의 런타임을 줄이는 데 도움이 되는 캐시 인식 사전 페칭 알고리즘을 사용합니다. 라이브러리는 단일 시스템에서 다른 기존 프레임워크보다 10배 이상 빠르게 실행할 수 있습니다. 인상적인 속도 덕분에 XGBoost는 더 적은 리소스를 사용하여 수십억 개의 예제를 처리할 수 있으므로 확장 가능한 트리 부스팅 시스템이 됩니다.

  • 정규화 기능 내장: 일반 그레이디언트 부스팅과 달리 XGBoost는 학습 목표의 일부로 정규화를 포함합니다. 하이퍼매개변수 튜닝을 통해 데이터를 정규화할 수도 있습니다. XGBoost에 내장된 정규화를 사용하면 라이브러리가 일반 사이킷런(scikit-learn) 그레이디언트 부스팅 패키지보다 더 나은 결과를 제공할 수 있습니다.

  • Missing Values 처리: XGBoost는 희소 데이터에 희소성 인식 알고리즘을 사용합니다. 데이터 세트에 값이 누락된 경우 데이터 포인트는 기본 방향으로 분류되고 알고리즘은 누락된 값을 처리하기 위한 최적의 방향을 학습합니다.

전문가가 전하는 최신 AI 트렌드

가장 중요하고 흥미로운 AI 뉴스에 대한 선별된 인사이트를 확인하세요. 주간 Think 뉴스레터를 구독하세요. IBM 개인정보 보호정책을 참조하세요.

감사합니다! 구독이 완료되었습니다.

구독은 영어로 제공됩니다. 모든 뉴스레터에는 구독 취소 링크가 있습니다. 여기에서 구독을 관리하거나 취소할 수 있습니다. 자세한 정보는 IBM 개인정보 보호정책을 참조하세요.

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레벨까지 성장할 수 있음을 의미합니다.
Mixture of Experts | 12월 12일, 에피소드 85

AI 디코딩: 주간 뉴스 요약

세계적인 수준의 엔지니어, 연구원, 제품 리더 등으로 구성된 패널과 함께 불필요한 AI 잡음을 차단하고 실질적인 AI 최신 소식과 인사이트를 확인해 보세요.

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
관련 솔루션
IBM watsonx.ai

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

watsonx.ai에 대해 알아보기
인공 지능 솔루션

업계 최고의 AI 전문성과 솔루션 포트폴리오를 보유한 IBM과 함께 AI를 비즈니스에 활용하세요.

AI 솔루션 살펴보기
AI 컨설팅 및 서비스

AI 추가를 통해 중요한 워크플로와 운영을 혁신함으로써 경험, 실시간 의사 결정 및 비즈니스 가치를 극대화합니다.

AI 서비스 살펴보기
다음 단계 안내

AI 개발 라이프사이클 전반에 걸친 기능에 원스톱으로 액세스하세요. 사용자 친화적인 인터페이스, 워크플로, 업계 표준 API 및 SDK에 대한 액세스를 통해 강력한 AI 솔루션을 제작할 수 있습니다.

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