nathan_H

Ensembles 본문

Big Data/ML

Ensembles

nathan_H 2019. 6. 4. 18:47

 

 

Ensemble

 

앙상블이란 여러개의 weak learning을 만들어

학습 시킨후 결합시켜 최종 결과를 만드는 기법이다.

 

그리고 여러개의 weak learning을 만들고 

그 결과를 결합시켜 최종 결정을 함으로써

다음과 같은 장점들을 가지고 있다.

 

 

1) Error 최소화

- 다양한 모델의 결과를 종합하여 전반적으로

오류를 줄여준다.

 

2) Overfitting 감소

- 각 모델별 bias가 존재하고 다양한 bias를 종합하여

결과를 생성하게 되어, overfitting을 줄여줌.

 

3) Low bias, High Variance

- Variance을 줄이기 위한 기법.

 

 이러한 장점으로 Ensemble은

많은 성능 향상 효과를 가지고 있다.

 

직관적으로 해석하자면 많이 다양하게 학습시키고

그 결과를 종합해 최종 결과를 만들어 낸다고 생각하면 된다.

 

 

Ensemble에도 다양한 기법들이 있는데

차근 차근 알아보자

 

 

 

Boosting

 

 

Boosting에 기본 아이디어

N: 데이터 개수, M: 모델 개수

 

대부분의 경우 N > M이므로,

각 모델이 몇 데이터씩 완벽하게 담당해준다면

모든 경우의 데이터를 커버할 수 있지 않을까?

라는 질문에서 시작된 방법이다.

 

 

진행 방식

 

부스팅의 경우 전체 데이터에서 여러 샘플링 데이터를 추출하여

순차적으로 이전 학습 분류기의 결과를 토대로

다음 학습 데이터의 샘플 가중치를 조정하면서 학습을 진행한다.

 

그리고 부스팅의 가장 큰 특징은 다음 단계의 weak classifier가

이전 단계의 weak classifier의 영향을 받는다는 점이다.

즉, 이전의 classifier의 양상을 보고 보다 잘 맞출 수 있는 방향으로

다음 단계를 진행하고 각 classifier의 weight를 업데이트 하게 된다.


 최종적으로 서로 영향을 받아 만들어진 여러 weak classifier와

서로 다른 weight를 통해 strong classifier를 생성하게 된다.

 

 

위 그림을 통해 Boosting에 학습 과정을 알아보자.

 

4개의 모델(hypothesis): h1~h4

 

 통합 모델: h

 

녹색막대: 데이터
-> 즉, 4개의 데이터

-> 녹색막대의 길이 = 그 데이터의 weight

 

 Boosting 의 학습 알고리즘 (Pedro Domingos’ Algorithm)

 

(1) 모든 데이터 weight 를 1로 초기화

 

(2) 각 h1~h4에 대하여,
-> hi가 틀리게 예측한 데이터의 weight 증가

 

(3) 새로운 데이터 x에 대해 테스트할 때는,
-> 모든 h1~h4를 대상으로 ‘weighted majority’
(예: h4는 다 맞췄으니 weight가 가장 큼)

 

 

AdaBoost

내용 출처 - https://excelsior-cjh.tistory.com/166

 

AdaBoost는 과소적합(underfitted)됐던 학습 데이터 샘플의

가중치를 높이면서 새로 학습된 모델이 학습하기

어려운 데이터에 더 잘 적합되도록 하는 방식이다.


 

 

 

1. 먼저 전제 학습 데이터셋을 이용해 모델을 만든 후,

잘못 예측(분류)된 샘플의 가중치를 상대적으로 높여준다.

 

2. 그 다음 두 번째 모델을 학습 시킬때 이렇게 업데이트된

가중치를 반영하여 모델을 학습 시킨다.

 

3. 이와 같은 과정을 반복한다.

 

 

예시 1)

 

Original learning algorithm ‘A’가 있을 때,
‘A’의 accuracy 가 50보다 약간이라도 높다면,
충분히 많은 수의 ‘A’를 합치게 되면,
학습 데이터에 대해서 ‘완벽하게‘ 동작하는
‘통합 모델‘을 만들 수 있다.

 

 

 

예시2)

 

source - http://www.37steps.com/exam/adaboost_comp/html/adaboost_comp.html

 

 

Bagging

 

 

Bagging은 Bootstarap Aggregation의 줄임말로

샘플링한 것들에 집합이라는 의미이다.

 

즉 학습 데이터 셋에서 랜덤하게 추출할때,

중복을 허용하는 방식을 배깅이라고 한다.

 

source - https://excelsior-cjh.tistory.com/166

 

위의 그림에서 각 모델이 학습된 후에 새로운 데이터에 대해서는

(Uniform Voting 기반으로 결과값 생성.)

분류(classification)일 때는 최빈값(mode)

즉, 가장 많은 예측 클래스로 앙상블이 예측하며,

회귀(regression)일 경우에는 각 분류기의

예측값의 평균을 계산하여 평균값을 예측값으로 한다.

(즉 Bagging을 통해 각 데이터의 다른 면들을 관찰하여 성능을 높여준다)

 

각 모델은 전체 학습 데이터셋으로 학습시킨 것보다 편향되어 있지만,

Bagging을 통해 분산(variance)이 감소한다.

 

그리고 일반적으로 Bagging 학습은 전체 학습 데이터셋을 이용해

하나의 모델을 학습시킬 때와 비교해서 편향은 비슷하지만 분산은 줄어든다고 한다.




 

 

 

 

Bagging vs Boosting

 

soruce- https://www.slideshare.net/freepsw/boosting-bagging-vs-boosting

 

source- https://swalloow.github.io/bagging-boosting

 

 

Random Forest

 

랜덤 포레스트(Random Forest)는

배깅(bagging)을 적용한 의사결정나무(decision tree)의 앙상블이다. 


 

즉 Decision Tree가 여러개 만들어진 형태라고 볼수 있다.

 

sourec - http://www.birc.co.kr/2017/02/06/%EC%95%99%EC%83%81%EB%B8%94ensemble-%EB%9E%9C%EB%8D%A4-%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8random-forest/

 

 

 랜덤포레스트는 데이터에서 부트스트래핑 과정을 통해

N개의 샘플링 데이터 셋을 생성한다.


 각 샘플링된 데이터 셋에서 임의의 변수를 선택하는 과정을 진행하고

변수의 갯수를 선택하는 방법은 M개의 총 변수들 중에서

sqrt(M) 또는 M/3개의 개수만큼 변수들을 랜덤하게 선택하고

나머지 변수는 모두 제거하는 과정 반복한다.


변수선택이 진행된 의사결정트리들을 종합하여 앙상블 모델을 만들고 

OOB error를 통해 오분류율을 평가한다.

 

 

Random Forest vs Decision Tree

 

 

Decision Tree 특징
- Bias 는 작고 Variance 는 크다
즉, noise 에 매우 민감

 

-  트리가 커지게 되면 overfitting 가능성이 큼

 

 

 Random Forest 특징

 

1. Bagging 과정은 각 Tree의 bias는 

유지하면서 variance는 작게 만든다.

 

2. 각 Tree는 서로 독립적으로 학습되었으므로, 

통합된 의사 결정 시 noise에 강해지게 된다,

 

 

정리

 

정리하자면 Random Forest는 내부적으로 

bagging이 작동되면서 여러개의 

decision tree을 생성함으로써 

bias 는 유지하되 variance는 낮춰

기존 decision tree보다 성능이 좋게 나온다.

 

Variance(tree에 깊이)가 크면 Noise에 민감하기 때문에

성능에 영향을 준다.

 

'Big Data > ML' 카테고리의 다른 글

EM Algorithms  (0) 2019.06.06
Hierarchical Clustering  (0) 2019.06.04
Marginalize  (0) 2019.06.01
KNN Algorithms ( 최근접 이웃 알고리즘)  (0) 2019.05.31
K-means Clustering(평균 군집화)  (0) 2019.05.31
Comments