TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 머신러닝>

[머신러닝] 앙상블 학습(Ensemble Learning)

by 기록자_Recordian 2024. 6. 27.
728x90
반응형
앙상블 학습(Ensemble Learning)

 

많은 사람에게 복잡한 질문을 하고 대답을 모은다고 가정할 경우, 많은 경우 이렇게 모은 답이 전문가의 답보다 낫다 (대중의 지혜). 이와 비슷하게 일련의 예측기(분류나 회귀 모델)로부터 예측을 수집하면 가장 좋은 모델 하나보다 더 좋은 예측을 얻을 수 있을 것이다.

여기서 일련의 예측기를 앙상블이라고 부르며, 위와 같은 예측을 수집하는 작업을 앙상블 학습이라고 하며, 앙상블 학습 알고리즘을 앙상블 방법이라고 한다.

 

앙상블 학습을 통한 분류는,

여러 개의 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법을 말한다.

 

앙상블 학습의 목표는,

다양한 분류기의 예측 결과를 결합함으로써 단일 분류기보다 신뢰성이 높은 예측값을 얻는 것이다.

 

[앙상블 학습의 유형]

  • 부스팅: 여러 개의 분류기가 순차적으로 학습을 수행하되, 예측이 틀린 데이터에 대해서는 올바르게 예측할 수 있도록 다음 분류기에게는 가중치를 부여하면서 학습과 예측 진행 (대표: 그래디언트 부스트, XG Boost, LightGBM)
  • 배깅: 각각의 분류기가 모두 같으나, 데이터 샘플링을 다르게 가져가면서 학습 수행 (대표: 랜덤 포레스트). 훈련 세트에서 중복을 허용하여 샘플링하는 방식.
  • 페이스팅: 훈련 세트에서 중복을 허용하지 않고 샘플링하는 방식.
  • 보팅: 서로 다른 알고리즘을 가진 분류기 결합
  • OOB(out-of-bag) 평가: BaggingClassifier는 기본값으로 중복을 허용하여 (bootstrap=True) 훈련 세트의 크기만큼 m개 샘플을 선택하며, 이는 평균적으로 각 예측기에 훈련 샘플의 63% 정도만 샘플링된다는 것을 의미한다. 선택되지 않은 나머지 37%를 OOB(Out-of-bag) 샘플이라고 부르며, 예측기마다 남겨진 37% 모두 다르다.

※ 부트스트래핑(Bootstrapping): 개별 분류기에게 데이터를 샘플링해서 추출하는 방식

※ 스태킹(Stacking): 여러 가지 다른 모델의 예측 결괏값을 다시 학습 데이터로 만들어서 다른 모델로 재학습시켜 결과를 예측하는 방법

※ 배깅과 페이스팅에서는 같은 훈련 샘플을 여러 개의 예측기에 걸쳐 사용할 수 있다. 하지만 배깅만이 한 예측기를 위해 같은 훈련 샘플을 여러 번 샘플링할 수 있다.

 

 

앙상블 관련 내용은 하단 링크에서 확인할 수 있다. (7. 앙상블 분석 내용 확인)

 

[빅데이터 분석기사] 3과목 빅데이터 모델링(3-2-2)

[목차] [빅데이터 분석기사] 시험 과목 및 주요 내용 (필기)빅데이터 분석기사 (필기) 시험 과목 및 주요 내용 출처: 데이터자격검정 (dataq.or.kr) 필기과목명 주요항목 세부항목 세세항목 빅데이터

puppy-foot-it.tistory.com


앙상블 유형의 알고리즘

 

◆ 랜덤 포레스트

결정 트리의 앙상블을 의미하며, 간단한 방법임에도 가장 강력한 머신러닝 알고리즘이다.

 

[머신러닝] 분류 - 앙상블 2 : 랜덤 포레스트

시작에 앞서해당 내용은 ' 권철민 지음. 위키북스' 를 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다.앙상블 학습(Ensemble Learning) [

puppy-foot-it.tistory.com

 

◆ AdaBoost

이전 예측기를 보완하는 새로운 예측기를 만드는 방법은 이전 모델이 과소적합했던 훈련 샘플의 가중치를 더 높이는 것이다. 이렇게 하면 새로운 예측기는 학습하기 어려운 샘플에 점점 더 맞춰지게 되는데, 이것이 AdaBoost에서 사용하는 방식이다.

 

[머신러닝] 앙상블 : AdaBoost

앙상블 학습 [머신러닝] 분류 - 앙상블 학습(Ensemble Learning)앙상블 학습(Ensemble Learning) 앙상블 학습을 통한 분류는,여러 개의 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측

puppy-foot-it.tistory.com

 

 그레이디언트 부스팅 (GBM)

AdaBoost처럼 그레이디언트 부스팅은 앙상블에 이전까지의 오차를 보정하도록 에측기를 순차적으로 추가한다. 하지만 AdaBoost 처럼 반복마다 샘플의 가중치를 수정하는 대신 이전 예측기가 만든 잔여 오차에 새로운 예측기를 학습시킨다.

 

[머신러닝] 분류 - 앙상블 3 : GBM

시작에 앞서해당 내용은 ' 권철민 지음. 위키북스' 를 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다.앙상블 학습(Ensemble Learning) [

puppy-foot-it.tistory.com

 

XGBoost

XGBoost는 GBM에 기반하고 있지만, GBM의 단점인 느린 수행 시간 및 과적합 규제 부재 등의 문제를 해결하고, 특히 병렬 CPU 환경에서 병렬 학습이 가능해 기존 GBM 보다 빠르게 학습을 완료할 수 있어 트리 기반의 앙상블 학습에서 가장 각광받고 있는 알고리즘 중 하나이다.

또한 XGBoost는 자체적으로 교차 검증, 성능 평가, 피처 중요도 등의 시각화 기능을 가지고 있다.

 

[머신러닝] 분류 - 앙상블 4 : XG Boost (1)

시작에 앞서해당 내용은 ' 권철민 지음. 위키북스' 를 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다.앙상블 학습(Ensemble Learning) [

puppy-foot-it.tistory.com

 

 

LightGBM

LightGBM의 가장 큰 장점은 XGBoost보다 학습에 걸리는 시간이 훨씬 적고 메모리 사용량도 상대적으로 적다는 점이고, 기능상의 다양성도 많다.

그러나 적은 데이터 세트(약 10,000건 이하)에 적용할 경우 과적합이 발생하기 쉽다.

 

[머신러닝] 분류 - 앙상블 5 : LightGBM

시작에 앞서해당 내용은 ' 권철민 지음. 위키북스' 를 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다.앙상블 학습(Ensemble Learning) [

puppy-foot-it.tistory.com

 

스태킹

스태킹은 '앙상블에 속한 모든 예측기의 예측을 취합하는 간단한 함수를 사용하는 대신 취합하는 모델을 훈련시킬 수 없을까' 라는 아이디어에서 출발한다. 

 

[머신러닝] 스태킹 앙상블

시작에 앞서해당 내용은 ' 권철민 지음. 위키북스' 를 참고하여 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다.스태킹 모델 스태킹(Stacking

puppy-foot-it.tistory.com


하드 보팅 vs 소프트 부팅
Hard Voting vs Soft Voting

 

◆ 하드 보팅: 예측한 결괏값들 중 다수의 분류기가 결정한 에측값을 최종 보팅 결괏값으로 선정

◆ 소프트 보팅: 분류기들의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 확률이 가장 높은 레이블 값을 최종 보팅 결괏값으로 선정

▶ 일반적으로 소프트 보팅 적용 (예측 성능이 비교적 좋음)

 

[머신러닝] 앙상블: 투표 기반 분류기, 배깅과 페이스팅

앙상블 학습 [머신러닝] 분류 - 앙상블 학습(Ensemble Learning)앙상블 학습(Ensemble Learning) 앙상블 학습을 통한 분류는,여러 개의 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측

puppy-foot-it.tistory.com


보팅 분류기 (Voting Classifier)
위스콘신 유방암 데이터 세트 예측 분석

 

사이킷런은 VotingClassifier 클래스를 제공하고 있으며, load_breast_cancer() 함수를 통해 자체에서 위스콘신 유방암 데이터 세트를 생성할 수 있다.

 

위스콘신 유방암 데이터 세트는 유방암의 악성종양, 양성종양 여부를 결정하는 이진 분류 데이터 세트이며 종양의 크기, 모양 등의 형태와 관련한 많은 피처를 가지고 있다.

 

로지스틱 회귀와 KNN을 기반으로 보팅 분류기를 만드는 작업을 수행한다.

 

1, 필요한 모듈, 데이터 로딩 후 데이터 세트 파악

#위스콘신 유방암 데이터 예측 분석 (앙상블)
# 필요 모듈 데이터 로드
import pandas as pd

from sklearn.ensemble import VotingClassifier #앙상블 보팅 분류기
from sklearn.linear_model import LogisticRegression #로지스틱 회귀
from sklearn.neighbors import KNeighborsClassifier #KNN
from sklearn.datasets import load_breast_cancer #위스콘신 유방암 데이터
from sklearn.model_selection import train_test_split #훈련, 테스트 데이터 분할
from sklearn.metrics import accuracy_score #정확도

# 유방암 데이터 로드
cancer = load_breast_cancer()

data_df = pd.DataFrame(cancer.data, columns=cancer.feature_names)
data_df.head()

 

2. 로지스틱 회귀와 KNN을 기반으로 보팅 분류기 생성(소프트 보팅)

# 로지스틱 회귀와 KNN을 기반으로 보팅 분류기 생성(소프트 보팅)
# 개별 모델은 로지스틱 회귀와 KNN
lr_clf = LogisticRegression(solver='liblinear')
knn_clf = KNeighborsClassifier(n_neighbors=8)

# 개별 모델을 소프트 보팅 기반의 앙상블 모델로 구현한 분류기
vo_clf = VotingClassifier(estimators=[('LR',lr_clf), ('KNN', knn_clf)], voting='soft')

X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target,
                                                    test_size=0.2, random_state=156)

# VotingClassifier 학습/예측/평가
vo_clf.fit(X_train, y_train)
pred = vo_clf.predict(X_test)
print('Voting 분류기 정확도: {0:.4f}'.format(accuracy_score(y_test, pred)))

# 개별 모델의 학습/예측/평가
classifiers = [lr_clf, knn_clf]
for classifier in classifiers:
    classifier.fit(X_train, y_train)
    pred = classifier.predict(X_test)
    class_name = classifier.__class__.__name__
    print('{0} 정확도: {1:.4f}'.format(class_name, accuracy_score(y_test, pred)))

 

▶ 보팅으로 여러 개의 분류기를 결합한다고 무조건 기반 분류기보다 예측 성능이 향상되는 것은 아니다.

 

머신러닝 모델의 성능은 다양한 테스트 데이터에 의해 검증되므로 어떻게 높은 유연성을 가지고 현실에 대처할 수 있는가가 중요한 평가 요소가 된다.

 

앙상블 학습에서는 결정 트리 알고리즘의 단점 (과적합 발생으로 인한 실제 테스트 데이터에서의 예측 성능 저하)을 수십에서 수천 개의 매우 많은 분류기를 결합해 다양한 상황을 학습하게 함으로써 극복하고 있다.

 

앙상블 방법은 다재다능하고 강력하며 상요법이 매우 간단하다.

랜덤 포레스트, AdaBoost, GBRT는 대부분의 머신러닝 작업에서 가장 먼저 테스트해야 하는 모델이며, 특히 서로 다른 종류로 구성된 표 형식 데이터에서 빛을 발한다. 또한 전처리가 거의 필요하지 않기 때문에 프로토타입을 빠르게 구축하는 데 적합하다.

투표 기반 분류기와 스태킹 분류기 같은 앙상블 방법은 시스템 성능을 한계까지 끌어올리는 데 도움이 될 수 있다.


다음글

 

[머신러닝] 회귀(Regression)

회귀(Regression) 회귀 분석은 데이터 값이 평균과 같은 일정한 값으로 돌아가려는 경향을 이용한 통계학 기법이다.회귀는 여러 개의 독립변수와 한 개의 종속변수 간의 상관관계를 모델링하는 기

puppy-foot-it.tistory.com


[출처]

파이썬 머신러닝 완벽 가이드

핸즈 온 머신러닝

728x90
반응형