본문으로 건너뛰기
데이터 분석 · 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강. 학습·검증·테스트 데이터 분리와 데이터 누수 미완료 상태