[AIS7] 분류 성능 평가 지표

BBakHye·2022년 11월 24일
0

🦁 AI SCHOOL 7기

목록 보기
34/52
post-thumbnail

📌 분류와 회귀의 평가 방법

✅ 분류 평가 지표

1) 정확도 (Accuracy)
2) 오차행렬/혼동행렬 (Confusion Matrix)
3) 정밀도 (Precision)
4) 재현률 (Recall)
5) F1 score
6) ROC-AUC

✅ 회귀 평가 방법

1) MSE (Mean Squared Error)
2) RMSE (Root Mean Squared Error)
3) R2 score

분류와 회귀는 위와 같이 각각 다른 평가 방법을 가지고 있고, 오늘은 분류 평가 지표에 대해 알아 볼 예정이다.

📌 1) Accuracy

정확도(Accuracy)는 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 단순한 지표.

# python code
from sklearn.metrics import accuracy_score
accuracy_score(df.y, pred)
  • 0에서 1사이의 값만 가진다.
  • 일반적으로 학습에서 최적화 목적함수로 사용된다.

예측이 정답과 얼마나 정확한가?

Accuracy가 높다고 해서 신용하기 어렵다. 희소한 데이터를 정확하게 예측하는 것이, 전체 데이터에 대한 정확도보다 중요할 경우가 있다.

현실에서 마주치는 많은 데이터들이 불균형 데이터이기 때문에 정확도 외에 다른 측정지표가 필요하다.

📌 2) Confusion Matrix

Confusion Matrix는 분류 문제에서 모델의 예측값(y^\hat{y})과 실제 데이터의 값(yy)을 비교하여 어떤 오류가 발생하고 있는지를 알아보고자 하는 지표.

💡 현실에서는 실제값이 어떤지 정확히 알 수 없는 경우가 많기 때문에, 예측값을 기준으로 알파벳을 이야기한다.

TN(True Negative, Negative Negative)
실제는 임신이 아니고(0), 임신이 아닌 것(0)으로 잘 예측함.

FP(False Positive, Negative Positive) - 1종 오류
실제는 임신이 아닌데(0), 임신(1)로 예측
스팸메일이 아닌데 스팸메일로 예측
무고한 피고인에게 유죄를 선고

FN(False Negative, Positive Negative) - 2종 오류
실제는 임신인데(1), 임신이 아닌 것(0)으로 예측
암인데 암이 아닌 것으로 예측
화재가 났는데 화재가 아니라고 예측

TP(True Positive, Positive Positive)
실제는 임신인데(1), 임신(1)으로 잘 예측함.

🤔 1종 오류와 2종 오류?

1종 오류 == False Alarm

“귀무가설이 참인데 잘못 판단해 기각 해버리는 오류”
e.g. 아파트에 불이 나지 않았음에도 화재 경보 알람이 울린 경우

2종 오류 == Miss

“귀무가설을 거짓인데도 기각하지 않아서 생기는 오류”
e.g. 아파트에 불이 났음에도 화재경보 알람이 울리지 않고 그대로 지나간 경우

👀 p-value
p-value는 “귀무가설이 맞다고 했을 때, 귀무가설이 말이 될 확률”을 의미한다.
즉, p-value는 1종 오류를 범할 확률과 같은 의미를 갖는다.

📌 3) Precision

정밀도(Precision)란 모델이 True라고 분류한 것 중에서 실제 True인 것의 비율.

  • 정밀도와 재현율은 Positive dataset의 예측 성능에 좀 더 초점을 맞춘 평가 지표
  • 정밀도는 FP를 낮추는 데 초점을 맞춘다.
  • 예시) 사기 거래라고 판단한 거래 중 실제 사기 거래의 비율

# python code
from sklearn.metrics import precision_score
precision_score(y_test, y_pred)
  • Precision 이 낮다. == 참이 아닌데도 참이라고 한 것이 많다.
  • Precision이 지나치게 높다. == 참으로 예측한 경우가 필요 이상으로 적다.

아주 확실한 경우에만 참으로 예측하고 나머지를 전부 거짓으로 예측
FP = 0, Precision = 1
e.g. 전체 데이터가 10,000,000개, 참이 5,000,000개 인데 확실한 1개만 참으로 예측

예측한 것중에 정답의 비율은?

📌 4) Recall

재현율이란 실제 True인 것 중에서 모델이 True라고 예측한 것의 비율

  • TPR(true positive rate) 또는 민감도(sensitivity)라고도 한다.
  • FN을 낮추는 것에 초점을 맞춘다.
  • 예시) 실제 사기 거래 중에서 실제 사기 거래라고 예측한 거래의 비율

# python code
from sklearn.metrics import recall_score
recall_score(df.y, pred)

찾아야 할 것중에 실제로 찾은 비율은?

  • Recall 이 낮다. == 참인데 못 찾은 것이 많다.
  • Recall이 지나치게 높다. == 참으로 예측한 경우가 필요 이상으로 많다.
    모든 예측을 참으로 하면 FN = 0, Recall = 1, 예측 성능과 상관 없이 Recall이 높게 나올 수 있다.

📌 5) F1 score

F1 score는 Precision과 Recall의 조화평균

  • F1 score는 데이터 label이 불균형 구조일 때, 모델의 성능을 정확하게 평가할 수 있다.
  • 성능을 하나의 숫자로 표현할 수 있다.
  • 낮은 값에 더 많은 가중치를 부여한다.

# python code
from sklearn.metrics import f1_score

📌 6) ROC(Receiver Operating Characteristic) curve

  • 여러 임계값들을 기준으로 Recall-Fallout의 변화를 시각화 한 것
  • 다양한 임계값에 대한 이진분류기의 성능을 한번에 표시한 것
  • Fallout은 실제 False인 data 중에서 모델이 True로 분류한, 그리고 Recall은 실제 True인 data 중에서 모델이 True로 분류한 비율을 나타낸 지표로써, 이 두 지표를 각각 x, y의 축으로 놓고 그려지는 그래프를 해석

  • curve가 왼쪽 위 모서리에 가까울수록 모델의 성능이 좋다고 평가
  • 즉, Recall이 크고 Fall-out이 작은 모형이 좋은 모형
  • y=x 그래프보다 상단에 위치해야 어느 정도 성능이 있음
  • ROC curve는 그래프이기 때문에 명확한 수치로써 비교하기가 어렵다.
# python code
from sklearn.metrics import roc_curve

📌 7) AUC(Area Under Curve)

  • ROC curve는 그래프이기 때문에 명확한 수치로써 비교하기가 어렵습니다. 따라서 그래프 아래의 면적값을 이용합니다. 이것이 바로 AUC(Area Under Curve)입니다.
# python code
from sklearn.metrics import roc_auc_score

출처

profile
데이터 분석가가 되기 위한 기록 ✏️

0개의 댓글