Posts Ensemble 개념 정리
Post
Cancel

Ensemble 개념 정리

:mag: Index


:radio_button: Ensemble 이란?

머신러닝/딥러닝에서 앙상블이란 여러 단일 예측(or 분류)모델을 하나로 엮어 더 좋은 성능의 복합 모델을 만드는 기법을 뜻한다.

사람으로 치면 조금 똑똑한 사람 여러명을 통한 집단 지성으로 아주 똑똑한 전문가 한 명보다 더 좋은 결과를 가져오는 상황 쯤으로 이해할 수 있다.

뛰어난 성능의 단일 모델도 물론 좋지만, 적당한 성능의 여러 단일 모델 조합하여 앙상블 모델을 활용하면 더 뛰어난 일반화 성능을 자랑하는 경우가 많기 때문에 지금까지도 이를 활용한 연구가 활발히 진행되고 있다.

집단지성


:radio_button: Ensemble 의 3가지 유형

이러한 앙상블 기법에는 여러 종류가 있지만 가장 대표적이고 많이 쓰이는 유형은 3가지가 있다.

  1. Voting

  2. Bagging

  3. Boosting

각 기법을 활용하는 대표 모델은 다음과 같다.

Bagging : Random Forest

Boosting : AdaBoost, Gradient Boost, XGBoost, LGBM


:radio_button: 1. Voting

Voting 기법은 앙상블 기법 중 가장 간단한 기법으로 분류(Classification) 문제에서 활용된다.

“각각의 단일 모델들이 예측한 분류 중 가장 많은 비율을 차지한 레이블을 최종 결과로 예측한다” 가 바로 보팅 방식의 개념이다.

예를 들어 1,2,3 중 하나로 분류해야 하는 문제를 위해 10개의 단일 모델을 보팅 방식으로 앙상블 하였다고 가정하자.

각 모델들의 예측이 다음과 같다면,

1
2
3
4
5
6
7
1로 예측 : 2개 모델
2로 예측 : 5개 모델
3로 예측 : 3개 모델

1로 예측한 비율 => 0.2
2로 예측한 비율 => 0.5 (win!)
3로 예측한 비율 => 0.3

최종 결과를 2로 예측 하는것이 바로 Voting 이다.

이러한 Voting 기법은 크게 2가지 방식의 적용 방식이 존재하는데,

:pencil2: Hard Voting

  • 위에서 예시로 든 상황처럼 각 모델들의 softmax(or logistic) 적용 값에서 가장 큰 값만 참고하여 비율을 계산

ex) A, B, C 모델의 softmax 적용 값이 다음과 같다면

A 모델 = {1일 확률: 0.7 , 2일 확률: 0.2 , 3일 확률: 0.1}

B 모델 = {1일 확률: 0.4 , 2일 확률: 0.3 , 3일 확률: 0.3}

C 모델 = {1일 확률: 0.0 , 2일 확률: 0.9 , 3일 확률: 0.1}

각 모델의 max 분류만 참고하여

“A번 모델 = 1이라 예측”

“B번 모델 = 1이라 예측”

“C번 모델 = 2이라 예측”

와 같이 생각하여 가장 비율이 큰 1 을 최종 분류로 결정하는 방식으로 voting을 진행

:pencil2: Soft Voting

  • hard voting 보다 조금 더 정교한 계산 방식으로, softmax(or logistic) 적용 값을 모두 참고하여 비율을 계산

ex) A, B, C 모델의 softmax 적용 값이 다음과 같다면

A 모델 = {1일 확률: 0.7 , 2일 확률: 0.2 , 3일 확률: 0.1}

B 모델 = {1일 확률: 0.4 , 2일 확률: 0.3 , 3일 확률: 0.3}

C 모델 = {1일 확률: 0.0 , 2일 확률: 0.9 , 3일 확률: 0.1}

각 모델의 softmax 값을 모두 참고하여

“1이라 예측한 softmax 값 총합 = 0.7(A) + 0.4(B) + 0.0(C) = 1.1”

“2이라 예측한 softmax 값 총합 = 0.2(A) + 0.3(B) + 0.9(C) = 1.4”

“3이라 예측한 softmax 값 총합 = 0.1(A) + 0.3(B) + 0.1(C) = 0.5”

와 같이 생각하여 가장 총합이 큰 2 를 최종 분류로 결정하는 방식으로 voting을 진행


:radio_button: 2. Bagging

Bagging 기법은 Random Forest 개념 정리 에서도 자세히 다뤘지만,

Bootstrapping + aggregating 의 합성 용어이다.

Boostrapping 이란 통계학 용어로, 전체 집합에서 무작위 복원추출을 통해 여러 부분집합을 만드는 행위를 말한다.

예를들어 [1,2,3,4,5] 라는 전체 데이터셋이 있을때 무작위 복원추출을 통하여 크기가 3짜리인 부분 데이터셋 [3,1,3] , [2,5,1] , [4,5,5] 등등을 만드는 것이 부트스트래핑이다.

이러한 행위의 목적은 전체 집합의 각기 다른 부분 집합을 통해 여러 모델들을 학습하게 되면 정답에 대한 편항을 증가시키는 효과가 있어 일반화 성능에 도움이 되기 때문이다.

boostrap

Aggregating 이란 ‘집계하다’ 라는 의미를 가진 광범위한 용어로 평균이나 최빈값 등을 도출하는 동작을 말한다.

Bagging 에서의 집계란 위의 Boostrapping 을 통해 생성된 각기 다른 데이터셋으로부터 학습한 여러 모델들의 아웃풋을 집계하여 최종 예측값/분류값을 도출하는 과정을 말한다.

학습의 목적이 Prediction / Classification 인지에 따라 집계하는 방식이 다른데, 가장 많이 활용되는 방식은 다음과 같다.

:pencil2: Prediction

Averaging : Bagging을 통해 엮인 각 모델들의 출력값의 평균을 최종 출력으로 사용한다.

if

Model_1 ==> 5.5

Model_2 ==> 7

Model_1 ==> 4.5

Final_output = (5.5 + 5 + 4.5)/3 = 5.0

:pencil2: Classification

데이터 성격에 맞는 Voting 방식을 택한다.

FYI, Random Forest 모델은 각 의사결정나무의 출력을 Hard-Voting을 통해 집계한다.

이러한 Bagging 기법은 Over-fitting에 빠지기 쉬운 단일 모델들에 적용하였을 때 효과있으며 다르게 표현하면

“편향이 작은 여러 모델” 들을 활용해 “분산을 줄이는” 앙상블 기법이라고 할 수 있다.


:radio_button: 3.Boosting

Boosting 기법은 Bagging 과 비슷하면서도 다른 독특한 앙상블 기법이다. 그 공통점/차이점에 대해 한줄요약하면 다음과 같은데,

Boosting은 Bagging과 비슷하게 여러 모델들을 학습시키고 각 모델을의 출력을 Averaging , 혹은 Voting하여 최종 출력을 결정한다.

Boosting은 Bagging과 다르게 앙상블 되는 모델은 동일한 알고리즘 기반 모델이며, 각 모델들이 병렬적이 아닌 순차적으로 학습하고, 집계 시 각 모델의 출력에 가중치를 적용하여 집계한다.

즉, Boosting과 Bagging은 절차 껍데기는 같으나 각 단계의 동작은 다른 성격을 띈다. 다른 점을 하나씩 살펴보자면,

1.앙상블 되는 모델은 동일한 알고리즘 기반 모델이다.

  • Bagging의 경우 랜덤 포레스트와 같이 동일 알고리즘 기반 모델을 앙상블 하는것도 가능하지만, 각 모델이 서로 의존적 관계가 아니기 때문에 다른 알고리즘 기반의 모델을 앙상블 하는것도 가능하다. (Ex. SVC + DecisionTree Classifier + BNaive Bayesian Classifer)

2.각 모델들이 병렬적이 아닌 순차적으로 학습한다.

  • Bagging에서는 각 모델들이 Bootstrapping을 통해 생성된 부분데이터셋으로 학습하기 때문에 의존적 관계가 아니다 라는 표현을 하였는데 Boosting에서는 각 모델들이 어떤 데이터를 통해 학습할지가 이전 모델이 학습하고 나서야 정해진다.

남자,여자 중 하나로 분류하는 예측작업을 위해 부스팅 앙상블을 활용하려면,

  1. 임의의 부분 데이터셋을 생성하여 단일 모델 하나(ex. DT)를 먼저 학습해본다.
  2. 1번의 모델의 분류별 예측률을 확인했더니 남자 레이블 예측이 더 저조하였다면 1번에서의 학습 데이터셋에 남자 레이블 정보를 조금 더 추가한다.
  3. 2번에서 보완된 데이터셋을 통해 다음 단일 모델을 학습해본다.
  4. 2 ~ 3 번의 과정을 반복한다.

이러한 방식으로 학습하기 때문에 순차적 학습 이라고 부른다.

Bagging , Boosting 방식의 차이를 그림으로 나타내면 다음과 같다.

bagging VS boosting

3.집계 시 각 모델의 출력에 가중치를 적용하여 집계한다.

  • 2번의 특징처럼 순차적 학습을 진행하게되면, 당연하게 이후에 학습하는 모델들이 더 좋은 성능을 보이므로 각 모델의 출력을 집계할 때 이런 성능차이를 고려하기 위하여 가중치 개념을 적용한다.
  • 참고 도서에서는 가중치를 모델의 정확도로 써서 예시를 들었는데,

예를 들어 남/여를 분류하는 작업을 하는 세 분류기의 정확도가 다음과 같고,

  분류기1 분류기2 분류기3
정확도 0.4 0.5 0.95

각 모델이 분류가 다음과 같을때,

  분류기1 분류기2 분류기3
분류값 남자: 0.7 , 여자: 0.3 남자: 0.8 , 여자: 0.2 남자: 0.1 , 여자: 0.9

랜덤포레스트 모델에서 소프트 보팅을 하였다면 분류기1의 0.7 , 0.3 이란 값이 그대로 쓰였겠지만,

Boosting 방식에서는 분류기1의 가중치(정확도)인 0.4를 곱한 값으로 집계하게 된다. (0.4X0.7 , 0.4X0.3)

따라서 최종적으로 각 레이블일 확률은 다음과 같이 집계되어

남자 : 0.4*0.7 + 0.5*0.8 + 0.95*0.1 = 0.775

여자 : 0.4*0.3 + 0.5*0.2 + 0.95*0.9 = 1.075

Boosting 모델의 최종 출력은 여자 레이블로 계산된다.

이러한 Boosting 기법은 under-fitting된 동일 단일 모델들에 적용하였을 때 효과있으며 다르게 표현하면

“분산이 작은 여러 모델” 들을 결합하여 “편향을 낮추는” 앙상블 기법이라고 할 수 있다.


:radio_button: 참고자료

This post is licensed under CC BY 4.0 by the author.