본문으로 건너뛰기
데이터 분석 · AI 기초집LESSON 19

학습·검증·테스트 데이터 분리와 데이터 누수

난이도초급
예상 시간35분
선수지식이전 강의

19강. 학습·검증·테스트 데이터 분리와 데이터 누수

1. 이번 강의에서 해결할 문제

전체 데이터로 전처리한 뒤 분리하거나 테스트 결과를 보며 모델을 반복 수정하면 평가 데이터 정보가 학습에 새어 성능이 과대평가됩니다.

2. 학습 목표

3. 핵심 개념

학습 세트는 파라미터 학습, 검증 세트는 모델·설정 선택, 테스트 세트는 마지막 일반화 평가에 사용합니다. 작은 입문 실습은 train/test로 시작하되 테스트를 반복 선택에 쓰지 않습니다. 전처리의 통계도 학습 데이터에서만 fit해야 하므로 ColumnTransformer와 Pipeline을 사용합니다.

4. 단계별 실습

1. 예제 파일 작성

실행 환경: 코드 편집기

실행 위치: C:\dev\game-data-lab

실행 전 확인: 기존 파일이 있으면 내용을 덮어쓰지 말고 Git diff로 이번 강의 변경 범위를 확인합니다. 실제 개인정보·API Key·토큰은 사용하지 않습니다.

대상 파일: src/train_split_pipeline.py

src/train_split_pipeline.py
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder

df = pd.read_csv("data/raw/game_sessions_model.csv")
X = df[["game_mode", "character"]]
y = df["win"]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.25, random_state=42, stratify=y
)
preprocess = ColumnTransformer([
("category", OneHotEncoder(handle_unknown="ignore"), ["game_mode", "character"]),
])
pipeline = Pipeline([("preprocess", preprocess), ("model", LogisticRegression(max_iter=1000))])
pipeline.fit(X_train, y_train)
print("train/test:", len(X_train), len(X_test))
print("positive rate:", round(y_train.mean(), 3), round(y_test.mean(), 3))

2. 실행과 결과 확인

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-data-lab

실행 전 확인: Python 코드는 프로젝트의 .venv 인터프리터를 사용하고 입력 파일 경로가 존재하는지 확인합니다.

대상: src/train_split_pipeline.py과 이 강의가 만드는 출력

Windows PowerShell
Set-Location C:\dev\game-data-lab
.\.venv\Scripts\python.exe .\src\train_split_pipeline.py

예상 결과: 180개 학습 행과 60개 테스트 행, 비슷한 승리 비율이 출력되고 Pipeline이 학습됩니다.

5. 분석 또는 모델이 동작하는 이유

stratify=y는 분류 레이블 비율을 두 집합에 비슷하게 유지합니다. Pipeline의 scaler와 encoder는 fit 시 학습 세트에서만 규칙을 배우고 테스트에는 transform만 적용합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

데이터 분리와 누수 점검

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1평균과 표준편차를 사용하는 전처리기를 학습시키는 가장 안전한 순서는 무엇인가요?
  2. 문제 2검증 데이터와 테스트 데이터의 역할을 올바르게 설명한 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

19강. 학습·검증·테스트 데이터 분리와 데이터 누수 미완료 상태