Ensemble
- 머신러닝 모델을 연결하여 더 강력한 모델을 만드는 기법
- Simple Voting, Bagging과 Boosting 방식이 있다.
Simple Voting
- Hard Voting : 다수의 분류기들 간에 다수결로 최종 클래스를 선정하는 방법
- Soft Voting : 다수의 분류기들이 각각 분류한 확률값들을 기반으로 평균 확률값을 내어서 더 높은 확률값을 갖는 클래스로 최종 선정하는 방법. 일반적으로 성능은 Soft voting 방법이 더 우수하다고 알려져 있다.
사이킷런에 내장되어 있는 위스콘신 유방암 데이터로 Simple Voting을 시행해보자.
모델은 LogisticRegression과 KNN을 사용한다.
LogisticRegression과 KNN중 LogisticRegression이 Voting에 선출되었던 것을 확인할 수 있다.
Bagging - RandomFroest Model
- 각각 만들어낸 결과를 마지막에 최종적으로 모으는 방식이다.
- 속도가 빠르고 좀 더 로버스트하게 동작한다.
매개변수 튜닝 없이도 선형 모델이나 단일 결정 트리보다 높은 결과치를 제공하기도 함.
트리의 특성 중요도를 취합해서 계산해서 Voting에서 선출된 모델로 데이터를 분류해주는 방식이다.
트리의 갯수는 하이퍼파라미터인 n_estimator로 정할 수 있다.
Boosting
- 하나의 모델의 결과를 보고 다른 모델들이 보완해주는 방식이다.
- 속도는 느리지만 예측력은 더 뛰어나다.
GBM(Gradient Boosting Machine)
- 경사하강법에 기반하여 부스팅하는 기법
- 순차적으로 분류기들을 학습하기 때문에 학습시간이 상대적으로 오래걸린다는 단점
- 특정 피쳐에 몰아주는 주는 성향을 보여준다.
- Simple Voting보다는 좋은 성능을 보여준다.
XGBoost(eXtra Gradient Boosting)
- Gradient Boosting의 속도가 느린 단점을 보완해 주고, 예측력이 뛰어나다.
- GPU가 지원이 된다.(빅데이터 처리에 유리하다.)
- Early Stopping을 사용하여 학습을 조기중단 할 수 있다.
사이킷런이 아닌 xgboost 자체에서 가져온다.
모델의 목적에 따라 eval_metric을 지정할 수 있다. 여기서는 logloss'를 사용하였다.(오차를 계산해주는 함수)
학습이 진행 되는 따라 오차율이 떨어지는 것을 확인할 수 있다.
LightGBM
- 대용량 데이터 처리에 적합하며 XGBoost와 마찬가지로 병렬처리인 GPU를 지원
- 뿐만 아니라 메모리를 적게 사용하므로 빠른속도가 장점이다. 하지만 데이터 수가 너무 적을 때는 과적합 문제를 일으키기도 합니다.
- XGBoost 보다 학습에 걸리는 시간이 적음
- 메모리 사용량도 적음
- 특징
- 일반 GBM 계열의 트리 분할 방법과 다르게 리프 중심 트리 분할(Leaf Wise) 방식, 최대 손실값을 가지는 리프 노드를 지속적으로 분할하면서 트리의 깊이가 깊어지고 비대칭적으로 생성, 단 최대 손실값을 가지는 리프 노드를 지속적으로 분할해 생성된 규칙 트리는 학습을 반복할 수록 균형 트리 분할 방식보다 예측 오류 손실을 최소화
- 기존 tree 방식들은 트리의 깊이를 효과적으로 줄이기 위한 균형 트리 분할 방식 사용(최대한 균형 잡힌 tree 유지, 따라서 트리의 깊이가 최소화 가능)
- XGBoost보다 뒤늦게 나온 알고리즘
- 동일한 데이터 셋이라 하더라도 양이 적거나, 하이퍼파라미터 값들에 따라 늘 이론과 동일한 결과치 보장 불가
Simple Voting 이미지 참조 사이트 : Hard vs Soft Voting Classifier Python Example - Data Analytics (vitalflux.com)
'플레이데이터 빅데이터 부트캠프 12기 > 머신러닝 & 딥러닝' 카테고리의 다른 글
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 Segmentation (0) | 2022.08.06 |
---|---|
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 PCA와 비지도학습 (0) | 2022.08.06 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 회귀(Regression)(2) (0) | 2022.08.05 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 회귀(Regression)(1) (0) | 2022.08.04 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 타이타닉 데이터(캐글 튜토리얼) (0) | 2022.08.04 |