XGBoost
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
XGBoost는 톈치 첸이 개발한, 분산 머신러닝 커뮤니티의 연구 프로젝트로 시작된 경사 부스팅 알고리즘의 구현체이다. Kaggle 머신 러닝 경진대회에서 우승 솔루션으로 사용되며 널리 알려졌으며, Python, R, Java 등 다양한 프로그래밍 언어에서 사용할 수 있도록 패키지로 제공된다. XGBoost는 트리 가지치기, 결측치 처리, 정규화, 병렬 및 분산 처리, out-of-core 컴퓨팅 등 다양한 특징을 가지며, 뉴턴-랩슨 방식을 사용하여 경사 부스팅 알고리즘을 개선했다. 뛰어난 성능과 효율성을 인정받아 존 챔버스 상 등을 수상했다.
더 읽어볼만한 페이지
- 빅 데이터 제품 - 빅쿼리
빅쿼리는 구글의 데이터 분석 서비스로, 드레멜을 기반으로 수조 행의 데이터에 대한 빠른 쿼리를 가능하게 하며, 데이터 관리, 쿼리 실행, 서비스 통합, 접근 제어, 기계 학습 기능을 제공한다. - 빅 데이터 제품 - SAP HANA
SAP HANA는 SAP SE에서 개발한 인메모리, 컬럼 지향 데이터베이스 관리 시스템으로, 빠른 데이터 처리 속도를 기반으로 온라인 트랜잭션 처리와 온라인 분석 처리를 단일 플랫폼에서 지원하며, SAP S/4HANA 등 다양한 SAP 애플리케이션 실행에 사용되고 클라우드 및 온프레미스 환경에 배포 가능하다. - 기계 학습 및 데이터 마이닝 소프트웨어 - GNU 옥타브
GNU 옥타브는 MATLAB과 높은 호환성을 가지며 수치 해석 계산을 위해 사용되는 자유-오픈 소스 소프트웨어이다. - 기계 학습 및 데이터 마이닝 소프트웨어 - SAS (소프트웨어)
SAS는 통계 분석, 데이터 마이닝, 예측 모델링 기능을 제공하는 소프트웨어 제품군으로, 농업 데이터 분석을 위해 개발되어 다양한 산업 분야에서 활용되고 있으며 인공지능 및 머신러닝 분야로 투자를 확대하고 있다. - 2014년 소프트웨어 - 아마존 알렉사
아마존 알렉사는 아마존이 개발한 인공지능 음성 비서로, 스마트홈 기기 제어, 음악 스트리밍, 정보 검색 등의 기능을 제공하지만 개인 정보 보호 논란도 있으며, 아마존은 기능 확장과 수익성 개선을 위해 노력 중이다. - 2014년 소프트웨어 - 안드로이드 TV
안드로이드 TV는 구글 TV의 후속으로 발표된 운영체제로, 구글 플레이 스토어를 통해 앱을 설치하고 음성 검색, 콘텐츠 추천 등의 기능을 제공하며, 스마트 TV, 셋톱박스 등 다양한 기기에서 사용된다.
| XGBoost - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발자 | XGBoost 기여자들 |
| 최초 릴리스 | 2014년 3월 27일 |
| 최신 버전 | '' |
| 최신 버전 출시일 | '}}' |
| 운영체제 | 리눅스 macOS 윈도우 |
| 프로그래밍 언어 | C++ |
| 장르 | 기계 학습 |
| 라이선스 | 아파치 라이선스 2.0 |
| 웹사이트 | XGBoost 공식 웹사이트 |
| 기타 | |
| GitHub 프로젝트 웹페이지 | GitHub 프로젝트 웹페이지 |
| Python 패키지 색인 PYPI | Python 패키지 색인 PYPI: xgboost |
| CRAN 패키지 xgboost | CRAN 패키지 xgboost |
| Julia 패키지 xgboost 목록 | Julia 패키지 xgboost |
| CPAN 모듈 AI::XGBoost | CPAN 모듈 AI::XGBoost |
| Windows에 Anaconda용 XGBoost 설치 | Windows에 Anaconda용 XGBoost 설치 |
| Mac OSX에 XGBoost 설치 | Mac OSX에 XGBoost 설치 |
| Dask 홈페이지 | Dask 홈페이지 |
| Dask를 이용한 분산 XGBoost | Dask를 이용한 분산 XGBoost |
| XGBoost - ML 우승 솔루션 (불완전한 목록) | XGBoost - ML 우승 솔루션 (불완전한 목록) |
2. 역사
XGBoost는 워싱턴 대학교의 분산 머신러닝 커뮤니티(DMLC) 그룹의 일환으로 톈치 첸(Tianqi Chen)이 시작한 연구 프로젝트였다.[11] 초기에는 libsvm 구성 파일을 사용하여 구성할 수 있는 터미널 응용 프로그램이었다. [https://www.kaggle.com/c/higgs-boson Higgs Machine Learning Challenge]의 우승 솔루션에 사용된 후 머신러닝 경진 대회 분야에서 널리 알려지게 되었다.[10] 이후 Python 및 R 패키지가 구축되었고, 현재 XGBoost는 Java, Scala, Julia, Perl 및 기타 언어에 대한 패키지 구현을 가지고 있다.
곧 다른 여러 패키지와 통합되어 각 커뮤니티에서 사용하기 쉬워졌으며, Apache Spark, Apache Hadoop 및 Apache Flink와 같은 데이터 흐름 프레임워크에 통합될 수 있다.[13] XGBoost의 효율적이고 확장 가능한 구현은 톈치 첸과 Carlos Guestrin에 의해 발표되었다.[15]
2. 1. 개발 배경
XGBoost는 분산 (심층) 기계 학습 커뮤니티(DMLC) 그룹의 일환으로 톈치 첸[11]의 연구 프로젝트로 시작되었다. 초기에는 libsvm 구성 파일을 사용하여 구성할 수 있는 터미널 응용 프로그램이었다. https://www.kaggle.com/c/higgs-boson Higgs Machine Learning Challenge의 우승 솔루션에 사용된 후 머신러닝 경진 대회 분야에서 널리 알려지게 되었다.[10] 이후 Python 및 R 패키지가 구축되었으며, 현재 XGBoost는 Java, Scala, Julia, Perl 및 기타 언어에 대한 패키지 구현을 가지고 있다. 이는 라이브러리를 더 많은 개발자에게 제공했으며, 많은 대회를 위해 사용된 Kaggle 커뮤니티에서 인기를 얻는 데 기여했다.[10]2. 2. 발전 과정
XGBoost는 분산 (심층) 기계 학습 커뮤니티(DMLC) 그룹의 일환으로 톈치 첸[11]의 연구 프로젝트로 시작되었다. 초기에는 libsvm 구성 파일을 사용하여 구성할 수 있는 터미널 응용 프로그램이었다. [https://www.kaggle.com/c/higgs-boson Higgs Machine Learning Challenge]의 우승 솔루션에 사용된 후 ML 경쟁 분야에서 널리 알려지게 되었다.[10] 곧 Python 및 R 패키지가 구축되었으며, XGBoost는 이제 Java, Scala, Julia, Perl 및 기타 언어에 대한 패키지 구현을 가지고 있다. 이는 라이브러리를 더 많은 개발자에게 제공했으며 많은 대회를 위해 사용된 Kaggle 커뮤니티에서 인기를 얻는 데 기여했다.[10]곧 다른 여러 패키지와 통합되어 각 커뮤니티에서 사용하기 쉬워졌다. 현재 Python 사용자를 위한 scikit-learn과 R 사용자를 위한 caret 패키지와 통합되었다. 또한 추상화된 Rabit[12] 및 XGBoost4J[13]를 사용하여 Apache Spark, Apache Hadoop 및 Apache Flink와 같은 데이터 흐름 프레임워크에 통합될 수 있다. XGBoost는 FPGA를 위한 OpenCL에서도 사용할 수 있다.[14] XGBoost의 효율적이고 확장 가능한 구현은 톈치 첸과 Carlos Guestrin에 의해 발표되었다.[15]
3. 특징
XGBoost는 다른 경사 부스팅 알고리즘과 비교하여 다음과 같은 특징을 갖는다.[16][17][15][35][36][37]
- 트리 패널티: 과적합을 방지하기 위해 트리에 페널티를 부여한다.
- 잎 노드 축소: 잎 노드의 가중치를 비례적으로 축소한다.
- 뉴턴 부스팅: 뉴턴 부스팅을 사용한다.
- 무작위성 파라미터: 추가적인 무작위성 파라미터를 사용한다.
- 다양한 구현 환경: 단일, 분산 컴퓨팅, 코어 외부 계산 등 다양한 환경에서 구현 가능하다.
- 자동 특징 선택: 자동 특징 선택 기능이 있다.
- 효율적인 계산: 이론적으로 정당화된 가중 퀀타일 스케칭을 사용한다.
- 병렬 트리 부스팅: 희소성을 활용하여 병렬 트리 구조 부스팅을 한다.
- 캐시 가능한 블록 구조: 결정 트리 훈련을 위한 효율적인 캐시 가능한 블록 구조를 갖는다.
3. 1. 알고리즘 개선
XGBoost는 다른 경사 부스팅 알고리즘과 비교했을 때 다음과 같은 개선된 특징을 보인다.[16][17][15]- 트리 가지치기 (Tree Pruning): 과적합(Overfitting)을 방지하기 위해 트리에 페널티를 부여하여 복잡도를 제어한다.
- 결측치 처리: XGBoost는 결측치를 자동적으로 처리하는 기능을 내장하고 있어, 별도의 전처리 과정 없이도 모델 학습이 가능하다.
- 뉴턴 부스팅: 뉴턴 부스팅을 사용하여 최적화를 수행한다.
- 무작위성 파라미터: 추가적인 무작위성 파라미터를 도입하여 모델의 다양성을 높인다.
- 구현: 단일 시스템, 분산 컴퓨팅 시스템, 코어 외부 계산 등 다양한 환경에서 구현이 가능하다.
- 자동 특징 선택: 자동 특징 선택 기능을 제공한다.
3. 2. 정규화 (Regularization)
XGBoost는 다른 경사 부스팅 알고리즘과 달리 다음과 같은 정규화 방법을 사용한다.[16][17][15]- 트리에 대한 현명한 패널티: 가중치의 절대값에 페널티를 부여하는 L1 정규화 (Lasso Regression)를 통해 일부 가중치를 0으로 만들어 특징 선택 효과를 얻는다. 또한, 가중치의 제곱합에 페널티를 부여하는 L2 정규화 (Ridge Regression)를 통해 가중치가 과도하게 커지는 것을 방지한다.
- 잎 노드의 비례적 축소
- 뉴턴 부스팅
- 추가적인 무작위성 파라미터
- 자동 특징 선택
3. 3. 효율성 및 확장성
XGBoost는 다른 경사 부스팅 알고리즘과 비교하여 다음과 같은 효율성 및 확장성 관련 특징을 갖는다.[16][17][15]- 병렬 처리: 희소성을 이용한 병렬 트리 구조 부스팅을 지원하여 학습 속도를 향상시킨다.
- 분산 처리: 대규모 데이터 처리를 위해 분산 컴퓨팅 환경을 지원한다.
- Out-of-core 컴퓨팅: 메모리보다 큰 데이터를 처리할 수 있다.
- 기타: 효율적인 계산을 위한, 이론적으로 정당화된 가중 퀀타일 스케칭 및 결정 트리 훈련을 위한 효율적인 캐시 가능한 블록 구조를 사용한다.
4. 알고리즘
XGBoost는 함수 공간에서 뉴턴-랩슨 방식을 사용하여 최적화를 수행하며, 이는 경사 부스팅이 함수 공간에서 경사 하강법을 사용하는 것과 대조적이다. XGBoost는 손실 함수에 2차 테일러 급수 근사를 적용하여 뉴턴-랩슨 방법과의 연결을 만든다.[1]
4. 1. 일반적인 비정규화 XGBoost 알고리즘
XGBoost는 함수 공간에서 뉴턴-랩슨 방식을 사용하며, 이는 경사 부스팅이 함수 공간에서 경사 하강법을 사용하는 것과 대조적이다. 손실 함수에 2차 테일러 급수 근사를 사용하여 뉴턴-랩슨 방법과의 연결을 만든다.일반적인 비정규화 XGBoost 알고리즘은 다음과 같다.
입력: 훈련 세트 , 미분 가능한 손실 함수 , 약한 학습기 수 및 학습률 .
알고리즘:
1. 모델 초기화: 상수 값으로 모델을 초기화한다.
:
2. 반복 (m = 1부터 M까지):
- '경사'와 '헤시안' 계산:
:
- 기본 학습기 적합: 훈련 세트 를 사용하여 기본 학습기(예: 트리)를 적합시킨다. 이는 다음 최적화 문제를 해결하는 것과 같다.
:
:
- 모델 업데이트:
:
3. 출력:
5. 수상
XGBoost는 뛰어난 성능과 효율성을 인정받아 다음과 같은 상을 수상했다.
참조
[1]
웹사이트
GitHub project webpage
https://github.com/d[...]
2016-04-05
[2]
웹사이트
Python Package Index PYPI: xgboost
https://pypi.python.[...]
2016-08-01
[3]
웹사이트
CRAN package xgboost
https://cran.r-proje[...]
2016-08-01
[4]
웹사이트
Julia package listing xgboost
https://web.archive.[...]
2016-08-01
[5]
웹사이트
CPAN module AI::XGBoost
https://metacpan.org[...]
2020-02-09
[6]
웹사이트
Installing XGBoost for Anaconda in Windows
https://www.ibm.com/[...]
2016-08-01
[7]
웹사이트
Installing XGBoost on Mac OSX
https://www.ibm.com/[...]
2016-08-01
[8]
웹사이트
Dask Homepage
https://www.dask.org[...]
2021-07-15
[9]
웹사이트
Distributed XGBoost with Dask — xgboost 1.5.0-dev documentation
https://xgboost.read[...]
2021-07-15
[10]
웹사이트
XGBoost - ML winning solutions (incomplete list)
https://github.com/d[...]
2016-08-01
[11]
웹사이트
Story and Lessons behind the evolution of XGBoost
https://web.archive.[...]
2016-08-01
[12]
웹사이트
Rabit - Reliable Allreduce and Broadcast Interface
https://github.com/d[...]
2016-08-01
[13]
웹사이트
XGBoost4J
https://xgboost.read[...]
2016-08-01
[14]
웹사이트
XGBoost on FPGAs
https://github.com/I[...]
2019-08-01
[15]
간행물
XGBoost: A Scalable Tree Boosting System
ACM
2016-08-13
[16]
웹사이트
Gradient Boosting and XGBoost
https://medium.com/h[...]
2020-01-04
[17]
웹사이트
Tree Boosting With XGBoost – Why Does XGBoost Win "Every" Machine Learning Competition?
https://syncedreview[...]
2020-01-04
[18]
웹사이트
John Chambers Award Previous Winners
http://stat-computin[...]
2016-08-01
[19]
웹사이트
HEP meets ML Award
https://higgsml.lal.[...]
2016-08-01
[20]
웹사이트
GitHub project webpage
https://github.com/d[...]
2021-10-06
[21]
웹사이트
Python Package Index PYPI: xgboost
https://pypi.python.[...]
2016-08-01
[22]
웹사이트
CRAN package xgboost
https://cran.r-proje[...]
2016-08-01
[23]
웹사이트
Julia package listing xgboost
http://pkg.julialang[...]
2016-08-01
[24]
웹사이트
CPAN module AI::XGBoost
https://metacpan.org[...]
2020-02-09
[25]
웹사이트
Installing XGBoost for Anaconda in Windows
https://www.ibm.com/[...]
2016-08-01
[26]
웹사이트
Installing XGBoost on Mac OSX
https://www.ibm.com/[...]
2016-08-01
[27]
웹사이트
Dask Homepage
https://www.dask.org
2021-10-06
[28]
웹사이트
Distributed XGBoost with Dask — xgboost 1.5.0-dev documentation
https://xgboost.read[...]
2021-07-15
[29]
웹사이트
XGBoost - ML winning solutions (incomplete list)
https://github.com/d[...]
2016-08-01
[30]
웹사이트
Story and Lessons behind the evolution of XGBoost
http://homes.cs.wash[...]
2016-08-01
[31]
웹사이트
Rabit - Reliable Allreduce and Broadcast Interface
https://github.com/d[...]
2016-08-01
[32]
웹사이트
XGBoost4J
https://xgboost.read[...]
2016-08-01
[33]
웹사이트
XGBoost on FPGAs
https://github.com/I[...]
2019-08-01
[34]
간행물
XGBoost: A Scalable Tree Boosting System
Association for Computing Machinery
2016-08-13
[35]
웹사이트
Gradient Boosting and XGBoost
https://medium.com/h[...]
2020-01-04
[36]
웹사이트
Boosting algorithm: XGBoost
https://towardsdatas[...]
2017-05-14
[37]
웹사이트
Tree Boosting With XGBoost – Why Does XGBoost Win "Every" Machine Learning Competition?
https://syncedreview[...]
2020-01-04
[38]
웹사이트
John Chambers Award Previous Winners
http://stat-computin[...]
2016-08-01
[39]
웹사이트
HEP meets ML Award
https://higgsml.lal.[...]
2016-08-01
[40]
웹인용
GitHub project webpage
https://github.com/d[...]
2022-06
[41]
웹인용
XGBoost - ML winning solutions (incomplete list)
https://github.com/d[...]
2016-08-01
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
