My blog
[ML_week4_chap3] 평가 본문
00 머신러닝의 평가란
머신러닝 프로세스는
[데이터 가공 → 학습 → 예측 → 평가]로 이어진다. 이때 성능 평가 지표는 모델이 얼마나 잘 작동하는지 보여준다
- 회귀 모델: 실제 값과 예측값의 오차(Error) 크기로 평가
- 분류 모델: 예측된 클래스가 실제와 얼마나 일치하는가로 평가하지만, 정확도 하나로만 평가하면 좋지 않다
< 분류의 성능 평가 지표 >
01 정확도
- 정확도는 전체 데이터 중 맞힌 개수.
- 불균형한 데이터 세트에서는 이 수치가 모델의 성능을 왜곡 ex ) (타이타닉): 별도의 학습 없이 남자는 사망, 여자는 생존이라고만 찍어도 정확도가 높음
02 오차행렬
- 정확도의 한계를 극복하기 위해, 모델이 어떤 유형의 오류를 하는지 4분면 행렬로
- confusion_matrix(y_test,fakepred )
- 정확도 = 예측 결과와 실제 값이 동일한 건수/전체 데이터 수 = (TN + TP)/(TN + FP + FN + TP)
- FP: 1이라고 예측했는데 틀림 (정상을 사기라고 오해함 - 오탐)
- FN: 0이라고 예측했는데 틀렸림 (사기를 정상이라고 놓침 - 미탐)

03 정밀도와 재현율
- Positive 데이터 세트의 예측 성능에 초점
1) 정밀도 = TP / (FP+TP) : 예측값이 긍정 중 실제 긍정
- 실제 N인데 P로 판단하면 큰 영향일 때 ex) 스팸문자
- precision_score()
2) 재현율= TP / (FN+TP) : 실제값이 긍정 중 실제 긍정 == 민감도 == TPR
- 실제 P 를 N로 판단하면 큰 영향일 때 ex ) 암 양성인데 음성으로 판정
- recall_score()
정밀도와 재현율은 상호 보완적인 평가 지표라 어느 한쪽 높이면 하나는 떨어짐 (= 정밀도/재현율의 트레이드오프)
3) 임계값
- 임계값을 낮추면 (너 정도면 양성 - 너그럽게 ) == positive(양성예측) 많아짐 FN(놓친수) 하락 - 재현율 상승
- 임계값을 높이면 (확실한 것만 양성 - 깐깐하게) FP(가짜 생존) 하락 - 정밀도 상승
4) 사이킷런 도구들
- predict_proba(): 단순히 0이냐 1이냐가 아닌, 각 클래스에 속할 확률을 반환합니다.
- Binarizer: 설정한 임계값에 따라 0 또는 1로 이진화. 이를 통해 직접 임계값을 바꿔가며 예측 결과를 테스트 가능
- precision_recall_curve(): 임계값 변화에 따른 정밀도와 재현율의 변화를 배열로 반환하며, 이를 시각화함
04 F1 스코어
- 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치일 때 높은 값 (높을 수록 균형)
- f1_score()
05 ROC 곡선과 AUC
1) ROC 곡선 : FPR 이 변할 때 TPR(재현율) 이 어떻게 변하는지 나타냄
- X축 (FPR): 실제 음성(0)인데 양성(1)으로 잘못 예측 (1 - 특이성 == (TNR 실제 음성을 음성으로 예측 ) ) 가짜 맞힌 비율
- Y축 (TPR): 실제 양성(1)을 양성(1)으로 잘 예측한 비율 (재현율, 민감도) - 진짜 맞힌 비율
2) 임계값(Threshold)과 곡선의 관계
FPR을 0부터 1까지 바꾸는 방법은 바로 임계값을 조정
- 임계값 1: 아무도 양성으로 안 뽑음 → 가짜 양성(FP)이 0이 되어 FPR도 0이 됨.
- 임계값 0: 모두를 양성으로 뽑음 → 진짜 음성(TN)이 0이 되어 FPR은 1이 됨.

ROC 곡선이 직선과 멀어질 수록 성능이 좋은 것
AUC는 면적
휼륭한 모델은 FPR 대비 TPR이 급격하게 상승하는게 좋음 (왼쪽 상단에 바짝 붙은 것 )
'ML' 카테고리의 다른 글
| [ML_week5_chap7] 군집화 (0) | 2026.02.17 |
|---|---|
| [ML_week4_chap4] 분류 (0) | 2026.02.10 |
| [ML_week3_chap5] 회귀 (0) | 2026.02.03 |
| [ML_week2_chap6] 차원축소 (0) | 2026.01.27 |
| [ML_week2_chap2] 사이킷런 (0) | 2026.01.24 |