일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Aegis
- UI
- attribute
- Replication
- 유니티
- MAC
- 게임개발
- map design
- local prediction
- rpc
- gameplay tag
- Unreal Engine
- 게임 개발
- os
- listen server
- gravity direction
- ability task
- gameplay effect
- CTF
- 언리얼 엔진
- network object pooling
- Multiplay
- gas
- gameplay ability system
- nanite
- 언리얼엔진
- stride
- photon fusion2
- animation
- unity
- Today
- Total
Replicated
분류 문제의 성능 지표 본문
모델을 평가하는 성능 지표들
- 회귀(regression): MAE, MSE, RMSE, SSE
- 분류(classification): 정확도, 정밀도, 민감도, F1 스코어, ROC 커브, 리프트 차트
- 클러스터링(clsutering): DBI, 엘보우 메서드, 실루엣 계수
추가적인 성능 지표
- 모델의 경제성
- 모델이 쓰는 데이터 양
- 모델이 용량이 작은 컴퓨터에서도 돌아가나?
분류 문제의 성능지표
혼동행렬(confusion matrix)
- 예측값이 실제값 대비 얼마나 잘 맞는지 2x2 행렬로 표햔
예측값(prediction) | |||
실제값(actual class) | 1 | 0 | |
1 | True Positive | False Negative | |
0 | False Positive | True Negative |
True Positive(TP) : 예측값, 실제값 모두 1로 동일 (맞는 걸 맞다고 함)
True Negative(TN) : 예측값, 실제값 모두 0으로 동일 (틀린 걸 틀렸다고 함)
False Negative(FN) : 실제값 1 예측값 0 (맞는 걸 아니라고 함)
False Positive(FP) : 실제값 0 예측값 1 (틀린 걸 맞다고 함)
정확도(accuracy)
- 전체 데이터 대비 정답을 맞춘 데이터의 개수
- Accuracy = (TP + TN) / (TP + TN + FP + FN)
정밀도와 민감도
- 정밀도와 민감도는 불균일한 데이터셋을 다룰 때 유용
- 데이터에서 1와 0의 비율이 7:3 또는 3:7 이상 차이나는 상태
정밀도(precisiopn)
- 모델이 1이라고 예측했을 때 얼마나 잘 맞았을지에 대한 비율
- PRECISION(PPV) = TP / (TP + FP)
민감도(recall)
- 실제 1인 값을 가진 데이터를 모델이 얼마나 1이라고 잘 예측했는지에 대한 비율
- == 반환율, 재현율
- RECALL(TPR) = TP(TP + FN)
F1 스코어(F1 score)
- 정밀도와 민감도의 조화평균 값
F1 = 2 * (precision * recall) / (precision + recall)
예시
예측 | |||
실제 | 암환자 | 정상인 | |
암환자 | 2 | 7 | |
정상인 | 1 | 90 |
정확도: 92/100
정밀도: 2/3
민감도: 2/9
사이킷런
from sklearn.metrics import confusion_matrix
y_true = [1, 0, 1, 1, 0, 1]
y_pred = [0, 0, 1, 1, 0, 1]
confusion_matrix(y_true, y_pred)
tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
(tn, fp, fn, tp)
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = np.array([0, 1, 1, 0])
y_true = np.array([0, 1, 0, 0])
#accuracy = (y_pred[ y_pred == y_true ].size) / y_true.size
#accuracy
np.sum(y_true == y_pred) / len(y_true)
정확도 계산
주석 친 거도 같은 결과 나옴
accuracy_score(y_true, y_pred)
사이킷런 함수 써도 됨
import numpy as np
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
y_pred = np.array([0, 1, 1, 0, 1, 1, 1, 0])
y_true = np.array([0, 1, 0, 0, 0, 0, 1, 1])
정밀도, 민감도, F1 스코어도 가능
'빅데이터마이닝' 카테고리의 다른 글
다중클래스 분류 & 소프트맥스 분류 (0) | 2025.04.12 |
---|---|
로지스틱 회귀 구현 (0) | 2025.04.12 |
로지스틱 회귀 (0) | 2025.04.11 |
과대적합과 정규화 (0) | 2025.04.11 |
경사하강법 실습 (0) | 2025.04.08 |