Stat & ML

III. 예측 모델링 / M11

모델링 실험 설계와 평가

8 minv1.0.0검토 2026-07-21
이 문서의 목차

학습목표

  • 모델링 실험 설계와 평가의 대상·가정·산출물을 설명한다.
  • 공식 또는 절차를 작은 계산 사례에 적용하고 해석한다.
  • Python으로 재현 가능한 점검의 출발점을 만든다.

핵심 용어

학습셋 training set · 검증셋 · 테스트셋 · 교차검증 cross-validation · 혼동행렬 · 정밀도 · 재현율
한·영 정의와 약어는 통합 용어집을 함께 참조한다.

개념 설명

모델 선택은 보지 않은 자료 일반화 성능을 추정하는 실험이다. 교차검증의 각 폴드 학습 부분에서만 대치·스케일링·변수 선택·리샘플링을 적합한다. 테스트셋은 선택이 끝난 뒤 한 번만 최종 보고에 사용하며, 불균형 자료에서는 정확도 대신 오류 비용에 맞는 지표를 본다.

상세 이론

일반화와 평가 목표

학습 성능이 아니라 같은 배포 조건의 새 자료 성능을 추정하는 것이 평가 목적이다. 평가 단위는 실제 의사결정 단위와 맞아야 하며 한 고객의 여러 행이 학습과 검증에 나뉘면 누수가 생긴다. 시간·그룹·공간 의존성을 반영한 분할이 무작위 행 분할보다 현실적일 수 있다.

학습·검증·테스트의 역할

학습셋은 파라미터 적합, 검증셋 또는 교차검증은 모델·전처리·초매개변수 선택, 테스트셋은 선택 완료 후 최종 독립 평가에 사용한다. 테스트 결과를 보고 설정을 바꾸면 테스트가 검증 역할을 했으므로 새 독립 자료가 필요하다. 데이터가 작을 때는 중첩 교차검증으로 선택과 평가를 분리할 수 있다.

교차검증의 변형

K-fold는 자료를 K개로 나누고 각 폴드를 한 번씩 검증에 사용한다. 층화 K-fold는 클래스 비율을, GroupKFold는 동일 개체 그룹의 분리를, 시계열 분할은 시간 순서를 보존한다. 반복 교차검증은 분할 운에 따른 변동을 평가하지만 계산 비용이 늘어난다.

누수 없는 파이프라인

결측 대치, 스케일링, 변수 선택, PCA, 오버샘플링의 fit은 각 학습 폴드 안에서 수행한다. 검증 폴드에는 학습된 변환만 적용한다. 목표값의 사후 정보, 전체 기간 집계, 미래 시점 변수도 대표적인 누수이며 높은 점수보다 예측 시점의 정보 가용성을 먼저 감사한다.

분류 지표와 임계값

혼동행렬은 TP·FP·FN·TN을 분리한다. 정밀도는 양성 예측의 신뢰도, 재현율은 실제 양성 포착률, 특이도는 실제 음성 배제율이다. ROC-AUC는 모든 임계값의 순위 성능, PR-AUC는 희귀 양성 문제에서 양성 성능을 더 직접적으로 보여 준다. 최종 임계값은 오류 비용과 운영 용량으로 정한다.

회귀·확률 평가와 불확실성

MAE는 절대오차에 선형 벌점, RMSE는 큰 오차에 더 큰 벌점을 준다. MAPE는 0 근처 실제값에서 불안정하다. 확률 예측은 로그손실·Brier 점수와 보정곡선으로 확률의 정확성을 본다. 한 번의 점수에만 의존하지 않고 폴드·부트스트랩 변동, 하위집단 성능, 오류 사례를 함께 보고한다.

개념 비교표

개념핵심 역할함께 구분할 개념
일반화와 평가 목표학습 성능이 아니라 같은 배포 조건의 새 자료 성능을 추정하는 것이 평가 목적이다.학습·검증·테스트의 역할
학습·검증·테스트의 역할학습셋은 파라미터 적합, 검증셋 또는 교차검증은 모델·전처리·초매개변수 선택, 테스트셋은 선택 완료 후 최종 독립 평가에 사용한다.교차검증의 변형
교차검증의 변형K-fold는 자료를 K개로 나누고 각 폴드를 한 번씩 검증에 사용한다.누수 없는 파이프라인
누수 없는 파이프라인결측 대치, 스케일링, 변수 선택, PCA, 오버샘플링의 fit은 각 학습 폴드 안에서 수행한다.분류 지표와 임계값
분류 지표와 임계값혼동행렬은 TP·FP·FN·TN을 분리한다.회귀·확률 평가와 불확실성
회귀·확률 평가와 불확실성MAE는 절대오차에 선형 벌점, RMSE는 큰 오차에 더 큰 벌점을 준다.일반화와 평가 목표

적용 조건과 진단

다음 조건은 공식을 대입하기 전에 확인한다. 하나라도 만족하지 않으면 결과를 버리기보다 원인을 기록하고 대안적 요약·변환·검증 설계를 선택한다.

  • 평가 단위와 운영 단위가 같은가
  • 모든 전처리가 폴드 안에 있는가
  • 테스트셋을 한 번만 사용했는가

개념 흐름

교차검증 분할과 혼동행렬은 다른 평가 층위다.

그림. 교차검증 분할과 혼동행렬은 다른 평가 층위다.

공식과 해석

정밀도 =TP/(TP+FP)=TP/(TP+FP), 재현율 =TP/(TP+FN)=TP/(TP+FN), F1=2PR/(P+R)F1=2PR/(P+R)다.

계산 예제

TP=40, FP=10, FN=20이면 정밀도 0.80, 재현율 0.67, F1 약 0.73이다.

Python 예제

실행 안내: 예제는 각 장의 핵심 API와 해석 순서를 보여준다. 별도 실습 환경에서 필요한 입력 데이터를 준비한 뒤 실행한다.

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(
    n_samples=400, n_features=8, n_informative=5,
    weights=[0.7, 0.3], random_state=20260721
)
X_train, X_valid, y_train, y_valid = train_test_split(
    X, y, test_size=0.25, stratify=y, random_state=20260721
)

pipe = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))
scores = cross_val_score(pipe, X_train, y_train, cv=5, scoring='f1')
print('fold F1:', scores.round(3))
print('평균:', round(scores.mean(),3))
print('테스트는 선택 후 한 번만 쓴다.')

장 요약

  • 일반화와 평가 목표: 학습 성능이 아니라 같은 배포 조건의 새 자료 성능을 추정하는 것이 평가 목적이다.
  • 학습·검증·테스트의 역할: 학습셋은 파라미터 적합, 검증셋 또는 교차검증은 모델·전처리·초매개변수 선택, 테스트셋은 선택 완료 후 최종 독립 평가에 사용한다.
  • 교차검증의 변형: K-fold는 자료를 K개로 나누고 각 폴드를 한 번씩 검증에 사용한다.
  • 누수 없는 파이프라인: 결측 대치, 스케일링, 변수 선택, PCA, 오버샘플링의 fit은 각 학습 폴드 안에서 수행한다.
  • 분류 지표와 임계값: 혼동행렬은 TP·FP·FN·TN을 분리한다.
  • 회귀·확률 평가와 불확실성: MAE는 절대오차에 선형 벌점, RMSE는 큰 오차에 더 큰 벌점을 준다.

더 읽을거리