Model Stacking
- 서로 다른 모델들을 모으고 Ensemble 기법을 사용해 개선된 모델을 만드는 것
- 기존 모델들로부터 예측 결과를 도출하는 1st Stage와
이를 기반으로 추가적인 판단을 진행하는 2nd Stage로 나뉨
1st Stage
- train_X를 가지고 1번 모델을 Training
- Training을 거친 1번 모델에 train_X를 넣었을 때 결과(예측값)을 저장
- 다른 모델에도 동일한 작업을 했을 때 나온 1열의 예측값들을 묶어 S_train을 생성 (기존 Ensemble은 S_train을 행별로 투표해서 분류함)
2nd Stage
- 새로운 모델 생성 (1st Stage에서 사용한 것과 다른 모델 사용 가능)
- S_train_X, train_Y를 가지고 새로운 모델을 Training
Test Model
- test_X를 1st Stage 모델에 넣고 결과로 나온 예측값들의 묶음 S_test를 생성 (2nd Stage 모델의 학습 데이터는 원본 데이터와 다르기 때문에 test_X를 바로 넣으면 안됨)
- S_train_X, train_Y를 2nd Stage 모델에 넣었을 때 결과를 가지고 Accuracy 계산
Functional API
Import Library
|
|
1st Level Models
|
|
Stacking
|
|
- S_train과 S_test를 같이 생성 (y_test는 2차 모델 성능 평가에서만 사용)
metric
: Focus를 맞출 대상
2nd Level Model
|
|
accuracy_score(y_test, y_pred)
를 확인하여 모델의 성능 평가
Scikit-learn API
Import Library
|
|
1st Level Estimators
|
|
stacking
과 다르게 모델 이름과 모델 객체를 같이 튜플로 묶음
StackingTransformer
|
|
stacking
과 다르게 x data와 y data를 입력하지 않고 객체 자체를 모델처럼 사용
Model Fitting
|
|
stacking
은 새로운 데이터를 넣을 때 어려움이 있지만,StackingTransformer
는 전처리 도구처럼 사용 가능
2nd Level Estimator
|
|