brunch

You can make anything
by writing

- C.S.Lewis -

by Chris송호연 Feb 17. 2020

Ensemble: bagging, boosting..

앙상블 학습의 핵심 아이디어들을 이해해봅시다.

앙상블 러닝에 대해 공부하는 중 좋은 글이 있어서 번역했습니다.


https://towardsdatascience.com/ensemble-methods-bagging-boosting-and-stacking-c9214a10a205


이 게시물은 Baptiste Rocca 와 공동으로 작성되었습니다 .

소개

“통합은 힘이다(Unity is strength)”. 이 오래된 말은 기계 학습에서 매우 강력한 "앙상블 방법"을 지배하는 기본 개념을 잘 표현하고 있습니다. 대략적으로 많은 기계 학습 경쟁 (Kaggle 경쟁 포함)의 상위 순위를 신뢰하는 앙상블 학습 방법은 여러 모델을 결합하여 훨씬 더 강력한 모델을 생성 할 수 있다는 가설에 근거합니다.


이 포스트의 목적은 다양한 앙상블 학습 개념을 소개하는 것입니다. 우리는 독자들에게 관련 방법을 잘 이해하고 사용하는 데 필요한 열쇠를 제공하고 필요할 때 적합한 솔루션을 설계 할 수 있습니다. 우리는 boostrapping, bagging, random forest, boosting, stacking과 같은 잘 알려진 개념들과 앙상블 학습의 기초가되는 많은 개념들을 논의 할 것입니다. 이 모든 방법들 사이를 가능한 한 명확하게하기 위해, 우리는 이해하기 쉽고 기억하기 쉽도록 훨씬 넓고 논리적 인 프레임 워크로 그것들을 제시하려고 노력할 것입니다.


개요

이 글의 첫 번째 섹션에서는 약하고 강한 학습자들의 개념을 소개하고 세 가지 주요 앙상블 학습 방법 인 배깅, 부스팅 및 스태킹을 소개합니다. 그런 다음 두 번째 섹션에서는 bagging에 중점을두고 Bootstraping, bagging 및 Random Forest와 같은 개념에 대해 설명합니다. 세 번째 섹션에서는 Boosting, 특히 가장 널리 사용되는 두 가지 변형 인 어댑티브 부스팅 (adaboost)과 그래디언트 부스팅을 소개합니다. 마지막으로 네 번째 섹션에서는 스태킹에 대한 개요를 제공합니다.


앙상블 방법은 무엇입니까?

앙상블 학습은 여러 모델 (종종“약한 학습자 weak learner”)이 동일한 문제를 해결하고 더 나은 결과를 얻도록 훈련시키는 기계 학습 패러다임입니다. 주된 가설은 약한 모델이 올바르게 결합되면 더 정확하고 견고한 모델을 얻을 수 있다는 것입니다.


하나의 약한 학습자 Single weak learner

기계 학습에서 분류 또는 회귀 문제에 직면하더라도 좋은 결과를 얻을 수있는 기회를 가지려면 모델 선택이 매우 중요합니다. 이 선택은 데이터의 양, 공간의 차원, 분포 가설 등 문제의 많은 변수에 따라 달라질 수 있습니다.


낮은 편향과 낮은 분산은 반대 방향으로 가장 많이 변하지 만 모델에 가장 중요한 두 가지 기본 기능입니다. 실제로 문제를“해결”할 수 있으려면 모델이 작업중인 데이터의 근본적인 복잡성을 해결하기에 충분한 자유도를 갖기를 원하지만 피할 수있는 자유도가 너무 크지 않기를 원합니다. 높은 분산과 더 강력한. 이것은 잘 알려진 바이어스-분산 트레이드 오프 입니다.



Illustration of the bias-variance tradeoff


앙상블 학습 이론에서 우리는 weak learner (또는 base model ) 모델을 호출 합니다.이 모델은 더 복잡한 모델을 결합하여보다 복잡한 모델을 설계하기위한 빌딩 블록으로 사용할 수 있습니다. 대부분의 경우, 이러한 기본 모델은 편향이 높거나 (예 : 자유도가 낮은 모델) 견고하기에는 너무 많은 분산 (예 : 자유도가 높은 모델)으로 인해 자체적으로 성능이 좋지 않습니다. ). 그런 다음 앙상블 방법의 개념은 더 나은 성능을 달성 하는 strong learner (또는 ensemble model) 을 만들기 위해 여러 weak learner를 결합하여 weak learner의 편견 및 / 또는 편차를 줄이는 것 입니다.


Weak Learner를 결합

앙상블 학습 방법을 설정하려면 먼저 집계 할 기본 모델을 선택해야합니다. (잘 알려진 bagging and boosting 방법을 포함하여) 대부분의 경우 단일 기본 학습 알고리즘이 사용되어 다른 방식으로 훈련 된 homogeneous(동종의) weak learner가 있습니다. 우리가 얻은 앙상블 모델은 "homogeneous(동종의)"이라고합니다. 그러나 다른 유형의 기본 학습 알고리즘을 사용하는 방법도 있습니다. heterogeneous(이종의) weak learner는 "heterogeneous ensemble model"로 결합됩니다.


한 가지 중요한 점은 우리의 weak learner들이 우리가 이 모델들을 모으는 방식과 일관 되어야한다는 것 입니다. 바이어스가 적지 만 분산이 높은 기본 모델을 선택하는 경우 분산을 줄이는 경향이있는 집계 방법을 사용해야하는 반면, 분산이 낮지 만 바이어스가 높은 기본 모델을 선택하는 경우 바이어스를 줄이는 경향이있는 집계 방법을 사용해야합니다.


이를 통해 이러한 모델을 결합하는 방법에 대한 문제가 발생합니다. weak learner를 결합하는 것을 목표로하는 세 가지 주요 종류의 메타 알고리즘을 언급 할 수 있습니다.  

bagging 동종의 weak learner들을 서로 병렬적으로 독립적으로 학습시킨 후에 그들과 결정론적 평균 프로세스를 따라 결합시킵니다.

boosting 은 종종 homogeneous(동종의) 한 weak learner를 매우 적응적인 방식으로 순차적으로 학습하며 (기본 모델은 이전 모델에 따라 다름) 결정론적(deterministic) 전략에 따라 결합합니다.

stacking 종종 heterogeneous weak learner 출력 다른 약한 모델 예측에 의한 예측을 메타 모델을 훈련함으로써 이들을 병렬로 결합한 학습하고,


대략적으로, 배깅은 주로 컴포넌트보다 분산이 적은 앙상블 모델을 얻는 데 중점을 두는 반면 부스팅 및 스태킹은 주로 컴포넌트보다 편향이 적은 강한 모델을 생성하려고 시도합니다 (분산도 줄일 수 있음에도 불구하고).


다음 섹션에서는 스태킹에 대한 간략한 개요를 제공하기 전에 배깅 및 부스팅 (스태킹보다 조금 더 널리 사용되며 앙상블 학습의 주요 개념에 대해 논의 할 수 있도록 함)에 대해 자세히 설명합니다.






약한 학습자를 결합하여 더 나은 성능의 모델을 얻을 수 있습니다. 기본 모델을 결합하는 방법은 해당 유형에 맞게 조정해야합니다. 낮은 바이어스와 높은 분산의 약한 모델은 강한 모델을보다 견고하게 만드는 방식으로 결합되어야하지만 낮은 분산 및 높은 바이어스의 기본 모델은 앙상블 모델의 바이어스를 덜 만드는 방식으로 더 잘 결합되어야합니다.


bagging에 집중


에서 parallel methods병렬 방법 우리는 그래서, 동시에 그들을 훈련하는 것이 가능하고, 서로 독립적으로 다른 고려 된 학습자에 적합합니다. 가장 유명한 이러한 접근 방식은 "배깅"( "부트 스트랩 어 그리 게이팅 (bootstrap aggregating)")으로 , 개별 모델 보다 강력한 앙상블 모델을 생성하는 것을 목표로 합니다.


Bootstrapping(부트 스트랩)


부트 스트랩 정의부터 시작하겠습니다. 이 통계 기법은 대체 B 관측 값으로 무작위로 그려서 크기 N의 초기 데이터 세트에서 크기 B의 샘플 (부트 스트랩 샘플이라고 함)을 생성하는 것으로 구성됩니다.



부트 스트랩 프로세스의 삽화


몇 가지 가정 하에서,이 표본들은 꽤 좋은 통계적 특성을 가지고 있습니다 . 첫 번째 근사에서는 실제 기초 (그리고 종종 알려지지 않은) 데이터 분포에서 직접 그리고 서로 독립적으로 도출되는 것으로 볼 수 있습니다. 따라서 실제 데이터 분포의 대표적이고 독립적 인 샘플 (거의 iid 샘플)로 간주 될 수 있습니다. 이 근사값을 유효하게하기 위해 검증되어야하는 가설은 두 가지입니다. 먼저, 초기 데이터 세트의 크기 N은 기본 분포의 복잡성을 대부분 포착 할 수있을 정도로 충분히 커야 데이터 세트에서 샘플링하는 것이 실제 분포 (표현식) 의 샘플링에 대한 근사값이됩니다.). 둘째, 데이터 세트의 크기 N은 부트 스트랩 샘플의 크기 B에 비해 충분히 커야 샘플이 서로 관련되지 않습니다 ( 독립성 ). 다음에서 부트 스트랩 샘플의 이러한 특성 (대표성 및 독립성)을 참조 할 때가 있습니다. 독자는 이것이 단지 근사 일 뿐이라는 점을 항상 명심해야 합니다 .


부트 스트랩 샘플은 예를 들어 통계 추정기의 분산 또는 신뢰 구간을 평가하는 데 종종 사용됩니다. 정의에 따르면, 통계량 추정기는 일부 관측치의 함수이므로 이러한 관측치에서 분산이 나오는 임의 변수입니다. 이러한 추정량의 분산을 추정하려면 관심 분포에서 추출한 여러 개의 독립적 인 표본에서 평가해야합니다. 대부분의 경우 진정으로 독립적 인 샘플을 고려하면 실제로 사용 가능한 양에 비해 너무 많은 데이터가 필요합니다. 그런 다음 부트 스트랩을 사용하여 "거의 대표"및 "거의 독립적"(거의 iid 샘플)으로 간주 될 수있는 여러 부트 스트랩 샘플을 생성 할 수 있습니다. 이 부트 스트랩 샘플을 사용하면 각각에 대한 값을 평가하여 추정량의 분산을 추정 할 수 있습니다.








부트 스트랩은 종종 일부 통계 추정기의 분산 또는 신뢰 구간을 평가하는 데 사용됩니다.


Bagging


모델을 학습 할 때 분류 또는 회귀 문제를 처리하든 관계없이 입력을 받고 출력을 반환하며 학습 데이터 집합과 관련하여 정의 된 함수를 얻습니다. 훈련 데이터 세트의 이론적 분산으로 인해 (데이터 세트는 실제 미지의 기초 분포에서 나온 관측 된 샘플임을 상기시킵니다), 적합 모형도 변동될 수 있습니다. 다른 데이터 세트가 관찰 된 경우 다른 결과를 얻었을 것입니다 모델 .


Bagging(배깅)에 대한 아이디어는 간단합니다. 분산이 적은 모델을 얻기 위해 여러 개의 독립적 인 모델을 맞추고 예측을 "평균화"하고자합니다. 그러나 실제로는 너무 많은 데이터가 필요하기 때문에 완전히 독립적 인 모델에 적합하지 않습니다. 따라서 우리는 부트 스트랩 샘플 (대표성 및 독립성)의 “대략적인 속성”에 의존하여 거의 독립적인 모델에 적합합니다.


먼저, 각각의 새 부트 스트랩 샘플이 실제 분포에서 추출 된 다른 (거의) 독립적 인 데이터 세트로 작동하도록 여러 부트 스트랩 샘플을 만듭니다. 그런 다음 각 샘플에 대해 약한 학습자를 맞출 수 있으며 최종적으로 출력을 "평균화" 하여 구성 요소에 대한 분산이 적은 앙상블 모델을 얻을 수 있습니다. 대략적으로 말하면, 부트 스트랩 샘플은 대략 독립적이며 동일하게 분포되어 있으므로 (iid) 학습 된 기본 모델도 마찬가지입니다. 그런 다음 약한 학습자 출력의 "평균화"는 예상 답변을 변경하지 않지만 평균 iid 임의 변수의 평균이 예상 값을 유지하지만 분산을 줄이는 것과 같이 분산을 줄입니다.


따라서 B 크기의 L 부트 스트랩 샘플 (L 독립 데이터 세트의 근사값)이 있다고 가정하면





우리는 거의 독립적 인 약한 학습자 L을 맞출 수 있습니다






낮은 분산의 앙상블 모델을 얻기 위해 평균화 프로세스로 집계합니다. 예를 들어, 강력한 모델을 정의하여



병렬로 장착 된 여러 모델을 집계하는 방법에는 여러 가지가 있습니다. 회귀 문제의 경우 개별 모델의 출력을 문자 그대로 평균화하여 앙상블 모델의 출력을 얻을 수 있습니다. 분류 문제의 경우 각 모델에서 출력 된 클래스는 투표로 표시 될 수 있으며 대부분의 투표를받는 클래스는 앙상블 모델에 의해 반환됩니다 ( 하드 투표 ). 여전히 분류 문제의 경우 모든 모델에서 반환 된 각 클래스의 확률을 고려하여 이러한 확률을 평균화하고 클래스를 평균 확률이 가장 높은 등급으로 유지 ( 소프트 투표 라고 함 ) 할 수 있습니다. 관련 가중치를 사용할 수있는 경우 평균 또는 투표는 단순하거나 가중 될 수 있습니다.


마지막으로, 우리는 bagging의 가장 큰 장점 중 하나는 병렬 처리 가 가능하다는 것 입니다. 서로 다른 모델이 서로 독립적으로 장착되므로 필요한 경우 집중적 인 병렬화 기술을 사용할 수 있습니다.



배깅은 서로 다른 부트 스트랩 샘플에 여러 기본 모델을 맞추고 약한 학습자의 결과를 "평균화"하는 앙상블 모델을 구성합니다.


Random Forest

학습 트리는 앙상블 방법에 매우 인기있는 기본 모델입니다. 여러 Tree로 구성된 강력한 학습자를 "Forest"이라고 할 수 있습니다. Forest을 구성하는 Tree는 얕거나 (깊이가 적음) 깊이 (깊게 자라지 않으면 깊이가 많음)로 선택할 수 있습니다. 얕은 Tree는 분산은 적지만 편향이 높으므로 이후에 설명 할 순차적 방법에 더 적합합니다. 반면에 깊은 나무는 바이어스가 적지 만 분산이 높으므로 분산을 줄이는 데 주로 중점을 둔 배깅 방법에 적합한 선택입니다.


Random Forest 방법은 깊은 Tree에 Bootstrap 샘플에 맞추어 낮은 분산을 갖도록 만드는 배깅 방법입니다. 그러나 랜덤 포레스트는 학습된 트리들이 좀 덜 correlated 되도록 또 다른 기법을 사용합니다. 단지 데이터셋에서 샘플링을 하는 대신, 피쳐로부터도 샘플링을 합니다. 


피쳐를 샘플링하면 실제로 모든 트리가 동일한 정보를 보지 않고 결정을 내릴 수 있으므로 서로 다른 반환 출력 간의 상관 관계가 줄어 듭니다. 피처보다 샘플링의 또 다른 장점은 결측 데이터에 대해 의사 결정 프로세스를 더욱 강력하게 만든다는 것입니다 . 데이터가 누락되지 않았습니다. 따라서 랜덤 포레스트 알고리즘은 배깅 개념과 랜덤 피처 서브 스페이스 선택을 결합하여보다 강력한 모델을 만듭니다.



랜덤 포레스트 방법은 Tree를 Weak learner(약한 학습자)로 사용하는 배깅 방법입니다. 각 트리는 무작위로 선택된 변수의 하위 집합만 고려하여 부트 스트랩 샘플에 학습됩니다.


Boosting에 집중


순차적 방법에서 다른 약한 결합 모델은 서로 독립적으로 더 이상 맞춰지지 않습니다. 이 아이디어는 주어진 단계에서의 모델 훈련이 이전 단계에서 장착 된 모델에 의존하도록 모델을 반복적 으로 맞추는 것입니다 . "부스팅 (Boosting)"은 이러한 접근 방식 중 가장 유명하며 이를 구성하는 weak learner보다 편향이 적은 앙상블 모델을 생성합니다.


부스팅 Boosting


Boosting 부스팅 방법은 Bagging 배깅 방법과 같은 방식으로 작동합니다. 우리는 더 나은 성과를 거둔 강한 학습자를 얻기 위해 집계 된 모델 군을 구축합니다. 그러나 주로 분산을 줄이는 것을 목표로하는 배깅과 달리, 부스팅은 순차적으로 여러 약한 학습자를 매우 적응적인 방식으로 맞추는 기술입니다. 시퀀스의 각 모델은 데이터 집합의 관측에 더 중요하게 적용됩니다. 시퀀스의 이전 모델. 직관적으로, 각각의 새로운 모델 은 가장 어려운 관측에 노력을 집중시킵니다. 프로세스가 끝날 때 편향이 적은 강한 학습자를 얻을 수 있도록 지금까지 맞춥니다 (부스팅이 분산을 줄이는 효과도 있음을 알 수 있음에도 불구하고). 배깅과 같은 부스팅은 분류 문제뿐만 아니라 회귀에도 사용할 수 있습니다.


주로 바이어스 감소에 중점을 두기 때문에 부스팅을 위해 종종 고려되는 기본 모델은 분산이 낮지 만 바이어스가 높은 모델입니다. 예를 들어, 트리를 기본 모델로 사용하려면 깊이가 거의없는 대부분의 시간이 짧은 의사 결정 트리를 선택합니다. 부스팅을위한 약한 학습자로서 낮은 분산이지만 높은 바이어스 모델의 사용을 유발하는 또 다른 중요한 이유는 이러한 모델이 일반적으로 계산 비용이 적게 들기 때문입니다 (파라미터 발생시 자유도가 거의 없음). 실제로, 다른 모델에 맞는 계산은 배깅과 달리 병렬로 수행 될 수 없으므로 여러 복잡한 모델에 순차적으로 맞추기에는 너무 비쌀 수 있습니다.


약한 학습자를 선택한 후에도 계속 순차 학습 방법 (현재 모델을 피팅 할 때 이전 모델의 정보를 고려할 때) 및 집계 방법 (현재 모델을 집계하는 방법)을 정의해야합니다. 이전에?). 우리는 두 가지 중요한 부스팅 알고리즘 인 adaboost와 gradient boosting을보다 구체적으로 설명하는 다음 두 하위 섹션에서 이러한 질문에 대해 논의 할 것입니다.


간단히 말해서,이 두 가지 메타 알고리즘은 순차적 프로세스 동안 약한 학습자를 생성하고 집계하는 방법이 다릅니다. 적응 형 부스팅은 각 교육 데이터 세트 관측치에 연결된 가중치를 업데이트하고 그래디언트 부스팅은 이러한 관측 값을 업데이트합니다. 이 주요 차이점은 두 방법이 약한 학습자의 가중치 합계로 작성 될 수있는 최상의 모델을 찾는 최적화 문제를 해결하려고 시도하는 방식에서 비롯됩니다.





부스팅은 약한 학습자에게 적합하게 반복하여 앙상블 모델에 집계하고 다음 기본 모델을 피팅 할 때 현재 앙상블 모델의 강점과 약점을 더 잘 고려하도록 훈련 데이터 세트를 "업데이트"하는 것으로 구성됩니다.


Adaptive Boosting 적응형 부스팅


적응 형 부스팅 (종종 "adaboost"라고 함)에서 앙상블 모델을 L 약한 학습자의 가중치 합으로 정의하려고합니다.


이 형식으로 최상의 앙상블 모델을 찾는 것은 어려운 최적화 문제 입니다. 그런 다음 한 번의 샷으로 해결하려고 시도하는 대신 (최상의 전체 가산 모델을 제공하는 모든 계수와 약한 학습자를 찾기), 우리는 반복적으로 이어지는 경우에도 훨씬 더 다루기 쉬운 반복 최적화 프로세스 를 사용합니다. 차선책. 특히, 약한 학습자를 하나씩 추가하고 현재 앙상블 모델에 추가 할 수있는 최상의 쌍 (계수, 약한 학습자)에 대한 각 반복을 살펴 봅니다. 다시 말해, 우리는 (s_l)을 반복적으로 정의합니다.



여기서 c_l 및 w_l은 s_l이 학습 데이터에 가장 적합한 모델이므로 s_ (l-1)에 비해 가능한 최상의 개선이되도록 선택됩니다. 그런 다음



여기서 E (.)는 주어진 모형의 피팅 오차이고 e (.,.)는 손실 / 오류 함수입니다. 따라서 전체 L 모델에 대해 "전역 적으로"최적화하는 대신 "로컬"구축을 최적화하고 약한 학습자를 강한 모델에 하나씩 추가하여 최적의 근사치를 구합니다.


특히 이진 분류를 고려할 때 adaboost 알고리즘을 다음과 같이 진행되는 프로세스로 다시 작성할 수 있음을 알 수 있습니다. 먼저, 데이터 세트 의 관측치 가중치 를 업데이트 하고 현재 앙상블 모델에 의해 잘못 분류 된 관측치에 대해 특별히 초점을 맞춘 새로운 약한 학습자를 훈련시킵니다. 둘째, 이 약한 모델의 성능을 나타내는 업데이트 계수에 따라 약한 학습자를 가중 합계 에 추가합니다. 약한 학습자가 더 잘 수행할수록 강한 학습자에 더 많이 기여합니다.


따라서 데이터 세트에 N 개의 관측치가있는 이진 분류 문제에 직면하고 있으며 주어진 약한 모델 군에 adaboost 알고리즘을 사용하려고합니다. 알고리즘의 시작 부분 (시퀀스의 첫 번째 모델)에서 모든 관측 값의 가중치는 1 / N입니다. 그런 다음 L 단계를 반복하여 (L 시퀀스 학습자에 대해) 다음 단계를 반복합니다.


현재 관측 중량에 가장 적합한 약한 모형을 적합

이 약한 학습자가 앙상블 모델에서 고려해야 할 양을 나타내는 약한 학습자의 일종의 스칼라 평가 메트릭 인 업데이트 계수의 값을 계산합니다.

새로운 약한 학습자에 업데이트 계수를 곱하여 강력한 학습자를 업데이트하십시오.

다음 반복에서 어떤 관측치에 초점을 맞추고 싶은지를 나타내는 새로운 관측치 가중치 계산 (집계 된 모형 증가에 의해 잘못 예측 된 관측치의 가중치 및 올바르게 예측 된 관측치의 가중치)


이러한 단계를 반복하여 L 모델을 순차적으로 구축하고 각 학습자의 성과를 나타내는 계수로 가중치를 부여한 간단한 선형 조합으로 집계합니다. 초기 adaboost 알고리즘의 변형이있어 LogitBoost (분류) 또는 L2Boost (회귀)는 손실 함수 선택에 따라 주로 다릅니다.



Adaboost는 각 반복에서 관측치의 가중치를 업데이트합니다. 잘 분류 된 관측치의 가중치는 잘못 분류 된 관측치의 가중치에 비해 상대적으로 감소합니다. 성능이 좋은 모델은 최종 앙상블 모델에서 가중치가 높습니다.




그라디언트 부스팅(Gradient Boosting)


그래디언트 부스팅에서 우리가 만들려고하는 앙상블 모델은 약한 학습자의 가중치 합계입니다.


adaboost에 대해 언급했듯이이 형식에서 최적의 모델을 찾는 것은 너무 어렵고 반복적 인 접근 방식이 필요합니다. 적응 형 부스팅의 주요 차이점은 순차적 최적화 프로세스의 정의에 있습니다. 실제로, 그라디언트 부스팅 (gradient boosting) 은 문제를 그라디언트 디센트 (gradient descent)로 캐스트합니다 : 각 반복에서 우리는 약한 학습자를 현재 앙상블 모델에 대한 현재 피팅 오류의 그라디언트 반대에 맞 춥니 다. 이 마지막 요점을 명확히 해보겠습니다. 먼저 앙상블 모델에 대한 이론적 경사 하강 프로세스를 작성할 수 있습니다.



여기서 E (.)는 주어진 모형의 피팅 오차이고, c_l은 단계 크기에 해당하는 계수입니다.




단계 1-1에서의 앙상블 모델에 대한 피팅 오차의 기울기와 반대입니다. 그래디언트의 반대 (이 추상)는 실제로 훈련 데이터 세트의 관측치 (입력 및 출력을 알고 있음)에 대해서만 평가 될 수있는 함수입니다. 이러한 평가 를 각 관측치에 첨부 된 의사 잔류 라고 합니다. 또한 이러한 의사 잔차의 값을 관측 값으로 알고 있더라도 앙상블 모델에 어떤 종류의 기능도 추가하고 싶지 않습니다. 약한 모델의 새 인스턴스 만 추가하려고합니다. 따라서 자연스럽게해야 할 일은 약한 학습자를 의사 잔류 물 에 맞추는 것입니다.각 관측치에 대해 계산됩니다. 마지막으로, 계수 c_1은 1 차원 최적화 프로세스 (최상의 단계 크기 c_l을 얻기위한 라인-검색)에 따라 계산된다.


따라서 우리는 주어진 약한 모델 군에 그라디언트 부스팅 기법을 사용한다고 가정합니다. 알고리즘의 맨 처음 (시퀀스의 첫 번째 모델)에서 의사 잔차는 관측 값과 동일하게 설정됩니다. 그런 다음 L 시퀀스를 반복합니다 (시퀀스의 L 모델에 대해).


가장 약한 학습자를 의사 잔차에 맞춥니다 (현재의 강력한 학습자와 관련하여 그래디언트의 반대)

새로운 약한 학습자의 방향으로 앙상블 모델을 얼마나 많이 업데이트하는지 정의하는 최적의 단계 크기 값을 계산합니다.

새로운 약한 학습자를 단계 크기로 곱하여 앙상블 모델을 업데이트합니다 (구배 하강 단계 만들기).

각 관측치에 대해 다음 앙상블 모델 예측을 업데이트 할 방향을 나타내는 새로운 의사 잔차 계산


이러한 단계를 반복하여 L 모델을 순차적으로 구축하고 경사 하강 방식에 따라 집계합니다. 적응 형 부스팅은 각 반복에서 정확히 "로컬"최적화 문제 (최고의 약한 학습자와 강한 모델에 추가 할 계수 찾기)를 해결하려고 시도하지만, 그래디언트 부스팅은 그래디언트 디센트 방식을 사용하므로보다 쉽게 조정할 수 있습니다. 많은 손실 함수. 따라서, 그래디언트 부스팅 (gradient boosting)은 임의의 차별화 가능한 손실 함수에 대한 일반화로 간주 될 수 있습니다 .



그라디언트 부스팅은 각 반복에서 관측치의 값을 업데이트합니다. 약한 학습자는 오류를 줄이기 위해 현재 앙상블 모델 예측을 수정하는 방향을 나타내는 의사 잔차에 맞도록 훈련됩니다.


Stacking 스태킹 개요


스태킹은 주로 두 지점에서 배깅 및 부스팅과 다릅니다. 첫 번째 스태킹은 종종 이기종 약한 학습자를 고려합니다 (다른 학습 알고리즘이 결합 됨). 둘째, 스태킹은 메타 모델을 사용하여 기본 모델을 결합하는 반면 배깅 및 부스팅은 결정적 알고리즘에 따라 약한 학습자를 결합합니다.


Stacking 스태킹


이미 언급했듯이 스태킹의 개념은 여러 가지 약한 학습자를 배우고 메타 모델 을 훈련시켜 이들 약한 모델이 반환 한 여러 예측을 기반으로 예측을 출력하는 것입니다. 따라서 스태킹 모델을 구축하려면 두 가지를 정의해야합니다. L 학습자가 적합하고 메타 모델이 결합되어 있습니다.


예를 들어, 분류 문제의 경우 KNN 분류기, 로지스틱 회귀 및 SVM을 약한 학습자로 선택하고 신경망을 메타 모델로 학습하기로 결정할 수 있습니다. 그런 다음 신경망은 3 명의 약한 학습자의 출력을 입력으로 사용하고이를 기반으로 최종 예측을 반환하는 방법을 학습합니다.


따라서 L 약한 학습자로 구성된 스태킹 앙상블을 맞추고 싶다고 가정합시다. 그런 다음 그 단계를 따라야합니다.


훈련 데이터를 두 가지로 나눕니다. 

L 약한 학습자를 선택하고 첫 번째 배의 데이터에 적합시킵니다.

L 약한 학습자 각각에 대해 두 번째 접기에서 관측 값을 예측합니다.

약한 학습자의 예측을 입력으로 사용하여 메타 모델을 두 번째 접기에 맞춥니다.


이전 단계에서는 약한 학습자의 학습에 사용 된 데이터에 대한 예측 이 메타 모델의 학습과 관련 이 없기 때문에 데이터 세트를 두 부분으로 나눕니다. 따라서 두 부분으로 나뉘어 진이 데이터 세트의 명백한 단점은 기본 모델을 학습하는 데 절반의 데이터와 메타 모델을 학습 할 수있는 데이터의 절반 만 가지고 있다는 것입니다. 그러나 이러한 한계를 극복하기 위해 모든 관측 값을 사용하여 메타-트레이닝 모델 : 모든 관찰에 대해, 약한 학습자의 예측은 고려 된 관찰을 포함하지 않는 k-1 폴드에 대해 훈련 된 이러한 약한 학습자의 인스턴스로 수행됩니다. 다시 말해, 그것은 나머지 폴드에 대한 예측을하기 위해 k-1 폴드에 대한 훈련과 반복적으로 모든 폴드에서 관측에 대한 예측을 얻는 것으로 구성된다. 그렇게하면서




스태킹은 일부 하위 계층의 약한 학습자가 반환 한 출력을 기반으로 출력을 생성하도록 메타 모델을 학습하는 것으로 구성됩니다.


Multi-levels Stacking 다단계 스태킹


스태킹의 가능한 확장은 다중 레벨 스태킹입니다. 여러 레이어로 쌓아 올리는 것으로 구성됩니다 . 예를 들어, 3 단계 스태킹을 고려해 봅시다. 첫 번째 레벨 (계층)에서 우리는 선택된 L 약한 학습자에게 적합합니다. 그런 다음 두 번째 수준에서는 약한 모델 예측에 단일 메타 모델을 맞추는 대신 (이전 하위 섹션에서 설명했듯이) M 같은 메타 모델에 맞습니다. 마지막으로, 세 번째 수준에서는 이전 수준의 M 메타 모델이 반환 한 예측을 입력으로받는 마지막 메타 모델에 맞습니다.


실용적인 관점에서, 다중 레벨 스태킹 앙상블 모델의 서로 다른 레벨의 각 메타 모델에 대해, 우리가 원하는 거의 모든 것이 될 수있는 학습 알고리즘을 선택해야합니다 (이미 낮은 레벨에서 이미 사용 된 알고리즘조차도) . 또한 레벨 을 추가하는 것은 데이터가 비싸거나 (기술과 같은 k- 폴드를 사용하지 않으면 더 많은 데이터가 필요한 경우) , 시간이 비싸다 (기술과 같은 k- 폴드를 사용하면 많은 모델이 될 수 있음) 장착해야 함).






다중 레벨 스태킹은 여러 계층의 스태킹을 고려합니다. 일부 메타 모델은 하위 계층 메타 모델에서 반환되는 출력에 대해 훈련됩니다. 여기서는 3 계층 스태킹 모델을 나타냅니다.


Takeaways


이 게시물의 주요 내용은 다음과 같습니다.


앙상블 학습은 여러 모델 (종종 약한 학습자 또는 기본 모델이라고 함)이 동일한 문제를 해결하고 더 나은 성능을 얻도록 훈련되는 기계 학습 패러다임입니다.

주요 가설은 약한 학습자를 올바른 방법으로 결합하면 더 정확하고 견고한 모델을 얻을 수 있다는 것입니다.

배깅 방법에서, 동일한 기본 모델의 여러 인스턴스가 서로 다른 부트 스트랩 샘플에서 병렬로 (서로 독립적으로) 훈련 된 후 어떤 종류의 "평균화"프로세스로 집계

배깅 방법에서 (거의) iid 장착 모델에 대해 수행 된 평균화 작업의 종류는 주로 컴포넌트보다 낮은 분산을 갖는 앙상블 모델을 얻을 수 있게 합니다.

부스팅 방법에서, 동일한 기본 모델의 여러 인스턴스가 순차적으로 훈련되어 각 반복에서 현재 약한 학습자를 훈련시키는 방법이 이전 약한 학습자, 특히 데이터에서 수행하는 방법에 따라 달라집니다

부스팅 방법에 사용되는 학습의 반복 전략은 현재 모델을 훈련시키기 위해 이전 모델의 약점에 적응하며, 주로 컴포넌트보다 편견이 낮은 앙상블 모델을 얻을 수 있습니다. 높은 바이어스는 부스팅에 적합합니다.

스태킹 방법에서는 서로 다른 약한 학습자가 서로 독립적으로 적합하며 기본 모델이 반환 한 출력을 기반으로 출력을 예측할 수 있도록 메타 모델을 학습합니다.


이 글에서 우리는 앙상블 학습에 대한 기본 개요, 특히 부트 스트랩 핑, 배깅, 랜덤 포레스트, 부스팅 (아 부스트, 그라디언트 부스팅) 및 스태킹과 같은이 분야의 주요 개념에 대한 기본 개요를 제공했습니다. 남겨둔 개념들 중에서도 우리는 예를 들어 bagging을위한 Out-of-Bag 평가 기법 또는 Gradient Boosting 방법을 구현하는 라이브러리 인 매우 인기있는 "XGBoost"(eXtrem Gradient Boosting)를 언급 할 수 있습니다. 학습을 훨씬 더 효율적으로 만들어주는 빅 트릭을 추가했습니다.


마지막으로, 앙상블 학습은 더 나은 성능 / 속성을 가진 앙상블 모델을 얻기 위해 일부 기본 모델을 결합하는 것에 관한 것임을 상기시켜 드리고자합니다. 따라서, bagging, boosting 및 stacking이 가장 일반적으로 사용되는 앙상블 방법이더라도 변형이 가능하며 일부 특정 문제에 더 잘 적응하도록 설계 될 수 있습니다. 여기에는 주로 두 가지가 필요합니다. 우리가 겪고있는 문제를 완전히 이해하고 창의력을 발휘하십시오!


읽어 주셔서 감사합니다!


Chris송호연 소속Riiid
구독자 1,885
매거진의 이전글 GPU 분산 학습 기법: All-Reduce

매거진 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari
브런치 시작하기

카카오계정으로 간편하게 가입하고
좋은 글과 작가를 만나보세요

카카오계정으로 시작하기
다른 SNS로 가입하셨나요?