Model Evaluation and Validation

chelseey·2025년 4월 13일

ML Pipeline

Overall Pipeline

데이터 탐색(Data Exploration)

모델 학습 전에 데이터의 특성, 분포, 이상치, 결측치 등을 파악하여
이후 단계(전처리, 피처 엔지니어링, 모델링 등)에 필요한 정보를 얻음

  • 원시 데이터(Raw Data)로부터 시작

  • 훈련 데이터만 존재한다고 가정
    테스트 데이터가 별도로 준비되어 있지 않으므로, 모델을 평가하기 위한 데이터를 나중에 분할하거나 교차 검증 등의 방법을 사용해야 함

  • 데이터셋의 검토
    • 변수의 분포 확인
    통계적 기법: 평균, 중앙값, 분산, 표준편차 등 기본 통계량을 계산
    시각화: 히스토그램, 박스 플롯, 커널 밀도 추정 등을 활용하여
    변수들이 어떤 분포를 가지는지 시각적으로 파악
    • 시각적 분석:
    산점도(scatter plot), 페어플롯(pair plot), 상관관계 히트맵 등을 사용하여
    변수 간의 관계, 패턴, 이상치 등을 찾음

전처리(Preprocessing)

• 데이터 클리닝 (Data Cleaning)
: 데이터셋에서 오류, 잡음, 불일치, 중복, 잘못된 데이터 등을 찾아내 수정 또는 제거

  • 결측치 (Missing Values) 처리
    데이터셋에 특정 변수의 값이 기록되지 않은 경우
    삭제: 결측치가 있는 행 또는 열을 삭제
    대체 (Imputation): 평균, 중앙값, 최빈값, 또는 더 정교한 예측 모델을 사용해 결측값을 채워 넣음
    예측 기반 대체: 다른 변수들을 이용해 결측값을 예측

  • 이상치 (Outliers)
    데이터 분포에서 극단적으로 벗어난 값으로,
    모델 성능에 악영향을 줄 수 있음
    식별: 박스 플롯, 산점도, 통계적 방법(ex. Z-점수)을 활용해 이상치를 식별
    처리: 이상치를 제거하거나, 변환(ex. 로그 변환)하여 영향을 줄이는 방법을 사용

• Feature Engineering
: 기존 데이터에서 모델 학습에 유용한 새로운 변수(피처)를 만들어내거나
기존 변수의 표현 방식을 변경하는 과정

  • 정규화 (Normalization)
    서로 다른 스케일을 가진 변수들을 일정한 범위(예: 0~1)로 조정해 모델이 특정 변수에 치우치지 않도록 함
    Min-Max Scaling: 모든 값을 0과 1 사이로 변환
    Z-Score Standardization: 평균을 0, 표준편차를 1

  • Binning
    연속형 변수를 여러 구간(bin)으로 나누어 범주형 변수로 변환하거나, 노이즈를 줄이는 데 사용
    동일 간격 Binning: 데이터 범위를 동일한 크기의 구간으로 나눔
    동일 빈도 Binning: 각 구간에 데이터가 같은 수량으로
    분포하도록 구간을 정함

  • 범주형 변수 (Categorical Variables) 처리
    모델이 숫자 데이터를 다루기 때문에,
    텍스트나 범주형 데이터를 수치형으로 변환
    One-Hot Encoding: 각 범주를 새로운 이진 변수로 변환
    Label Encoding: 각 범주에 숫자를 할당
    Target Encoding: 범주별로 목표 변수의 통계(ex.평균)를 사용하여 변환

• 피처 선택 (Feature Selection)
모델 학습에 가장 영향을 미치는 중요한 변수들만을 선택해,
불필요한 차원을 제거하는 과정

방법 :

  • 통계적 검증: 변수와 목표 변수 간의 상관관계, 피어슨 상관계수, 카이제곱 검정 등을 사용
  • 모델 기반 방법: Lasso, Decision Tree, Random Forest 등의 모델을 통해 중요도를 산출하고, 중요도가 낮은 변수를 제거

데이터 분할(Data split)

: 모델 평가와 튜닝을 위해 데이터를 적절하게 나누는 단계

• 테스트 세트(Test Set)
실제 모델 평가나 최종 성능 측정을 위해 테스트 세트가 미리 분리되어 있음
테스트 세트는 모델 학습 과정에 전혀 관여하지 않고, 최종 평가용으로만 사용됨

• 검증 방법 별 데이터 분할 방식
모델 튜닝이나 성능 비교를 위해 추가로 데이터를 분할하는데,
검증 세트를 어떻게 구성할지는 선택한 검증 방법에 따라 달라짐

  • Holdout Validation (홀드아웃 검증)
    데이터를 단순히 일정 비율(ex. 80% 학습, 20% 검증)로 나누는 방법

  • Cross Validation (교차 검증)
    데이터를 여러 개의 폴드(fold)로 나누어, 각 폴드를 한 번씩 검증 세트로 사용하고 나머지 폴드를 학습 세트로 사용하는 방식
    k-폴드 교차 검증이 대표적

  • Leave One Out Cross Validation (LOOCV)
    데이터셋에서 한 개의 샘플을 검증 세트로, 나머지 모든 데이터를 학습 세트로 사용하는 극단적인 형태의 교차 검증

Training & Validation (학습&검증)

가능한 후보 모델과 각 모델의 다양한 하이퍼파라미터 설정을 대상으로
반복적으로 학습(training)하고 검증(validation)

• 다양한 모델 유형

  • Linear Models (선형 모델)
    간단한 관계를 설명할 때 사용
    ex. 선형 회귀(Linear Regression), 로지스틱 회귀(Logistic Regression)

  • Tree Models (트리 모델)
    데이터의 비선형 관계를 포착할 수 있는 모델
    ex. 결정 트리(Decision Tree), 랜덤 포레스트(Random Forest)

  • Ensemble Models (앙상블 모델)
    여러 모델의 예측 결과를 결합하는 방식으로,
    부스팅(Boosting), 배깅(Bagging) 방법 등이 포함됨
    ex. XGBoost, Gradient Boosting, AdaBoost

• 검증 단계
: 학습 과정 중에 설정한 검증 데이터를 활용하여 각 모델의 성능을 평가

Test Set 전처리

학습 데이터에 적용했던 전처리 기법(ex. 결측치 처리, 스케일링, 인코딩)을
테스트 데이터에도 동일하게 적용해야 함

테스트 단계 (Evaluation)

학습 과정에 사용되지 않은 테스트 데이터를 통해 최종 성능을 평가

• 평가 지표 (Metrics)

  • 분류 문제(Classification Metrics)
  • 회귀 문제(Regression Metrics)

→ 문제의 특성과 목표에 따라 적합한 평가 지표를 선택

Model Evaluation (Assessment, 모델 평가)

Regression Performance (회귀 모델)

MSE (Mean Squared Error, 평균 제곱 오차)

각 예측과 실제 값 사이의 차이를 제곱하여 평균을 냄

MSE=1ni=1n(y(i)y^(i))2MSE = \frac{1}{n} \sum_{i=1}^{n} (y^{(i)} - \hat{y}^{(i)})^2

제곱을 하므로 큰 오차가 있을 경우,
그 영향력이 급격히 커져 모델의 성능 평가에 크게 반영됨

  • 이상치(outlier)의 영향을 강조하고 싶을 때 사용
  • 예측 오차가 클 때 그 영향력에 페널티를 주는 효과가 있음

평균 제곱근 오차 (RMSE: Root Mean Squared Error)

MSE의 결과에 제곱근을 취하여, 실제 값과 동일한 단위로 표현

RMSE=1ni=1n(y(i)y^(i))2RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y^{(i)} - \hat{y}^{(i)})^2}
  • MSE의 민감도를 유지하면서도,
    예측 오차의 크기를 원래 데이터의 단위로 이해하고 싶을 때 적합

평균 절대 오차 (MAE: Mean Absolute Error)

각 예측 오차의 절대값을 평균 내어 계산

MAE=1ni=1ny(i)y^(i)MAE = \frac{1}{n} \sum_{i=1}^{n} |y^{(i)} - \hat{y}^{(i)}|
  • 이상치에 덜 민감: 오차의 절대값을 사용하므로,
    큰 오차에 의한 영향력이 MSE나 RMSE보다 작음
    → 데이터에 이상치가 존재할 때, 큰 오차의 영향력을 줄이고 싶을 경우 유용

MAPE (Mean Absolute Percentage Error, 평균 절대 백분율 오차)

예측 오차를 실제값에 대해 비율(%)로 표현
ex. 실제 값이 200이고 예측 값이 180인 경우,
오차는 20이지만 비율은 20/200 = 10%이 됨

→ 평균적으로 실제값의 몇 %만큼 예측이 틀렸는지를 나타냄

MAPE=100ni=1ny(i)y^(i)y(i)MAPE = \frac{100}{n} \sum_{i=1}^{n} \left| \frac{y^{(i)} - \hat{y}^{(i)}}{y^{(i)}} \right|
  • 실제 값의 크기에 상관없이 오차를 퍼센트로 표현하기 때문에,
    서로 다른 스케일의 데이터에도 일관된 평가가 가능
  • 실제 값이 0에 가까울 경우 분모가 작아져 계산이 불안정해지거나
    극단적인 값이 나올 수 있음

MSLE (Mean Squared Log Error, 평균 제곱 로그 오차)

예측값과 실제값에 로그를 취한 후의 차이를 제곱하여 평균을 낸 지표

MSLE=1ni=1n(log(y^(i)+1)log(y(i)+1))2MSLE = \frac{1}{n} \sum_{i=1}^{n} (\log(\hat{y}^{(i)} + 1) - \log(y^{(i)} + 1))^2
  • 과소 예측에는 덜 민감하고, 과대 예측에 더 크게 패널티를 줌
  • 성장률이나 지수적인 증가를 보이는 데이터(ex. 인구, 수요, 매출)를
    예측할 때 적합
  • 로그 변환을 하기 때문에 음수 값이 있으면 사용할 수 없어,
    0 값을 다루기 위해 '+1'을 더하는 처리가 필요

RMSLE (Root Mean Squared Log Error, 평균 제곱 로그 오차의 제곱근)

MSLE의 결과에 제곱근을 취해 데이터의 원래 단위와 동일한 스케일로 변환

RMSLE=1ni=1n(log(y^(i)+1)log(y(i)+1))2RMSLE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (\log(\hat{y}^{(i)} + 1) - \log(y^{(i)} + 1))^2}
  • MSLE와 마찬가지로, RMSLE도 과대 예측에 더 민감함

결정 계수(R2R^2)

회귀 모델이 전체 데이터의 분산(변동성)을 얼마나 잘 설명하고 있는지를
나타내는 지표

R2=1SSESST(0R21)R^2 = 1 - \frac{SSE}{SST} \qquad (0 ≤ R^2 ≤ 1)
  • R2=1R^2=1: 완벽한 예측
  • R2=0R^2=0: 아무것도 예측하지 못한 수준 (단순 평균만큼도 못함)

SST (Sum of Squares Total)
: 전체 데이터가 평균 yˉ\bar{y}를 중심으로 얼마나 흩어져 있는지를 나타냄

SSR (Regression Sum of Squares)
: 모델이 예측한 값 y^(i)\hat{y}^{(i)}이 평균 yˉ\bar{y} 로부터 벗어난 정도를 측정

SSE (Sum of Squared Errors)
: 실제 값 y(i){y}^{(i)} 과 모델의 예측 값 y^(i)\hat{y}^{(i)} 사이의 오차 제곱의 합

R2R^2 값이 높을수록 (= 모델이 더 많은 분산을 설명할수록),
모델이 실제 데이터를 더 잘 이해하고 예측한다고 판단

Classification Performance

Accuracy

모델이 예측한 결과 중, 실제 정답과 일치한 비율

Accuracy=맞게 예측한 데이터 수전체 데이터 수=1오분류율\text{Accuracy} = \frac{\text{맞게 예측한 데이터 수}}{\text{전체 데이터 수}}= 1-오분류율
  • 계산이 매우 간단하고 직관적
  • 불균형 데이터 문제:
    전체 데이터 중 한 클래스가 매우 많은 경우(ex. 90%가 0, 10%가 1) Accuracy만으로는 모델 성능을 제대로 평가하기 어려움

Accuracy의 한계

• 오분류 비용(Misclassification Cost)의 차이
현실에서는 상황에 따라 잘못된 예측이 주는 피해(=오분류 비용)가 다를 수 있음

  • ex. 1: 암 진단
    실제 암 환자를 암이 없다고 예측(음성 오분류)하는 경우:
    → 환자가 필요한 치료를 받지 못해 매우 위험
    암이 없는 사람을 암이라고 예측(양성 오분류)하는 경우:
    → 불필요한 검사나 불안감을 초래할 수 있지만, 생명에 직접적인 위협은 덜함

  • ex. 2: 미사일 발사 시스템
    실제 발사 상황에서 미사일 발사를 감지하지 못하는 경우
    → 심각한 재앙으로 이어질 수 있음
    실제 발사가 없는데도 발사라고 잘못 판단하는 경우
    → 경보를 울리지만, 큰 피해로 이어지지는 않을 수 있음

단순히 몇 개를 맞췄는지만 나타내므로, 한 모델이 높은 Accuracy를 보이더라도 치명적인 오분류가 발생할 수 있음

• Class-imbalanced dataset (클래스 불균형)
전체 데이터에서 한 클래스의 비율이 매우 높고,
다른 클래스의 비율이 매우 낮은 상황

→ 불균형 데이터에서는 대부분의 데이터가 다수 클래스에 속하기 때문에, 모델이 다수 클래스만 정확히 예측해도 높은 정확도를 얻을 수 있음

혼동 행렬(Confusion Matrix)

모델이 예측한 결과와 실제 결과를 네 가지 범주로 나누어 정리하는 도구

→ 혼동 행렬은 정확도만 보는 것보다 훨씬 정밀하게
모델이 어떤 오류를 자주 범하는지 알려줌

TP (True Positive): 실제 양성인 샘플을 양성으로 올바르게 예측한 경우
TN (True Negative): 실제 음성인 샘플을 음성으로 올바르게 예측한 경우
FP (False Positive): 실제 음성인데 양성으로 잘못 예측한 경우
FN (False Negative): 실제 양성인데 음성으로 잘못 예측한 경우

오류 유형: Type I vs. Type II

Type I (FP):
→ 실제로는 건강하지만 암이라고 진단
→ 과잉 검사, 비용 발생 (하지만 치료를 놓치진 않음)
Type II (FN):
→ 실제로는 암인데 정상이라고 진단
→ 치료 시기를 놓쳐 치명적 결과

질병 진단에서는 놓치는 것(FN)이 더 위험
스팸 필터링에서는 거짓 알람(FP)이 사용자 불편을 유발

스팸 필터링에서는 Type I Error(거짓 경고)를 줄이는 것이 중요
질병 진단에서는 Type II Error(중요한 걸 놓치는 것)을 줄이는 게 더 중요

주요 성능 지표 (혼동 행렬 바탕)

Accuracy (정확도)

Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}

Sensitivity = True Positive Rate = Recall = Hit ratio (재현율, 민감도)
: 실제 Positive 중에서 모델이 Positive라고 맞춘 비율

Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}

Specificity = True Negative Rate
: 실제 Negative 중에서 모델이 올바르게 음성으로 예측한 비율

Specificity=TNTN+FP\text{Specificity} = \frac{TN}{TN + FP}

Precision (정밀도)
: 모델이 양성이라고 예측한 샘플 중 실제로 양성인 비율

Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}

False Alarm Prob. (거짓 경보율) = False Positive Rate
: 실제는 Negative인데 Positive로 잘못 예측한 비율

FPR=FPFP+TN=1SpecificityFPR = \frac{FP}{FP + TN} = 1 - \text{Specificity}

F1-score

Precision와 Recall의 조화 평균(harmonic mean),
두 지표의 균형이 잘 맞는지를 평가

조화 평균은 두 값 중 낮은 값에 민감한 특성을 가지고 있어,
Precision과 Recall 중 하나라도 낮으면 F1-score도 낮게 나오게 되어,
전체 성능 평가에 반영됨

→ F1-score양성 클래스에 대해
모델이 얼마나 신뢰할 수 있는 예측을 했는지를 보여줌

F1=2×Precision×RecallPrecision+RecallF1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

임계값 (Threshold,c)

y : 실제 라벨
k : 임계값 기준 예측

• 모델 예측:
모델은 입력 x에 대해 클래스 1일 확률 p를 출력

• 임계값(Threshold) 적용:

  • p≥0.5이면 예측 클래스를 1 (Positive)로 결정
  • p<0.5이면 예측 클래스를 0 (Negative)로 결정

성능 지표와 Threshold의 관계

  • Threshold c ↓
    → 더 많은 샘플을 Positive로 분류함 → Sensitivity ↑, Specificity ↓
  • Threshold c ↑
    → Positive로 예측하는 게 더 어려워짐 → Sensitivity ↓, Specificity ↑

ROC (Receiver Operating Characteristic) Curve

모델의 임계값(threshold)을 변화시키면서, TPR과 FPR을 플롯

X축: FPR (False Positive Rate)
Y축: TPR (True Positive Rate)

각 점은 서로 다른 임계값 c에서 계산된 (FPR, TPR) 쌍을 나타냄

이상적인 모델은 가능한 한 왼쪽 상단 구석에 가까운 점들을 만들어야 함
→ 높은 TPR (양성을 잘 잡음)과 낮은 FPR (음성을 잘 배제함)

• AUC (Area Under the ROC Curve)
: ROC 곡선 아래의 면적으로, 모델이 얼마나 잘 분류하는지를 한 숫자로 요약한 값

AUC 값의 해석:

  • 1.0: 완벽한 모델 → 모든 임계값에서 이상적으로 분류함
  • 0.5: 랜덤 추측 수준 → ROC 곡선이 대각선(우상향) 형태로 나타남
  • 0.5보다 작으면: 모델의 분류 방향이 반대일 수 있으므로,
    보통 0.5 이상의 값이 바람직

→ AUC가 높을수록 모델의 전반적인 구분 성능이 좋다는 것을 의미

ROC Curve를 활용해 임계값(threshold)을 결정하는 방법

Euclidean Distance (유클리드 거리 기준)
ROC Curve 상의 이상적인 점인 (FPR = 0, TPR = 1)을 기준으로,
실제 ROC Curve 상의 각 점과의 거리를 계산

c=argminc(1Sensitivity)2+(1Specificity)2c^* = \underset{c}{\arg \min} \sqrt{(1 - \text{Sensitivity})^2 + (1 - \text{Specificity})^2}

→ (0,1) 과 가장 가까운 점을 찾기 위해 유클리드 거리를 계산

Youden’s Index (유든 지수 기준)
Positive를 잘 잡는 정도와 Negative를 잘 배제하는 정도를 합산한 뒤 1을 뺀 값

c=argmaxc(Sensitivity+Specificity1)c^* = \underset{c}{\arg \max} (\text{Sensitivity} + \text{Specificity} - 1)

→ 최대값을 주는 c가 가장 성능 좋은 임계값으로 간주

이익과 손실을 반영하여 임계값(threshold)을 결정하는 방법

Profit Matrix (이익 행렬)
각 분류 결과에 대해 실제로 얻는 보상이나 발생하는 손실을 나타냄

  • C(1,1): 실제 양성을 올바르게 예측 → 보상 또는 이익
  • C(1,0): 실제 양성인데 음성으로 예측 → 큰 손실 (중요한 사건을 놓침)
  • C(0,1): 실제 음성인데 양성으로 예측 → 불필요한 경보나 비용 발생
  • C(0,0): 실제 음성을 올바르게 예측 → 보상 또는 비용 절감

Probability Matrix
모델이 각 샘플에 대해 Positive일 확률 p를 출력

Expected Profit (기대 이익) 계산
각 분류 결과에 대해 (이익 행렬의 값 × 그 결과가 발생할 확률)을 모두 합산

Expected Profit (EP)
= C(1,1) × P(1,1) + C(1,0) × P(1,0) + C(0,1) × P(0,1) + C(0,0) × P(0,0)

Model Validation (Selection)

Model Selection

• 가능한 상황 (Possible Scenarios)

  1. 훈련(Training) 세트와 테스트(Test) 세트가 모두 존재하지만,
    테스트 세트에는 레이블(정답)이 없음
    → 실제 평가(최종 성능)를 위해 테스트 데이터를 사용할 수 없으므로
    다른 방법(교차 검증, 검증 세트 분할)을 통해 모델 성능을 추정해야 함

  2. 오직 훈련 세트만 사용 가능한 경우
    → 테스트 데이터 없이 훈련 데이터만 존재한다면, 모델 선택 시
    훈련 데이터에 기반한 평가 방법(교차 검증, 검증 세트 분할)을 사용해야 함

• 모델 선택의 목표 (Objective)
테스트 세트에서 가장 좋은 성능을 낼 것으로 예상되는 모델을 선택

• Naïve Approach (단순 접근 방식)
훈련 세트에서 가장 성능이 좋은 모델을 선택하는 방법

문제점:

  • 과적합(Overfitting) 위험
    훈련 세트에서 최고 성능을 보인 모델은 종종 과적합(overfitting)되어, 새로운 데이터(테스트 세트)에서는 성능이 저하될 수 있음

  • 일반화 성능(Good Generalization)을 반영하지 못함
    훈련 데이터에 특화된 모델은 실제 상황에서 데이터 분포가 조금만 달라져도 성능이 급격히 떨어질 위험이 있음

Linear regression

선형 회귀 모델 ff는 데이터의 전반적인 경향을 직선으로 표현하여
x와 y 사이의 선형 관계를 모델링

y=f(x)+ϵ,f(x)=wx+by = f(x) + \epsilon, \qquad f(x)=wx+b

Quadratic regression (2차 회귀)

2차 회귀는 x와 y 사이 관계를 곡선(포물선)으로 모델링
x2x^2항이 들어가기 때문에 데이터의 곡선형 패턴도 잡아낼 수 있음

f(x)=ax2+bx+c,f(x)=wx+bf(x) = ax^2 + bx + c, \qquad f(x)=wx+b

(→ 다항 회귀도 입력 차원만 늘린 선형 회귀 문제로 변형 가능)

Piecewise linear nonparametric regression

전체 데이터를 하나의 직선이나 하나의 곡선으로 설명하려 하지 않고,
데이터를 일정한 구간으로 나누어 각 구간에 별도의 직선을 맞춤

→ 선형 회귀(직선)와 2차 회귀(곡선)보다 유연하고 데이터에 잘 맞지만,
과적합 위험 있음

Overfitting Problem

x축: 모델 복잡도
왼쪽: 모델이 간단하여 표현력이 낮은 경우 (Underfitting)
오른쪽: 모델이 매우 복잡하여 데이터의 세세한 패턴까지 학습하는 경우 (Overfitting)

y축: 에러 (오차)

  • 훈련 에러 (Training Error):
    모델이 학습 데이터에 대해 얼마나 잘 맞추는지를 나타냄.
    → 모델 복잡도가 높아질수록 훈련 데이터에 완벽하게 적합할 수 있으므로 에러가 매우 낮아짐.
  • 일반화 에러 (Generalization Error):
    모델이 새로운 데이터나 테스트 데이터에서 얼마나 잘 예측하는지를 나타냄
    → 모델 복잡도가 증가할 때 처음엔 일반화 에러가 감소하지만,
    어느 순간부터 지나치게 복잡해지면 오히려 증가하게 됨

Underfitting (과소적합) 영역:
모델이 너무 단순해서 데이터의 패턴을 전혀 잡지 못함.
훈련 에러와 일반화 에러가 모두 높음

Optimal Zone (최적 영역):
모델 복잡도가 적절하여, 훈련 데이터에도 잘 맞고 새로운 데이터에도 잘 일반화됨.
일반화 에러가 최소에 가까운 지점

Overfitting (과적합) 영역:
모델이 지나치게 복잡해져서 훈련 데이터의 잡음까지 학습하는 경우.
훈련 에러는 거의 0에 가깝지만, 일반화 에러는 다시 상승
Generalization Gap (훈련 에러와 일반화 에러의 차이)이 커지면,
모델의 실제 예측 성능은 떨어짐

과적합(overfitting)과 과소적합(underfitting)을 방지하는 방법

  • 더 많은 훈련 데이터 수집:
    데이터 양과 다양성을 늘려 모델이 일반적인 패턴을 학습하게 함
  • 변수 선택:
    의미 없는 변수나 잡음 변수들을 제거하여 모델을 단순화
  • 정규화:
    손실 함수에 정규화 항을 추가해 모델의 가중치를 제한하고 과적합을 방지
  • 검증 방법:
    교차 검증이나 홀드아웃 방식으로 모델의 일반화 성능을 객관적으로 평가하여 최적의 모델을 선택

Validation Methods

Holdout Validation (단일 분할 방식)

데이터를 두 부분으로 나눔

  • 훈련 세트 (Training Set):
    모델을 학습하는 데 사용
  • 테스트 세트 (Test Set):
    학습한 모델의 일반화 성능(새로운 데이터에 대한 예측력)을 평가

매우 단순하고 빠르게 분할하여 모델의 성능을 측정할 수 있음
과적합 여부를 파악하기 어려움

Train/Validation/Test Split (세 부분 분할 방식)

데이터를 세 부분으로 나눔

  • 훈련 세트 (Training Set):
    모델을 학습하는 데 사용
  • 검증 세트 (Validation Set):
    모델의 성능을 검증하고, 하이퍼파라미터 튜닝이나 모델 선택에 사용
  • 테스트 세트 (Test Set):
    최종 선택된 모델의 성능을 평가

검증 세트를 활용하여, 학습 중에 발생할 수 있는 과적합 문제를 미리 확인하고, 최적의 모델을 선택할 수 있음
but 데이터가 충분하지 않은 경우, 세 부분으로 나누면 각 세트의 데이터 양이 부족해져 성능 평가의 안정성이 떨어질 수 있음

K-fold cross validation

1. 데이터 분할:

전체 데이터를 K개의 폴드로 균등하게 나눔

2. 반복 학습 및 평가:

첫 번째 반복 : 폴드 1을 검증 세트로, 폴드 2~5를 훈련 세트로 사용하여 모델을 학습한 후, 폴드 1에서 성능을 평가
두 번째 반복: 폴드 2를 검증 세트로, 나머지 폴드(1, 3, 4, 5)를 훈련 세트로 사용하여 평가
→ K번 반복하여, 각 폴드가 한 번씩 검증 세트 역할을 하게 됨

3. 평균 성능 산출:

K번의 평가 결과(ex. 정확도, MSE)를 평균하여 최종 모델의 성능을 추정

→ 모든 데이터가 한 번씩 검증에 사용되므로,
데이터가 적은 경우에도 안정적인 성능 추정 가능

Leave-One-Out Cross Validation (LOOCV)

전체 데이터셋의 각 샘플을 한 번씩 검증 데이터로 사용하여,
나머지 모든 데이터를 학습에 사용하는 교차 검증 기법

  • 데이터셋에 있는 샘플 수가 N개라면, LOOCV는 N번의 반복(iteration)을 진행
  • 각 반복에서:
    검증 데이터: 한 개의 샘플만 선택
    훈련 데이터: 나머지 N−1개의 샘플을 사용하여 모델을 학습
  • 각 반복마다 학습된 모델을 검증 샘플에 적용하여 오류를 기록하고,
    이 과정을 N번 반복한 후 그 결과들의 평균을 최종 성능으로 산출

데이터가 적은 경우 유리함
모든 샘플이 한 번씩 검증용으로 사용되므로, 데이터셋의 모든 정보를 평가에 반영할 수 있음
대규모 데이터셋에서는 실행에 많은 시간이 소요, 계산 비용이 큼

Time-Series Cross Validation

• 시계열 데이터의 특성
시간 순서 보존:
시계열 데이터는 시간 순서대로 정렬되어 있음.
미래 데이터를 과거 데이터로 학습하는 것은 현실적으로 불가능하며,
데이터 누수(Data Leakage)를 발생시킴
연속성:
데이터의 시간적 연속성을 유지해야 모델이 실제로 미래를 예측하는 데 도움이 됨

Expanding Window 방식

초기 일정 구간을 훈련 데이터로 사용한 후, 검증 데이터를 포함하는 방식

  • 처음 60%의 데이터를 훈련, 다음 10%를 검증으로 사용
  • 그 다음, 훈련 데이터에 검증 데이터를 추가하여 (60%+10%를 훈련으로) 다음 10%를 검증 데이터로 사용
  • 같은 방식으로 훈련 데이터의 범위를 점차 확장하면서 여러 번 평가를 수행

→ 점진적으로 더 많은 과거 정보를 포함하므로,
모델이 점점 더 많은 데이터를 학습

K-fold cross validation 과의 차이

K-fold 교차 검증:
데이터를 무작위로 섞은 후,
여러 폴드로 나누어 각 폴드를 검증용으로 사용하는 방식.
but 시계열 데이터에서는 순서를 무시하면 미래 정보를 일부 포함하는 문제가 발생

→ Time-Series Cross Validation은 데이터를 임의로 섞지 않고 시간의 흐름에 따라 분할

Holdout Validation

  • 전체 데이터를 일정 비율로 나누어, 70%는 훈련 세트,
    30%는 검증 세트로 사용
  • 훈련 세트로 모델을 학습시키고, 검증 세트로 모델의 일반화 성능
    (새로운 데이터에 대한 예측력)을 평가
  • 검증 세트에서 예측값과 실제값 사이의 오차 제곱합
    (SSE, Sum of Squared Errors)을 계산

→ SSE가 낮을수록 검증 데이터에 대해 잘 맞춘 모델로 판단

Linear regression

검증 세트에서 SSE = 2.4
모델이 데이터를 단순한 직선으로 설명하여,
데이터의 일부 곡선적 특성을 반영하지 못해 과소적합(underfitting) 상태

Quadratic regression

검증 세트에서 SSE = 0.9
2차 항을 포함하여 데이터의 곡선적 패턴을 어느 정도 반영

→ 훈련 데이터와 검증 데이터 모두에서 균형 잡힌 성능을 보이며,
가장 낮은 SSE를 기록하여 일반화 성능이 우수한 모델로 판단

Piecewise linear nonparametric regression

검증 세트에서 SSE = 2.2
훈련 데이터에서는 거의 오차 없이 맞출 정도로 복잡하지만,
검증 세트에서는 데이터의 노이즈까지 학습한 결과 과적합(overfitting)이 발생

K-Fold Cross Validation

  • 데이터를 K개의 폴드(K=3)로 나눔
  • 각 반복에서 하나의 폴드를 검증용으로, 나머지를 훈련용으로 사용.
  • 모든 폴드가 한 번씩 검증용으로 사용되며, 각 평가의 오류
    (SSE,Sum of Squared Errors)를 평균냄.

0개의 댓글