본문 바로가기

통계

[머신러닝]앙상블/배깅/랜덤포레스트/부스팅 차이

안녕하세요! 

오늘은 헷갈리는

앙상블/배깅/랜덤포레스트/부스팅 의 차이에 대해 알아보도록 하겠습니다!

 

앙상블

주어진 데이터를 여러개의 서로 다른 예측 모형을 생성한 후, 

이러한 예측 모형의 결과를 종합하여 하나의 최종 예측 결과를 도출

데이터관점에서는, 아래와 같습니다.

빨강이냐 파랑이를 분류하는 이진분류 상황을 가정하겠습니다.

각 모델들의 예측값들이 있을 겁니다.

예측값들을 하나로 모은 다음에, 

회귀가 목적이라 연속형 변수라면 평균을, 분류 문제면 다수결로 결과를 도출하는 것이

앙상블 입니다! 

 

 

배깅

배갱의 뜻은 Boostrap aggregation입니다.

즉, boostrap(=복원추출 사용한 표본추출 방법)을 aggregate(통합)하는 것이죠.

그냥 붓스트랩을 여러번 해서, 여러 훈련 세트를 만들고

각각의 훈련세트에 모델을 적용해서 그 결과 값을 평균 냄으로써, 분산을 줄이는 기법입니다.

각 훈련세트는 독립적입니다.

 

단일 훈련자료로부터 반복하여 표본들을 샘플링해 B개의 다른 붓스트랩 된 훈련 자료를 생성합니다.

B개의 훈련 자료를 사용햐여 예측모델을 B개 만들고 그 예측 결과들을 평균을 냅니다.

이는 통계학적으로 분산을 낮춰주는 효과가 있습니다.

 

의사결정 나무는 높은 분산이 문제가 됩니다. (트리 분할이 데이터에 크게 의존하여 훈련 데이터의 작은 변화가 결정 로직에 큰 변화를 가져온다 = 불안정하다)

 

따라서, 의사결정나무에 배깅을 적용하면, B개의 붓스트랩 표본이 생성이 되고, 각 훈련셋트에 대해 의사결정 나무를 만들고 그 결과 값을 평균을 내게 됩니다.

결국, 의사결정나무의 단점인 높은 분산이 줄어들게 되어 성능이 향상됩니다.

 

 

랜덤포레스트

배깅의 일종입니다. 배깅과 다른 점은, '설명변수'도 무직위로 선택한다는 것 입니다.

즉, 설명변수를 무작위로 선택함으로써, 트리의 다양성을 확보하여 모형간의 상관관계를 줄이고자 하는 것 입니다.(decorrelate)

예를 들어, 1번째 샘플링에서는 변수가 a~e까지 5개가 선택되고 이를 기반으로 의사결정나무를 만듭니다.

2번째 샘플링에서는 변수가 c,w,z 3개가 선택되고 이를 기반으로 의사결정나무를 만듭니다.

3번째 샘플링에서는 변수가 a, u, v, b 4개가 선택되고 이를 기반으로 의사결정나무를 만듭니다.

 

이런식으로 여러개의, 서로 상관관계가 없는 트리를 막~~~~~만들어 내서 

결과를 평균(회귀분석. 예측)내거나 다수결(분류)의 원칙으로 하나의 최종 결과를 보여주게 됩니다.

 

 

부스팅

배깅과 유사하지만, 붓스트랩 표본을 구성하는 재표본 과정에서

분류가 잘못된 데이터에 더 큰 가중치/확률을 부여하여 표본을 추출

 

즉, 부스팅은 붓스트랩 샘플링을 통해 훈련 세트를 한 번 뽑고 트리를 만듭니다.

그 트리에서!!!!잘못 분류된 데이터를 봅니다.(더 정확히는 잔차를 봅니다.)

그리고 그 잔차를 줄이는 방향으로 2번째 뽑히는 데이터에 가중치/확률을 부여합니다.

이런식으로 계~~~~속 반복하는게 부스팅입니다.

한 스텝에서 계속 개선되어지니까, 학습속도가 당연히 느립니다.

 

부스팅의 핵심 키워드 2개는

잘못된 데이터(잔차), 더 큰 가중치/확률 입니다!