Notice
Recent Posts
Recent Comments
10-06 07:28
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

[ADP] 4장 데이터 분석 - Ensemble 본문

AI/ADP

[ADP] 4장 데이터 분석 - Ensemble

알 수 없는 사용자 2024. 8. 3. 23:02

앙상블은 그냥 여러 분류기(classifier)들의 결과를 합쳐서 정확도를 높이는 기법인데, 우선 데이터들을 여러 개의 훈련용 데이터 집합을 만들어서 각각의 데이터 집합에서 하나의 분류기를 만들어 앙상블하는 기법이다. 대표적인 방법에는 배깅(bagging)과 부스팅(boosting), 스태킹(Stacking) 이 있다.

 

배깅(Bagging, Bootstrap Aggregating)

 원 데이터 집합에서 크기가 같은 여러 개의 "단순 임의 복원추출"을 통해 얻어진 각 sample(bootstrap sample)에 대해 분류기(classifier)를 생성한 후에 그 결과를 합치는 기법이다. R의 adabag를 사용해서 bagging을 할 수 있다.

 

부스팅(Boosting)

 배깅이랑 비슷하지만 bootstrap sample 을 구성하는 재표본(re-sampling) 과정에서 각 자료에서 잘못 분류한 것에 대해 더 큰 가중치를 부여해서 그 데이터를 더 잘 분류 할 수 있도록 한다. Adaboosting 은 가장 많이 사용되는 부트스트랩 알고리즘임.

출처: https://www.datacamp.com/tutorial/what-bagging-in-machine-learning-a-guide-with-examples

 

스태킹(Stacking)

출처: https://rasbt.github.io/mlxtend/user_guide/classifier/StackingClassifier/

 보통 여러 개의 서로 다른 알고리즘이나 파라미터들을 사용한 기본 모델들을 학습 시킨 후에 기본 모델들이 예측한 결과를 입력으로 다시 사용해서 메타모델(meta-model, blender)가 다시 최종 결과를 예측하는 형태이다.

 

Voting

 모델들의 결과를 합칠 때, 이걸 어떤 방식으로 합치는지에 대해 다룬다. 이를 Voting이라고 하며, 투표 방식이 여러가지가 있을 것이다.

  • Hard Voting: 각자의 분류를 집계해서 가장 투표를 많이 받은 것을 선택한다(Majority Voting 이라고도 함).
  • Soft Voting: 각자 분류의 확률까지 고려하여 이것을 평균 혹은 다른 연산을 통해 더 높은 것을 선택한다.

 

Random Forest

 배깅 과정에서 랜덤 과정을 추가한 방법인데, 각 bootstrap sample에 대해 의사결정트리를 생성해서 예측변수들을 임의로 추출하고, 추출된 변수내에서 최적의 분할을 만들어 나가는 방법이다.

 의사결정트리를 생성할 때, 무작위로 샘플을 추출할 때 어떤 데이터는 뽑히지 않을 수도 있는데, 이를 OOB(Out-of-Bag) 데이터라고 한다. 그리고 모델간에 각 노드에서 분할할 때 사용할 특성의 서브셋을 무작위로 선택하며, 각각의 모델들이 가지는 서브셋들은 다 다를 것이다. 따라서 모델 간의 상관관계를 낮추기 때문에 서로 다른 생각을 하는 decision tree들이 생성될 것이다.

Comments