HyperAI초신경

부스팅

머신러닝에서는부스팅은 주로 지도 학습에서 편향과 분산을 줄이는 데 사용되는 통합 메타 알고리즘이며, 약한 학습기를 강한 학습기로 변환하는 일련의 머신 러닝 알고리즘입니다. 부스팅은 Kearns와 Valiant(1988, 1989)가 제기한 질문, "약한 학습자 집합이 강력한 학습자를 만들 수 있을까?"에 기초합니다. 약한 학습기는 실제 분류와 상관관계가 거의 없는 분류기로 정의됩니다(무작위로 추측하는 것보다 예시에 더 나은 레이블을 지정할 수 있음). 이와 대조적으로 강력한 학습자는 실제 분류와 임의로 좋은 상관관계를 가진 분류자입니다. 부스팅에서는 무작위 데이터 샘플을 선택하여 모델에 맞춘 다음 순차적으로 학습합니다. 즉, 각 모델은 이전 모델의 약점을 보완하려고 시도합니다. 각 반복 과정에서 각 개별 분류기의 약한 규칙이 강력한 예측 규칙으로 결합됩니다. 

부스팅의 세 가지 방법

다양한 부스팅 알고리즘은 순차적 프로세스에서 약한 학습기를 생성하고 집계하는 방식이 다를 수 있습니다. 널리 알려진 리프팅 방법은 세 가지가 있습니다. 

  • 적응형 부스팅(Adaptive Boosting), AdaBoost라고도 함:AdaBoost 알고리즘은 Yoav Freund와 Robert Schapire가 만들었습니다. 이 접근 방식은 반복적으로 실행되어 잘못 분류된 데이터 포인트를 발견하고 가중치를 조정하여 교육 오류를 최소화합니다. 이 모델은 가장 강력한 예측 변수가 생성될 때까지 순차적으로 지속적으로 최적화됩니다.  
  • 그래디언트 부스팅:레오 브레이먼(Leo Breiman)의 연구를 바탕으로 제롬 H. 프리드먼(Jerome H. Friedman)은 그래디언트 부스팅을 개발했습니다. 그래디언트 부스팅은 앙상블에 순차적으로 예측 변수를 추가하여 각 예측 변수가 이전 예측 변수의 오류를 수정하는 방식으로 작동합니다. 하지만 그래디언트 부스팅은 AdaBoost처럼 데이터 포인트의 가중치를 변경하는 대신 이전 예측 변수의 잔차를 사용하여 학습합니다. 그래디언트 부스팅이라는 이름은 그래디언트 하강 알고리즘과 부스팅 방법을 결합했기 때문에 사용됩니다.  
  • 익스트림 그래디언트 부스팅(Extreme Gradient Boosting), 또는 XGBoost: XGBoost는 계산 속도와 규모를 위해 설계된 그래디언트 부스팅의 구현입니다. XGBoost는 CPU의 여러 코어를 활용하여 훈련 중에 학습을 병렬화합니다. 

부스팅 장점

  • 쉽게 구현 가능:부스팅은 여러 가지 하이퍼파라미터 튜닝 옵션과 함께 사용하여 적합도를 개선할 수 있습니다. 부스팅 알고리즘에는 누락된 데이터를 처리하기 위한 루틴이 내장되어 있으므로 데이터 전처리가 필요하지 않습니다. Python에서 앙상블 방법을 위한 scikit-learn 라이브러리(sklearn.ensemble이라고도 함)를 사용하면 AdaBoost, XGBoost 등 인기 있는 부스팅 방법을 쉽게 구현할 수 있습니다.  
  • 편견을 줄이세요:부스팅 알고리즘은 여러 개의 약한 학습기를 순차적으로 결합하여 관찰 결과를 반복적으로 개선합니다. 이러한 접근 방식은 얕은 의사결정 트리와 로지스틱 회귀 모델에서 일반적으로 나타나는 높은 편향을 줄이는 데 도움이 됩니다. 
  • 계산 효율성:부스팅 알고리즘은 학습 중에 예측 능력을 향상시키는 기능만 선택하므로 차원을 줄이고 계산 효율성을 개선하는 데 도움이 됩니다.  

부스팅의 과제  

  • 과적합:다양한 연구(ibm.com 외부 링크)에서 부스팅이 과잉적합을 줄이는 데 도움이 되는지 아니면 오히려 악화시키는지에 대한 논란이 있습니다. 이 문제를 과제에 포함시킨 이유는 예측이 새로운 데이터 세트에 일반화되지 않는 경우가 종종 있기 때문입니다.  
  • 집중적인 계산:  부스팅 방법의 순차적 학습은 확장하기 어렵습니다. 각각의 추정 변수가 이전 변수를 기반으로 구축되기 때문에 부스팅 모델은 계산 비용이 많이 들지만 XGBoost는 다른 유형의 부스팅에서 발생하는 확장성 문제를 해결하려고 시도합니다. 배깅과 비교했을 때, 부스팅 알고리즘은 모델의 동작에 영향을 미치는 매개변수의 수가 많기 때문에 학습 속도가 느릴 수 있습니다. 

참고문헌

【1】https://www.ibm.com/cn-zh/topics/boosting