Python/Deep Learning

[Python DL]앙상블(Ensemble)-보팅, 배깅, 부스팅 & VotingClassifier, VotingRegressor

sohyunkimmm 2023. 1. 25. 09:00
728x90

* 앙상블(Ensemble)

- 주어진 자료로부터 여러개의 예측 모델들을 만든 후 예측 모형들을 조합하여 하나의 최종 예측 모형을 만드는 방법

- 다중 모델 조합, 분류기 조합

- 종류: 배깅, 부스팅, 랜덤포레스트, 스태킹 등

 

1) 보팅(Voting)

Voting vs. Bagging

 

Hard voting vs. Soft voting

- 모형을 여러 개 만들어 조합

- 모형 중 성능이 가장 좋은 것을 뽑아서 다시 분석

- 하드 보팅: 다수의 분류기가 예측한 결과값을 최종 결과로 선정

- 소프트 보팅: 모든 분류기가 예측한 레이블 값을 결정 확률 평균을 구한 뒤, 가장 확률이 높은 레이블 값을 최종 결과로 선정

 

 

2) 배깅(Bagging)

Bagging

- 데이터 샘플링을 통해 모델을 학습시키고 결과를 집계하는 방법

- 모형을 여러가지 뽑아 평균해서 적절하게 값을 뽑아줌, '병렬구조'를 가짐

- '랜덤 포레스트'가 가장 대표적인 배깅 방식

- 부스팅에 비해 과적합 방지에는 더 나은 방식. 하지만 여전히 과적합 가능성 존재

 

 

3) 부스팅(Boosting)

Boosting

- 모형을 하나 뽑고 잘못한것을 학습해서 다음 모델로 넘긴다 -> '순차적인 직렬구조'

- 이전 분류기가 예측이 틀린 데이터에 대해서 올바르게 예측할 수 있도록 다음 분류기에 가중치를 부여하면서 학습과 예측을 진행

- 맨 마지막에 좋은 모형이 나옴

- 오차에 대한 학습이 잘 안되면 개선에 대한 한계가 있다 (ex. GradiantBoost)

- 배깅에 비해 성능은 좋지만 속도가 느리고 과적합 발생할 가능성 높음

 

 

 

* 보팅 코딩하기

1) 분류 예측_VotingClassifier

변수선택, 데이터 분할, 데이터 전처리, 오버샘플링

 

- 단일모형 생성

   DecisionTreeClassifier, KNeighborsClassifier

 

- 앙상블 모형(voting) 생성

   model = VotingClassifier(estimators = [("K-NN", knn), ("Dtree", dtree)], voting = "soft")

VotingClassifier
accuracy: VotingClassifier > DT > KNN

 

 

2) 회귀 예측_VotingRegressor

변수선택, 데이터 분할, 데이터 전처리

 

- 단일모형 생성

   SVR(SupportVectorRegressor), MLPRegressor(인공신경망 회귀예측)

 

- 앙상블 모형(voting) 생성

   model = VotingRegressor(estimators = [("SVR, svr), ("MLP", mlp)]

VotingRegressor
accuracy: SVR > VotingRegressor > MLP

 

 

 

<사진 출처>

https://medium.com/dawn-cau/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%95%99%EC%83%81%EB%B8%94-%ED%95%99%EC%8A%B5-%EC%9D%B4%EB%9E%80-cf1fcb97f9d0

https://swingswing.tistory.com/281

 

728x90
반응형