logo

스태킹

스태킹

  • 스태킹(stacking): 여러 모델의 예측을 다시 입력으로 사용하는 방식
  • 1단계 모델들이 각자 예측
  • 2단계 메타 모델이 그 예측 결과를 보고 최종 판단
  • 서로 성격이 다른 모델을 조합할 때 활용

스태킹에서 기본 모델의 예측을 메타 모델이 결합하는 구조

실습 준비

  • 앙상블 문서에서 데이터를 불러오고 분할한 노트북에서 이어서 실행
  • 앞에서 준비한 X, X_train, X_test, y_train, y_test를 그대로 사용

실습 프롬프트

🤖 AI 프롬프트
datacenter_incident.xlsx 데이터를 8:2로 train과 test로 분할해(random_state=42)
타깃 incident_next_hour에서 0은 정상, 1은 1시간 이내 장애 발생이야.
StackingClassifier의 1단계 모델로 결정트리와 KNN을 사용해줘.
2단계 모델은 결정트리로 설정해줘.
학습 데이터로 스태킹 모델을 학습하고 테스트 정확도를 확인해줘.
필요한 라이브러리를 불러오고 각 단계에 초보자를 위한 한글 주석을 달아줘.

StackingClassifier 실습

  • 결정트리와 KNN의 예측을 결합
  • 최종 모델은 얕은 결정트리 사용
  • KNN 앞에 표준화를 적용해 입력 변수의 단위 차이 조정
  • cv=5: 학습 데이터를 5개로 나누어, 각 사례의 정답을 학습하지 않은 기본 모델의 예측으로 메타 모델 학습
from sklearn.ensemble import StackingClassifier
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

stack_clf = StackingClassifier(
    estimators=[
        ("tree", DecisionTreeClassifier(max_depth=4, random_state=42)),
        (
            "knn",
            make_pipeline(
                StandardScaler(),
                KNeighborsClassifier(n_neighbors=5),
            ),
        ),
    ],
    final_estimator=DecisionTreeClassifier(max_depth=2, random_state=42),
    cv=5,  # 메타 모델 학습에 사용할 교차검증 분할 수
)

stack_clf.fit(X_train, y_train)
y_pred_stack = stack_clf.predict(X_test)
accuracy_score(y_test, y_pred_stack)
실행 결과
0.725
  • 스태킹의 테스트 정확도: 72.5%

같은 데이터에서의 모델 비교

  • 같은 학습·테스트 분할에서 실행한 결과
  • 기본 설정에서의 비교이며 모든 데이터에서 같은 순위를 보장하는 결과는 아님
모델 테스트 정확도
단일 결정트리 71.5%
랜덤 포레스트 73.0%
AdaBoost 72.0%
경사 부스트 71.5%
스태킹 72.5%

퀴즈

문제 1 / 3맞음: 0힌트: 0틀림: 0채점중: 0남음: 3

스태킹(stacking)의 특징으로 가장 적절한 것은?

  • ○여러 기본 모델의 예측을 새로운 입력으로 사용해 메타 모델이 최종 예측한다
  • ○하나의 모델이 틀린 관측치의 가중치만 계속 높인다
  • ○복원추출한 데이터에서 같은 종류의 모델만 독립적으로 학습한다
  • ○여러 모델 중 훈련 정확도가 가장 높은 하나만 남긴다

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
부스팅