머신러닝 - 머신러닝 실험 재현성과 모델 성능 평가
머신러닝 실험 재현성과 모델 성능 평가
1. Random Seed 고정
1.1 개념
- Random Seed: 난수 생성기의 시작값
- 모델의 초기 가중치, 데이터 섞기(shuffle), 학습/검증 데이터 분리 등에 난수가 쓰입니다.
- Seed 값을 고정하면 매번 같은 난수를 생성 → 동일한 실행 결과를 얻을 수 있음
1.2 왜 고정해야 하나?
-
재현성(Reproducibility) 확보
- 동일한 코드와 데이터로 같은 결과를 재실행 가능
- 논문, 보고서, 디버깅 시 필수
-
고정하지 않으면 매번 결과가 달라져 정확한 비교 불가능
1.3 코드 예시
import random, os
import numpy as np
import torch
seed = 42
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
if torch.cuda.is_available():
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
Tip: GPU 사용 시 완전 재현을 원하면
torch.use_deterministic_algorithms(True)설정 필요
1.4 쉬운 비유
- 난수 생성기 = 주사위
- Seed를 지정하지 않으면 매번 던질 때 눈이 랜덤하게 바뀜
- Seed를 고정하면 “특정 순서의 주사위 눈”이 매번 그대로 재현됨 → 실험 조건이 변하지 않음
2. Classification Metrics
2.1 Confusion Matrix 기본 구조

| Predicted Positive | Predicted Negative | |
|---|---|---|
| Actual Positive | True Positive (TP) | False Negative (FN) |
| Actual Negative | False Positive (FP) | True Negative (TN) |
- TP: 실제 Positive, 예측도 Positive
- FP: 실제 Negative인데 Positive로 예측
- FN: 실제 Positive인데 Negative로 예측
- TN: 실제 Negative, 예측도 Negative
2.2 주요 성능 지표
-
Accuracy (정확도)
\[\frac{TP + TN}{TP + TN + FP + FN}\]→ 전체 예측 중 맞춘 비율
비유: 시험에서 전체 문제 중 맞게 푼 문제 비율
-
Precision (정밀도)
\[\frac{TP}{TP + FP}\]→ Positive라고 예측한 것 중 실제 Positive 비율
비유: “합격이라고 한 사람들 중 진짜 합격한 사람의 비율”
-
Recall (재현율)
\[\frac{TP}{TP + FN}\]→ 실제 Positive 중 모델이 맞춘 비율
비유: “실제 합격자 중에서 모델이 합격이라고 맞춘 비율”
-
Specificity (특이도)
\[\frac{TN}{TN + FP}\]→ 실제 Negative 중 맞춘 비율
-
F1-score
\[2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}\]→ Precision과 Recall의 조화 평균
비유: 정밀함과 놓치지 않는 능력을 동시에 반영한 종합 점수
2.3 Python 코드 예시
from sklearn import metrics
y_pred = model.predict(X_test)
print('Accuracy:', metrics.accuracy_score(y_test, y_pred))
print('Balanced Accuracy:', metrics.balanced_accuracy_score(y_test, y_pred))
print('Classification Report:\n', metrics.classification_report(y_test, y_pred))
- accuracy_score: 전체 정확도
- balanced_accuracy_score: 클래스 불균형 고려
- classification_report: Precision, Recall, F1-score, support(샘플 수) 제공
2.4 쉬운 비유로 이해하기
- Precision = “합격하라고 보낸 합격 통지서 중에서 진짜 합격자가 몇 명이냐?”
- Recall = “실제 합격한 사람들 중에 통지서를 받은 사람이 몇 명이냐?”
- Accuracy = “전체 사람 중에 판단이 맞은 비율”
- F1-score = “Precision과 Recall 모두 잘해야 점수가 높은 종합 평가 점수”
📌 정리
- Random Seed 고정: 실험 결과 재현성을 위해 필수
- 성능 지표 선택: 데이터 불균형 시 Accuracy보다 F1-score, Recall 등을 고려
- 비유를 통해 이해: 합격자 예시, 주사위 예시 등을 사용하면 헷갈리지 않음
댓글남기기