성능 평가 측도 (Performance Measures)

  • 단일 지표가 아니라 목적(불량 검출처럼 놓치면 안 되는 상황 등)에 맞는 지표를 골라야 하며,
  • 분류는 절단점과 ROC/AUC로,
  • 회귀는 오차 기반 지표로 평가하고,
  • 신뢰할 수 있는 평가를 위해 데이터 분할·교차검증을 거쳐야 한다.

1. 분류 성능 평가 측도

1.1. 혼동 행렬

  • 혼동 행렬 (Confusion Matrix), 정오행렬
    • 주로 분류(Classification) 모델의 성능을 평가할 때 쓰는 표
    • 실제 범주와 예측 범주를 교차한 행렬로, 모든 성능 지표의 기초가 된다.
    • 이진 분류의 경우 2×2 행렬 형태를 가진다.

단순히 “얼마나 맞췄나(정확도)“만 보는 것이 아니라, “어떻게 틀렸나”를 파악한다. 이를 통해 비즈니스 목적에 맞춰 모델을 튜닝할 수 있다.

  • 구성 요소
    • T (True) / F (False): 예측이 맞았으면 True, 틀렸으면 False
    • P (Positive) / N (Negative): 모델이 Positive(양성)로 예측했으면 P, Negative(음성)로 예측했으면 N
실제 \ 예측예측 양성
Positive/+/1
예측 음성
Negative/−/0
실제 양성
Positive/+/1
TP; True Positive
참긍정, 진양성
FN; False Negative
거짓부정, 위음성(미탐)
실제 음성
Negative/−/0
FP; False Positive
거짓긍정, 위양성(오탐)
TN; True Negative
참부정, 진음성

cf. 혼동 행렬과 유사한 논리를 사용하는 개념

  1. 추론통계학의 가설 검정
  2. 심리학의 신호 탐지 이론

1.2. 주요 지표

혼동행렬의 수치를 조합하여 다양한 성능 지표를 계산한다.

(1) 전체적 지표

  • 오분류율

    • (전체 데이터 중 잘못 분류한 비율)
  • 정분류율, 정확도 (Accuracy)

    • (전체 데이터 중 올바르게 분류한 비율)

    • 데이터 불균형(Imbalanced Data)이 심할 경우 신뢰하기 어렵다.

    • 예: 99명이 정상, 1명이 암일 때 무조건 정상이라고 찍어도 정확도는 99%

(2) 조건부 지표

상황에 따라 어떤 지표를 우선할지가 달라진다.

  • 정밀도 (Precision)

    • (양성으로 예측한 것 중 실제로 양성인 비율)

    • 예: 스팸 메일 필터링 (정상 메일을 스팸으로 분류하면 안 된다.)

  • 재현율 (Recall), 민감도 (Sensitivity), TPR

    • (실제로 양성인 것 중 맞게 예측한 비율)

    • Precision과 Recall은 trade-off 관계

    • 예: 질병 진단 (실제 환자를 정상으로 분류하면 안 된다.)

  • 특이도 (Specificity), TNR

    • (실제로 음성인 것 중 맞게 예측한 비율)
  • 제1종 오류 (Type I Error, FPR)

  • 제2종 오류 (Type II Error, FNR)

(3) 복합 지표

  • -score, -measure,

    • (정밀도와 재현율의 조화평균)

    • 데이터 불균형이 심할 때 정확도보다 더 선호된다.

  • 균형 정확도

    • (재현율과 특이도의 기하평균)

(4) ROC 곡선

  • 절단점(Cuf-off)
    • 0.9로 설정하면 확률이 90% 이상일 때만 양성으로 판단하므로, 양성 판정에 신중해진다. (FPR과 TPR이 모두 낮아짐)
    • 0.1로 설정하면 확률이 10%만 넘어도 양성으로 판단하므로, 양성 판정을 남발하게 된다. (FPR과 TPR이 모두 높아짐)
    • 임계값을 1에서부터 0까지 점진적으로 내리면서, 각 임계값마다 계산되는 (FPR, TPR) 값을 그래프 위의 좌표로 찍어 선으로 연결한 것이 바로 ROC 곡선이다.

  • ROC 곡선 (Receiver Operating Characteristic Curve; 수신기 작동 특성 곡선)
    • FPR, TPR을 임계값에 따라 그린 곡선
    • 가능한 모든 임계값(절단점)에 대해 계산
  1. X축: FPR (False Positive Rate), 제1종 오류

    • 실제 음성(Negative)인 대상 중에서 모델이 양성(Positive)으로 잘못 예측한 비율
    • FPR이 0에 가까울수록 모델이 음성 데이터를 음성으로 잘 맞춘다는 의미
  2. Y축: TPR (True Positive Rate), Recall/Sensitivity

    • 실제 양성(Positive)인 대상 중에서 모델이 양성으로 올바르게 예측한 비율
    • TPR이 1에 가까울수록 모델이 양성 데이터를 잘 잡아낸다는 의미

  • ROC 곡선의 해석 방법

    1. 좌상단 (0, 1) 방향으로 굽어질수록 우수한 모델이다. 이는 잘못 분류하는 비율은 낮으면서(FPR=0), 올바르게 분류하는 비율은 높다(TPR=1)는 것을 뜻한다.
    2. 대각선 ( 직선)은 무작위로 추측(Random Guessing)하는 경우의 성능을 의미한다. 무작위 모델은 ROC 곡선이 이 대각선에 가깝게 그려진다.
    • 극단적인 케이스로, 항상 positive라고 하면 TPR=FPR=1, 항상 negative라고 하면 TPR=FPR=0이 된다.
  • ROC 곡선 사용 시 유의할 점

    • 클래스 불균형(Class Imbalance): 데이터 중 양성 데이터가 극단적으로 적고 음성 데이터가 대부분인 상황(예: 희귀 질병 진단, 금융 사기 탐지 등)에서는 ROC 곡선이 모델의 실제 성능보다 과도하게 낙관적으로 보일 수 있다.
    • 이럴 때는 PR 곡선(Precision-Recall Curve, 정밀도-재현율 곡선)을 함께 검토하는 것이 대안이 될 수 있다.

(5) AUC

  • AUC (Area Under ROC Curve)
    • ROC 곡선 자체는 선으로 표현되기 때문에 여러 모델의 성능을 정량적으로 직접 비교하기 어려울 때가 있어, 이를 보완하기 위해 ROC 곡선 아래의 면적을 계산한 값
    • AUC 값은 항상 0.5에서 1 사이의 값을 가진다.
    • 0.5: 무작위 예측 수준으로, 분류기로서의 가치가 거의 없음을 의미한다.
    • 1.0: 이론상 가능한 이상적인 예측 분류

2. 모델링 과정

학습데이터 → 전처리 → 모델링 → 검증의 흐름에서, 일반화 오류 추정과 하이퍼파라미터 튜닝 방법이 단계적으로 제시된다.

cf. 모델 파라미터

모델 파라미터/가중치/편향 (Model Parameters)

  • 모델이 학습 과정에서 데이터로부터 자동으로 학습하는

    • 신경망의 가중치(weight)와 편향(bias)
    • 선형회귀의 회귀계수
    • CNN의 필터(커널) 값
  • 이 값들은 사람이 직접 설정하지 않고, 학습 알고리즘(예: 경사하강법)이 손실 함수를 최소화하면서 점진적으로 조정

2.1. 하이퍼파라미터 (Hyperparameters)

  • 학습을 시작하기 전에 사람이 직접 설정하는 값들로, 학습 과정 자체를 제어

    • 학습률(LR; learning rate)
    • 배치 크기(batch size)
    • 에폭 수(epochs)
    • 신경망: 층 수, 각 층의 뉴런 수
    • 옵티마이저(optimizer) 종류(Adam, SGD 등)
    • 드롭아웃(dropout) 비율
    • 정규화 강도(L1/L2 regularization)
    • CNN: 필터 크기, 채널 개수
  • 하이퍼파라미터는 학습 데이터로부터 직접 학습되지 않고, 보통 검증 데이터셋에서의 성능을 보면서 그리드 서치, 랜덤 서치, 베이지안 최적화 같은 방법으로 튜닝

  • cf.

    • Hyperparameter Optimization
    • AutoML

3. 검증을 위한 데이터셋 분할

  • 데이터셋 분할 (Dataset Splitting)

    • 머신러닝 및 딥러닝 모델의 학습과 객관적인 성능 평가를 위해 전체 데이터를 서로 다른 역할을 하는 하위 데이터셋으로 나누는 과정이다.
  • 데이터 구성

    • 훈련(Training) 데이터와 테스트(Test) 데이터로 분리하여 학습 및 검증
  • dataset 분할

    • train 80%, validation 10%에 test 10% 등
    • 테스트 데이터는 절대 모델 학습이나 튜닝에 사용되지 않아야 한다.

3.1. 데이터셋의 구성 요소

일반적으로 다음과 같이 세 가지 데이터셋으로 분할한다.

  • 학습 데이터셋 (Training Set)

    • 역할: 모델을 학습(가중치 업데이트)시키는 데 직접 사용되는 데이터입니다.
    • 비중: 전체 데이터 중 가장 큰 비중을 차지합니다.
  • 검증 데이터셋 (Validation Set)

    • 역할: 학습 중인 모델의 성능을 중간 검증하는 데 사용됩니다.
    • 용도: 모델의 과적합(Overfitting) 여부를 판단하고, 모델의 하이퍼파라미터(예: 학습률, 레이어 수 등)를 조정 및 튜닝하는 기준이 됩니다.
  • 테스트 데이터셋 (Test Set)

    • 역할: 학습과 튜닝이 모두 끝난 최종 모델의 ‘일반화 성능(Unseen Data에 대한 성능)‘을 평가하는 데 사용됩니다.
    • 주의사항: 모델 학습 및 튜닝 과정에 절대 관여해서는 안 되며, 오직 마지막 평가 단계에서 한 번만 사용해야 합니다.

3.2. 대표적인 분할 비율

데이터의 양과 상황에 따라 다르지만, 일반적으로 다음과 같은 비율이 주로 사용된다.

  • 분할 전략

    1. 학습 데이터만으로 검증 (과적합 위험)
    2. → Train/Test (훈련/테스트) 분할
    3. → Train/Validation/Test (훈련/검증/테스트) 분할
    4. → 교차 검증 (Cross-Validation)
      • (k-fold: validation fold를 돌아가며 사용)
    • 뒤로 갈수록 일반화 성능 추정이 신뢰도가 높아진다.
  • 학습 : 검증 : 테스트

    • 60 : 20 : 20 또는 80 : 10 : 10
  • 학습 : 테스트

    • 검증 단계를 생략하고 간단히 구성할 때
    • 70 : 30 또는 80 : 20
  • cf. 빅데이터 환경 (수백만 개의 데이터)

    • 검증과 테스트에 각각 1%씩만 할당하고,
    • 나머지 98%를 학습에 사용하기도 한다.

3.3. 분할 시 주의할 점

  • 데이터 누수(Data Leakage) 방지

    • 테스트 데이터의 정보가 학습 과정(예: 스케일링, 결측치 대체 등)에 반영되지 않도록 철저히 분리해야 한다.
  • 층화 추출(Stratified Split)

    • 분류(Classification) 문제의 경우, 원본 데이터의 클래스(라벨) 비율이 학습, 검증, 테스트 데이터셋에 고르게 유지되도록 분할하는 것이 좋다.
  • 랜덤성 확보

    • 데이터가 특정 순서대로 정렬되어 있는 경우가 많으므로, 분할 전에 데이터를 무작위로 섞는(Shuffle) 과정이 필요하다.

3.4. 분할 도구

  • Scikit-learn의 train_test_split
    • 파이썬 환경에서 데이터를 다룰 때 사실상의 표준(De facto standard)으로 사용되는 라이브러리이다.
    • 테이블 형태의 데이터(Pandas DataFrame, NumPy Array)를 나눌 때 매우 편리하다.
from sklearn.model_selection import train_test_split
 
# X: 입력 특성(Feature), y: 타겟 레이블(Target)
# 전체 데이터의 20%를 테스트 데이터셋으로 분할
X_train, X_test, y_train, y_test = train_test_split(
	X, y, 
	test_size=0.2, 
	random_state=42, # 결과 재현을 위한 난수 초깃값
	stratify=y # 분류(Classification) 문제에서 클래스 비율을 균등하게 유지
)
  • 주요 옵션
    • test_size (또는 train_size)
      • 분할할 비율을 지정한다.
    • random_state
      • 코드를 다시 실행해도 동일하게 분할되도록 제어하는 seed 값이다.
    • stratify
      • 타겟 데이터의 클래스 분포 비율을 유지하며 분할하여 데이터 불균형 문제를 완화해 준다. (분류 문제에서 필수 권장)

4. 회귀(Regression) 성능 평가

지표정의특징
MAE(1/n)Σ|yᵢ−ŷᵢ|절대 오차의 평균
MAPE(1/n)Σ(|yᵢ−ŷᵢ|/|yᵢ|)×100%실제 값 대비 상대 오차
MSE(1/n)Σ(yᵢ−ŷᵢ)²제곱으로 부호 영향 제거
RMSE√MSEMAE와 유사하나 일치하진 않음
R² (결정계수)1 − SSE/SST모델이 설명하는 분산 비율, 1에 가까울수록 좋음

MAPE는 단위에 무관한 상대 오차라 서로 다른 스케일의 모델 비교에 유용하고, MSE/RMSE는 큰 오차에 더 큰 패널티를 준다.

  • 슬라이드 예시 데이터 기준
    • MAE = 2.93, MAPE = 12.21%, MSE = 11.73, RMSE = 3.425