[Data Analysis 개념] Ensemble(앙상블)-1 : Ensemble의 기본적인 개념

2020. 7. 28. 21:31ML in Python/Knowledge

1. Ensemble learning의 의미

 먼저, Ensemble이란 "조화"를 뜻하는 의미의 프랑스어이다. Ensemble모형에 대해서 말하기 전에 우리는 실생활에서 의사결정을 진행할 때, 다양한 사람들의 의견을 수렴한다. 그리고 이 과정에서는 "대수의 법칙"이 적용된다. "대수의 법칙"이란 큰 모집단에서 무작위로 뽑은 표본의 평균이 전체 모집단의 평균과 가까울 가능성이 높다는 통계학 개념이다. 즉, 많은 사람들의 의견이 전체 사회구성원의 의견과 동일하다는 것이다. Ensemble learning은 이 기본적인 아이디어에 기반한다. 

 Ensemble learning이라함은 여러개의 기본 모델을 활용하여 하나의 새로운 모델로 만들어낸다는 것이다. 이때의 기본모델(base model)을 weak learner / classifier / base learner / single learner라고 부른다. 이 base model들을 결합하여, 각각의 기본적인 모델의 결과를 합쳐서(투표해서, 평균내서) 한 가지의 결과를 만들어내는 것이 바로 Ensemble model인 것이다. 그리고 기본적인 모델들을 결합하여 전체 모델의 성능향상을 목표로한다. 

 아래 그림은 Ensemble model중 한 모형이다. ensemble은 bagging(bootstrap) / boosting / Randomforerst / stacking 등등 많은 기법이 있다. 기본 모형들을 결합하여 학습하는 것 자체가 ensemble이기 때문이다. 

https://commons.wikimedia.org/wiki/File:Ensemble_Boosting.svg

 

2. Ensemble learning의 기본

 

원칙 1) 

 이진분류 문제를 가정해보자. 맞출 확률이 p인 L개의 classifier model이 있다고 가정해보자. 그렇다면 ensemble의 경우는 아래와 같아진다. 

 만약 정답 확률이 1/2 이하일 경우(정확도가 떨어질 경우), L(classifier 개수)가 증가하면 할 수록 이항분포의 기대값은 낮아진다(예측 정확도가 떨어진다). 반면, 맞출확률이 1/2이상이면 L이 증가할 수록 이항분포의 기대값은 증가한다(예측 정확도가 올라간다). 

 => 즉, 앙상블에 쓰일 base learner의 정확도는 적어도 0.5보다는 커야한다는 뜻이다.

원칙 2)

 𝑉𝑎𝑟(𝑋 + 𝑌) = 𝑉𝑎𝑟(𝑋) + 𝑉𝑎𝑟(𝑌) + 2𝐶𝑜𝑣(𝑋, 𝑌)

 앞의 수식은 두 X + Y의 분산관계를 뜻한다. 여기서 만약 X와 Y가 독립이 아니라면 공분산이 발생한다. 만약 변수간의 상관관계가 명확해진다면, 공분산은 크게 발생한다. 이 변수를 앙상블에 쓰일 classifier 그 자체라고 생각하자. 만약 각각의 classifier가 독립이 아니라면 Tree가 증가하면 할 수록 ensemble model의 분산이 증가할 가능성이 발생한다. 이는 모델 성능을 하락시키는 결과를 불러올 수 있다는 것이다. 

=> 앙상블에 쓰일 각각의 base learner는 독립이다. 

 

원칙 3) 

 마지막으로, 3번째 원칙은 앙상블에 속하는 base learner의 수는 이론적으로 무한대이다는 것이다. 하지만, 무한대의 모델을 학습시키는 것은 사실상 불가능하기에, 통계학적으로 표본은 30개정도면 충분한 표본이 있다고 판단한다. 

 

그렇다면, 과연 이러한 원칙을 만족시켰을 때, Ensemble model이 진짜 성능향상을 일으키는지 아래 그림을 통해 알아보자.

 위의 그림을 보면 각각의 base learner (Learner1, Learner2, Learner3)는 0.5의 정확도(최소 정확도)를 가졌다. 그리고 이 base learner의 결과에서 다수로 나온 결과를 voting(투표)했을 때, 정확도는 0.625로 상승했다. 정말로 정확도가 상승하였다. 앙상블은 각각 base leaner의 결과를 결합하여 더 좋은 성능을 내는 Machine Learning 기법인 것이다. 

 위의 경우를 보았을 때 처럼, 앙상블은 최소 정확도 그 이상은 되어야한다. 그렇기에 기본적으로 Overfitting이 잘 되는 모델을 base learner로 사용한다. 그리고 대표적인 base learner는 Decision Tree를 이용하는 경우가 많다. 가장 많이 쓰이는 Ensemble learning 기법인 Random Forest와 Boosting은 바로 Tree기반 모델이다. 

 하지만 Ensemble은 말했듯이, 여러모델의 조합을 뜻하기에 Tree가 아닌 다른 모델들을 사용해도 무방하다. 다음은 Ensemble의 종류에 대해서 말해보자.

 

3. Ensemble learning의 종류

 Ensemble의 대표적인 종류로는 Bagging / Random Forest / Boosting / Stacking이 존재한다. Bagging / Random Forest / Boosting은 Tree기반의 단일 모델로 패키지함수로 제공되지만 Stacking은 Ensemble의 한 개념으로 구현을 통해 진행할 수 있다. 

 각각의 모델의 간략한 설명은 아래와 같다.

Bagging - 모델을 다양하게 만들기 위해 데이터를 재구성한다. 이때, 동일 데이터를 반복복원추출을 통해 다양한 데이터셋을 만들고, 이 다양한 데이터셋을 각각 학습시켜서 voting(or 평균)을 통해 결과를 도출하는 것이다. 

Random Forest - 모델을 다양하게 만들기 위해 데이터를 재구성하고, 거기에 변수 또한 재구성하는 것이다. 즉, Bagging처럼 데이터를 반복 복원추출을 진행하지만, 거기에 변수의 조합 또한 랜덤추출을 진행하는 것이다. 즉, Bagging은 동일한 모든 변수를 사용했다면, Random Forest는 특정 변수만 사용하는 Base Learner가 형성될 수도 있다. 

Boosting - 맞추기 어려운 데이터에 가중치를 두어 학습을 하는 것이다. 즉, 정확도가 낮은 틀리는 데이터를 집중적으로 학습하는 것이다. Boosting의 종류로는 Adaboost, Gradient boosting(Xgboost, LightGBM, Catboost) 등이 있다. 

Stacking - 모델의 Output을 새로운 독립변수로 하여 다른 learning모델의 Input으로 넣는 것이다. 

 

 다음 링크를 통해서 Bagging/Random Forest/Boosting/Stacking의 상세한 내용을 다루겠다. 

https://todayisbetterthanyesterday.tistory.com/48

 

[Data Analysis 개념] Ensemble(앙상블)-2 : Bagging, RandomForest

 앙상블에 대한 종류와 전반적인 설명은 아래 링크에 존재한다. 이 게시글에서는 앙상블 모형중 Bagging과 RandomForest에 대해서 알아보겠다. https://todayisbetterthanyesterday.tistory.com/47 [Data Analysi..

todayisbetterthanyesterday.tistory.com

https://todayisbetterthanyesterday.tistory.com/49

 

[Data Analysis 개념] Ensemble(앙상블)-3 : Boosting(Adaboost, Gradient Boosting)

1. Boosting  boosting은 오분류된 데이터에 집중해 더 많은 가중치를 주는 ensemble 기법이다. 맨 처음 learner에서는 모든 데이터가 동일한 가중치를 갖는다. 하지만, 각 라운드가 종료될 때마다, 가중치

todayisbetterthanyesterday.tistory.com