들어가며
이번 글에서는 여러가지 앙상블 모델들 중 하나인 스태킹에 대하여 알아볼 것이다
앙상블 기법을 사용하는 여러 모델들을 알아보고있는데
각각의 모델마다 특징이 있으며 모델들을 하나 둘 씩 배울 때마다 그 차이를 잘 인지해야할 것 같다
또한 상황에 맞는 모델을 잘 선택해야될 것 같다고 느꼈다
스태킹
스태킹은 stacked generalization의 줄임말로
stack이라는 말은 알고리즘 공부를 해본 사람이라면 알만한 의미로 "쌓다'라는 의미이다
즉 여기서 스태킹 모델은 예측기에 예측기를 쌓는다는 개념이다
더 구체적으로 말하자면 예측기의 출력을 또 다른 예측기의 입력으로 쌓는다는 말이다

그림으로 보면 이해가 더 쉬울 것이다
가장 아래의 세 예측기에서 각기 다른 예측값을 내놓는 것을 확인할 수 있다
이후 이 예측값들을 입력으로 받아 만든 훈련세트인 Blending training set를 볼 수 있다
이 훈련세트를 훈련시켜 최종 예측을 만들어내는 구조이다
이 때 맨 처음 예측기들의 출력값을 모아 새로운 예측기의 입력값으로 사용한다고 하였는데
그럼 그 입력값들의 타깃값은 무엇인지 궁금할 것이다
타깃값은 원본 데이터에서 복사해와서 블렌딩 훈련세트에 사용하는 것이다
집값을 예측하는 모델로 예를 들어서 설명 해보자면
집값을 예측하는 서로 다른 모델(선형 회귀, 랜덤 포레스트, SVM 등)에 데이터(면적, 방 개수, 위치 등)를 학습시킨다
이후 각 모델의 예측값을 모아서 새로운 데이터셋을 만든다
이 때 데이터셋에서 열 부분 즉 특징(feature)이 모델 1,2,3의 예측이 되는 것이다
| 모델1 | 모델2 | 모델3 | |
| A집 | 5억 | 5.5억 | 4.8억 |
| B집 | 4.6억 | 5억 | 5.2억 |
이제 이 데이터셋이 Blending training set이 되는 것이고
이 데이터셋을 최종 예측기에 훈련 시켜 최종 예측을 만들어내는 것이다
참고로 스태킹에서 Blending training set를 만들 때
앙상블의 모든 예측기에서 cross_val_predict() 즉 교차검증을 사용하여 얻은 예측을 이용한다
훈련 샘플이 아닌 샘플에서 얻은 예측을 입력 특성으로 사용하고 타깃은 원본 훈련 세트에서 복사해온다
train/test 세트 나눠서 하게되면 meta모델(최종 예측을 만드는 상위 모델)이 적은 데이터로 학습하게된다
만약 80:20으로 나눴다면 meta모델은 20%만 학습하게 되는 것이다 성능적으로 손해를 보게된다
그래서 교차 검증을 통해 모든 데이터의 예측값을 구할 수 있고
훨씬 안정적이여서 스태킹을 사용할 때는 교차 검증을 많이 선택한다
다층 스태킹
앞서 말했듯이 최종 예측을 만드는 모델을 meta모델 혹은 블렌더라고 부른다
이 meta 모델의 출력도 다시 새로운 입력으로 사용하여 또 다른 meta 모델을 학습할 수 있다
이런식으로 여러 모델의 예측을 한 번 더 모아서 결과를 도출하고 이 방식을 여러 단계로 확장할 수 있다
이를 다층 스태킹이라고 부른다

전체 meta 모델예측을 얻은 다음 그 위에 다른 meta 모델을 추가하여 최종 예측을 생성하는 구조다
이렇게 사용하면 성능을 조금 올릴 순 있지만 시간과 복잡성 측면에서 효율이 떨어지게 될 수 있다
사이킷런에서 StackingClassifier 클래스를 제공하여 스태킹을 사용할 수 있다
from sklearn.ensemble import StackingClassifier
stacking_clf = StackingClassifier(
estimators=[
('lr', LogisticRegression(random_state=42)),
('rf', RandomForestClassifier(random_state=42)),
('svc', SVC(probability=True, random_state=42))
],
final_estimator=RandomForestClassifier(random_state=43),
cv=5 # 교차 검증 폴드 수
)
저번 글에서 봤던 VotingClassifier 클래스 사용 방식과 유사하다
final_estimator를 meta 모델이라고 생각하고 최종 모델을 지정해주면 된다
마치며
이번 글에서는 스태킹 앙상블에 대하여 알아보았다
말 그대로 예측 모델을 계속 쌓는다는 직관적인 의미로 이해할 수 있었고
블렌딩 훈련 세트를 만드는 과정은 쉽게 생각하면
최종 예측기 입장에서 각 모델들의 예측을 어떻게 조합할 지 가중치를 학습하기 위한 과정이라고 이해하였다
개념이 분명 비교적 간단하고 쉬워 보이면서도 어딘가 복잡한 부분들이 있어 이해하는 데에 시간이 조금 걸렸다
특히 블렌딩 훈련 세트 만드는 부분이랑 스태킹에서 교차검증을 사용하는 부분에서 막혔었다
요즘 공부할 때마다 드는 생각은
뭔가 내가 생각한 이해가 진짜 맞는건지 확신이 잘 안서고 챗지피티나 제미나이에게 물어보고 나서야 확신을 얻게된다
이런 AI가 없던 시대엔 어떻게 공부를 했었던 건지 기억이 나지 않고
한편으로는 인간이 점점 이런 식으로 AI에게 의존한다면 지능이 점차 퇴화될 것 같다는 생각도 들었다
그렇다고 AI를 아예 안쓰는 것은 오히려 좋지 않을 수 있고 적절한 선을 지키며 사용하는 것이 좋을 것 같다
'AI > Machine Learning' 카테고리의 다른 글
| [AI] 주성분 분석(PCA) (0) | 2026.05.03 |
|---|---|
| [AI] AdaBoost, 그레이디언트 부스팅(Gradient Boosting) (0) | 2026.04.30 |
| [AI] 랜덤 패치, 랜덤 서브스페이스, 랜덤 포레스트 (0) | 2026.04.21 |
| [AI] 앙상블 알고리즘(투표 기반 분류기, 배깅과 페이스팅) (0) | 2026.04.19 |
| [AI] 결정 트리(Decision Tree) (0) | 2026.04.15 |
