Machine Learning/Theory

[앙상블] 배깅(bagging)과 부스팅(boosting)

ju_young 2021. 6. 13. 14:31
728x90

앙상블 기법은 여러 개의 분류 모델을 조합해서 더 나은 성능을 내는 방법이다. 크게 배깅(bagging)과 부스팅(boosting)으로 나눌 수 있다.

배깅(bagging)

배깅은 비유하자면 한 명의 중급자보다 두세 명의 초급자가 나누어서 수행하는 것이 더 나은 것과 비슷하다. 여기서 중급자를 과대적합된 모델이라고 할 수 있는데 이런 과대적합이 쉬운 모델에 상당히 적합한 것이 배깅이라고 할 수 있다.

 

배깅은 한 가지 분류 모델을 여러 개 만들어서 서로 다른 학습 데이터로 학습(부트스트랩)시킨 후, 동일한 테스트 데이터에 대한 서로 다른 예측값들을 투표(어그리게이팅)를 통해 가장 높은 예측값으로 최종 결론을 내리는 앙상블 기법이다.

 

여기서 부트스트랩과 어그리게이팅에 대해 좀 더 자세히 살펴보자.

부트스트랩

부트스트랩은 데이터를 조금은 편향되도록 샘플링하는 기법이다. 편향된다는 말은 데이터의 특징 수를 줄인다고 이해하면 편할 것 같다. 보통 의사결정 트리처럼 과대적합되기 쉬운 모델을 앙상블할 때 많이 사용된다. 또한 의사결정 트리는 하이퍼파라미터 설정 없이 학습할 때 쉽게 과대적합된다.

 

부트스트랩은 N개의 데이터를 모델의 개수만큼 데이터로 나누어 담는다. 이때 중복을 허용하여 담음으로서 데이터의 편향을 높인다.

 

예를 들어서 데이터가 다음과 같이 있다고 해보자.

전체 데이터: [1, 2, 3, 4, 5, 6, 7, 8, 9]

그리고 의사결정 트리 6개를 배깅한다고 하면 결과는 다음과 같이 나올 수 있다.

의사결정 트리1의 학습 데이터: [1,2,3,4,5,1]
의사결정 트리2의 학습 데이터: [2,3,4,5,6,2]
의사결정 트리3의 학습 데이터: [3,4,5,6,7,3]
의사결정 트리4의 학습 데이터: [4,5,6,7,8,4]
의사결정 트리5의 학습 데이터: [5,6,7,8,9,5]
의사결정 트리6의 학습 데이터: [6,7,8,9,1,6]

위처럼 데이터를 샘플링한 결과 각 분류 모델은 총N개의 데이터보다 적은 데이터로 학습하되, 중복된 데이터를 허용함으로서 편향이 높은 학습 데이터로 학습된다. 데이터 샘플링 크기는 보통 전체 데이터의 60~70%를 사용한다.

어그리게이팅

어그리게이팅은 간단히 말해서 투표를 통해 결정된다고 보면된다. 그리고 이 투표 방식은 '하드 보팅', '소프트 보팅'으로 나뉘어진다.

하드 보팅

하드 보팅은 간단히 생각하면 최대 득표를 받은 예측값으로 결론을 도출하는 방식이다.

예를 들어 의사결정 트리 6개가 다음과 같이 분류값을 예측했다고해보자.

분류모델 분류값
의사결정 트리1 1
의사결정 트리2 2
의사결정 트리3 7
의사결정 트리4 7
의사결정 트리5 7
의사결정 트리6 7

총 6개의 투표 중 7이 4개로 최다 득표를 받아 최종적으로 도출되는 것이다.

소프트 보팅

소프트보팅은 모든 분류값의 확률을 반환한다. 그리고 각 분류값별 확률을 더해준 값을 점수로 사용해 최대 점수를 가진 분류값을 결론으로 도출한다.

  1 2 3 4 5 6 7 8 9
트리1 0.9 0.1 0 0 0 0 0 0 0
트리2 0 0.8 0.1 0.1 0 0 0 0 0
트리3 0 0 0.1 0 0 0 0.9 0 0
트리4 0 0 0 0.1 0 0 0.9 0 0
트리5 0 0 0 0 0 0 1 0 0
트리6 0.4 0 0 0 0 0 0.6 0 0
분류값 확률 합 최종 점수
1 0.9 + 0.4 1.3
2 0.1 + 0.8 0.9
3 0.1 + 0.1 0.2
4 0.1 + 0.1 0.2
5 0 0
6 0 0
7 0.9 + 0.9 + 1 + 0.6 3.4
8 0 0
9 0 0

결과적으로 최종 점수 3.4를 받은 7로 분류하게 된다.

랜덤 포레스트

랜덤 포레스트는 여러 의사결정 트리를 배깅해서 예측을 실행하는 모델이다. 의사결정 트리에서는 최적의 특징으로 트리를 분기하는 반면, 랜덤 포레스트는 각 노드에 주어진 데이터를 샘플링해서 일부 데이터를 제외한 채 최적의 특징을 찾아 트리를 분기한다. 이러한 과정에서 랜덤 포레스트는 또 한 번의 모델의 편향을 증가시켜 과대적합의 위험을 감소시킨다.

https://commons.wikimedia.org/wiki/File:%EB%9E%9C%EB%8D%A4%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8_%ED%95%99%EC%8A%B5%EA%B3%BC%EC%A0%95_%EB%B0%B0%EA%B9%85.png

포레스트를 구성하는 모든 트리들을 동일한 데이터셋으로만 훈련시키게 되면, 트리들의 상관성(correlation)은 굉장히 커질 것이다. 따라서 배깅은 서로 다른 데이터셋들에 대해 훈련 시킴으로써, 트리들을 비상관화시켜 주는 과정이다.


부스팅

부스팅은 순차적으로 학습해서 여러 개의 분류기를 만들고 테스트할 때 가중 투표를 통해 예측값을 결정한다. 여기서 순차적으로 학습한다는 것은 예를 들어 남자 또는 여자로 분류하는 의사결정 트리가 있다고하면 먼저 첫 번째 의사결정 트리를 학습하고 데스트 결과 미흡한 데이터가 있을 경우, 그 데이터를 보강한 후 다음 의사결정 트리를 학습하는 방식을 말한다.
정리하자면 부스팅은 순차적으로 학습 데이터를 보강하며 동일한 알고리즘의 분류기를 여러 개 만드는 과정을 가진다.

가중 투표

가중 투표는 한 표의 가치가 다른 투표로 진행하는 것이다.

하드 보팅

  분류기1 분류기2 분류기3
정확도 0.4 0.5 0.95
  분류기1 분류기2 분류기3
분류값 남자 남자 여자
남자 = 0.4 + 0.5
여자 = 0.95

이처럼 두 분류기가 남자라고 예측했음에도 가중 투표 결과 여자로 분류하게 된다.

소프트 보팅

소프트 보팅의 경우 단일 예측값이 아닌 모든 분류값에 대한 확률에 가중치를 곱한 값으로 최종 결론을 도출한다.

  분류기1 분류기2 분류기3
분류값 남자: 0.7
여자: 0.3
남자: 0.8
여자: 0.2
남자: 0.1
여자: 0.9
남자: 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

소프트 보팅의 결과 여자로 최종 결론을 도출할 수 있다.

728x90

'Machine Learning > Theory' 카테고리의 다른 글

선형회귀(Linear Regression)  (0) 2021.06.24
K 평균 알고리즘(kmean++)  (0) 2021.06.22
나이브 베이즈(Naive Bayes)  (0) 2021.06.03
의사결정 트리(decision tree)  (0) 2021.05.30
SVM(Support Vector Machine)  (0) 2021.05.25