머신 러닝에서의 배깅, 부스팅 및 스태킹


245

이 세 가지 방법의 유사점과 차이점은 무엇입니까?

  • 포장지,
  • 일러스트레이션,
  • 스태킹?

어느 것이 가장 좋은가요? 그리고 왜?

각각에 대해 예를 들어 주시겠습니까?


3
교과서 참조를 위해, 나는 추천 : "앙상블 방법 : 기초 및 알고리즘"저우, 다우 후아힌에 의해
바딤 Smolyakov

1
여기에 관련 질문이 있습니다.
Ricardo Cruz

답변:


252

세 가지 모두 소위 "메타 알고리즘": 분산 ( 배깅 ), 바이어스 ( 부스팅 ) 또는 예측력 향상 ( 스택 앨리어스 앙상블 ) 을 줄이기 위해 여러 기계 학습 기술을 하나의 예측 모델로 결합하는 접근 방식입니다 .

모든 알고리즘은 두 단계로 구성됩니다.

  1. 원본 데이터의 하위 집합에 간단한 ML 모델의 분포를 생성합니다.

  2. 분포를 하나의 "집계 된"모델로 결합

다음은 세 가지 방법 모두에 대한 간단한 설명입니다.

  1. 포기할은 (약자 B의 ootstrap AGG regat 보내고 것이 사용하여 원래의 데이터 세트로부터 훈련 추가 데이터를 생성하여 예측의 분산을 감소시키는 방식이다) 의 반복으로 조합을 생성하기 위하여 멀티 세트 원래의 데이터와 동일한 카디널리티 / 크기가. 훈련 세트의 크기를 늘림으로써 모형 예측력을 향상시킬 수는 없지만 분산을 줄이고 예측을 예상 결과에 맞게 조정하면됩니다.

  2. 부스팅 은 2 단계 접근 방식으로, 원래 데이터의 하위 집합을 사용하여 일련의 평균 성능 모델을 생성 한 다음 특정 비용 함수 (= 대표)를 사용하여 모델을 결합하여 성능을 "증폭"합니다. 배깅과 달리, 고전적인 부스팅 에서 서브 세트 작성은 무작위 적이 지 않으며 이전 모델의 성능에 따라 다릅니다. 모든 새 서브 세트에는 이전 모델에 의해 잘못 분류 된 요소가 포함됩니다.

  3. 스태킹 은 부스팅과 유사합니다. 원본 데이터에 여러 모델을 적용 할 수도 있습니다. 그러나 여기서 차이점은 가중치 함수에 대한 경험적 공식이 아니라 메타 레벨을 도입하고 다른 모델 / 접근법을 사용하여 가중치를 추정하기 위해 모든 모델의 출력과 함께 입력을 추정하거나 다시 말해, 어떤 모델이 잘 수행되고 어떤 입력 데이터에 나쁜 영향을 주 었는지 확인하는 것입니다.

비교표는 다음과 같습니다.

비교표

보시다시피,이 모든 모델은 여러 모델을 더 나은 모델로 결합하는 다른 접근 방식이며 여기에는 단일 승자가 없습니다. 모든 것은 도메인과 수행 할 작업에 달려 있습니다. 스태킹 을 계속해서 발전시켜 나갈 수 는 있지만 메타 수준에 대한 좋은 접근 방식을 찾기가 어려우면 실제로이 접근 방식을 적용하기가 어렵습니다.

각각의 간단한 예 :

  1. 포장 : 오존 데이터 .
  2. 부스팅 : 광학 문자 인식 (OCR) 정확도 를 향상시키는 데 사용됩니다 .
  3. 쌓기 : 의학에서 암 마이크로 어레이 분류에 사용됩니다 .

8
부스팅 정의가 위키 (링크 한) 또는 이 백서의 정의와 다른 것 같습니다 . 둘 다 다음 분류기를 강화할 때 이전에 훈련 된 분류기의 결과를 사용한다고 말하지만 언급하지는 않았습니다. 반면에 설명하는 방법은 일부 투표 / 모델 평균화 기법과 유사합니다.
Alexander Rodin

2
@ a-rodin :이 중요한 부분을 지적 해 주셔서 감사합니다.이 부분을 더 잘 반영하기 위해이 섹션을 완전히 다시 작성했습니다. 두 번째로 말하면, 부스팅은 투표 / 평균화의 한 유형이라는 것입니다.
Alexander Galkin

@AlexanderGalkin 나는 의견을 제시 할 때 그라디언트 부스팅을 염두에 두었습니다. 투표처럼 보이지 않고 반복 함수 근사 기법으로 보입니다. 그러나 예를 들어 AdaBoost는 투표와 비슷해 보이므로 논쟁하지 않습니다.
Alexander Rodin

3
첫 번째 문장에서 Boosting은 바이어스를 감소 시키지만 비교표에서는 예측력을 증가시킵니다. 둘 다 사실입니까?
벤 린제이

68

포장 :

  1. 병렬 앙상블 : 각 모델은 독립적으로 제작

  2. 편향이 아닌 분산줄이는 것을 목표로

  3. 고 분산 저 바이어스 모델 (복잡한 모델)에 적합

  4. 나무 기반 방법의 예는 무작위 숲으로 , 완전히 자란 나무를 개발합니다 (RF는 나무 사이의 상관 관계를 줄이기 위해 자란 절차를 수정합니다)

부스팅 :

  1. 순차적 앙상블 : 이전 모델이없는 곳에서 잘 작동하는 새 모델을 추가하십시오

  2. 편차 가 아닌 편향줄이는 것을 목표로

  3. 저 분산 고 바이어스 모델에 적합

  4. 트리 기반 방법의 예는 그래디언트 부스팅입니다.


5
그 이유 와 그 달성 방법 에 대한 대답을하기 위해 각 요점을 설명하면 대답 이 크게 향상 될 것입니다.
Tim

2
부스팅이 분산을 줄이고 그 방법을 설명하는 문서 / 링크를 공유 할 수 있습니까? 좀 더 깊이 이해하고 싶을 때
GeorgeOfTheRF

1
고마워 팀, 나중에 몇 가지 의견을 추가하겠습니다. 부스팅 절차 (예 : cs.cornell.edu/courses/cs578/2005fa/… ) 의 @ML_Pro 에서 부스팅은 바이어스를 줄일 수 있음을 이해할 수 있습니다.
yuqian

43

Yuqian의 답변을 조금만 자세히 설명하십시오. 배깅의 기본 개념은 비모수 적 회귀 방법 (일반적으로 회귀 또는 분류 트리이지만 거의 모든 비모수 적 방법 일 수 있음)으로 과잉 복구 할 때 편향의 편차가 많지 않거나 편차가 적다는 경향이 있다는 것입니다 / 분산 트레이드 오프 이는 과적 합 모델이 매우 유연하기 때문에 (동일한 모집단의 많은 재 샘플에 대한 낮은 편향), 변동성이 높습니다 (샘플을 수집하고 과적 합하고 샘플을 수집하여 과적 합하는 경우) 비모수 적 회귀는 데이터의 노이즈를 추적하기 때문에 결과가 다를 수 있습니다). 우리는 무엇을 할 수 있습니까? 부트 스트랩에서 많은 재 샘플링 (각각의 오 버핏)을 취하고 평균을 구할 수 있습니다. 이는 동일한 편향 (낮음)으로 이어지지 만 일부 분산을 취소해야합니다.

그라디언트 부스팅은 UNDERFIT 비모수 적 회귀와 함께 작동하며 너무 단순하여 데이터의 실제 관계를 설명하기에 충분히 유연하지는 않지만 (즉, 편향적), 적합하지 않기 때문에 분산이 낮습니다. 새 데이터 세트를 수집하는 경우 동일한 결과를 얻으려면). 이 문제를 어떻게 해결합니까? 기본적으로 적합하면 모형의 잔차에는 여전히 유용한 구조 (모집에 대한 정보)가 포함되므로 잔차를 기반으로하는 나무를 사용하여 보유한 나무 (또는 비모수 예측 변수)를 보강합니다. 원래 트리보다 융통성이 있어야합니다. k-1 단계의 잔차에 맞는 트리를 기반으로 가중치 k가 추가 된 단계 k에서 더 많은 트리를 반복적으로 생성합니다. 이 나무 중 하나가 최적이어야합니다. 그래서 당신은이 모든 나무들에 가중치를 부여하거나 가장 적합한 것으로 보이는 것을 선택함으로써 끝납니다. 따라서 그래디언트 부스팅은보다 유연한 후보 트리를 만드는 방법입니다.

모든 비모수 적 회귀 또는 분류 접근법과 마찬가지로, 때때로 bagging 또는 boosting은 훌륭하게 작동하며 때로는 하나 또는 다른 접근법이 평범하며 때로는 하나 또는 다른 접근법 (또는 둘 다)이 충돌하여 타 버릴 수 있습니다.

또한이 두 가지 기법을 모두 나무 이외의 회귀 접근 방식에 적용 할 수 있지만, 나무와 가장 관련이 있습니다. 아마도 적합치 또는 과적 합을 피하기 위해 매개 변수를 설정하기가 어려울 수 있습니다.


3
오버 피트 = 분산, 언더 피트 = 바이어스 인수의 경우 +1! 의사 결정 트리를 사용하는 한 가지 이유는 구조적으로 불안정하므로 약간의 조건 변경으로 인해 더 많은 이점을 얻을 수 있기 때문입니다. ( abbottanalytics.com/assets/pdf/… )
Mark Horvath


3

간단히 말해서, BaggingBoosting 은 일반적으로 하나의 알고리즘 내에서 사용되는 반면, Stacking 은 일반적으로 다른 알고리즘의 여러 결과를 요약하는 데 사용됩니다.

  • Bagging : 여러 예측을 얻고 결과를 평균화 (또는 다른 방법)하여 특징 및 샘플의 하위 세트를 부트 스트랩Random Forest 하여 분산을 제거하고 과적 합 문제가 없습니다.
  • 부스팅 : Bagging 과의 차이점은 이후 모델이 이전 GBM과 같은 이전 오류로 인한 오류를 파악하려고 시도 XGBoost하여 분산을 제거하지만 과적 합 문제가 있다는 것입니다.
  • 스태킹 (Stacking) : 일반적으로 경쟁에서 사용되는 경우, 알고리즘이 여러 알고리즘을 사용하여 동일한 데이터 세트와 평균 (최대, 최소 또는 기타 조합)을 학습하여 더 높은 예측 정확도를 얻을 수 있습니다.

2

배깅과 부스팅은 모든 단계에서 단일 학습 알고리즘을 사용합니다. 그러나 훈련 샘플을 처리 할 때 다른 방법을 사용합니다. 둘 다 여러 모델의 결정을 결합한 앙상블 학습 방법입니다 .
Bagging :
1. 훈련 데이터를 재 샘플링하여 M 서브 세트를 가져옵니다 (부트 스트래핑).
2. M 개의 데이터 세트 (다른 ​​샘플)에 기초하여 M 개의 분류기 (동일 알고리즘)를 훈련시킨다;
3. 최종 분류기는 투표에 의해 M 개의 출력을 결합합니다.
샘플 무게 동일;
분류기의 무게는 동일합니다.
분산을 줄임으로써 오류를 줄입니다.
Boosting : adaboost 알고리즘에 중점을 둡니다
. 1. 첫 번째 라운드의 모든 샘플에 대해 동일한 가중치로 시작합니다.
2. 다음 M-1 라운드에서 마지막 라운드에서 잘못 분류 된 샘플의 무게를 늘리고 마지막 라운드에서 올바르게 분류 된 샘플의 무게를 줄입니다.
3. 가중치 투표를 사용하여 최종 분류기는 이전 라운드의 여러 분류기를 결합하고 더 큰 가중치를 부여합니다. 오 분류가 적은 분류 자에게
단계적으로 무게를 재는 샘플;
리샘플링 (포장) 대신 마지막 라운드 재 중량 샘플 (부스팅)의 결과를 기반으로 한 각 라운드의 가중치 .


0

배깅 및 부스팅은 많은 동종 모델을 사용하는 경향이 있습니다.

스태킹은 이기종 모델 유형의 결과를 결합합니다.

단일 분포 유형이 전체 분포에 가장 적합한 것은 아니기 때문에 예측력이 증가하는 이유를 알 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.