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
분류와 회귀는 위와 같이 각각 다른 평가 방법을 가지고 있고, 오늘은 분류 평가 지표에 대해 알아 볼 예정이다.
정확도(Accuracy)는 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 단순한 지표.
# python code
from sklearn.metrics import accuracy_score
accuracy_score(df.y, pred)
예측이 정답과 얼마나 정확한가?
Accuracy가 높다고 해서 신용하기 어렵다. 희소한 데이터를 정확하게 예측하는 것이, 전체 데이터에 대한 정확도보다 중요할 경우가 있다.
현실에서 마주치는 많은 데이터들이 불균형 데이터이기 때문에 정확도 외에 다른 측정지표가 필요하다.
Confusion Matrix는 분류 문제에서 모델의 예측값()과 실제 데이터의 값()을 비교하여 어떤 오류가 발생하고 있는지를 알아보고자 하는 지표.
💡 현실에서는 실제값이 어떤지 정확히 알 수 없는 경우가 많기 때문에, 예측값을 기준으로 알파벳을 이야기한다.
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종 오류
== False Alarm
“귀무가설이 참인데 잘못 판단해 기각 해버리는 오류”
e.g. 아파트에 불이 나지 않았음에도 화재 경보 알람이 울린 경우
2종 오류
== Miss
“귀무가설을 거짓인데도 기각하지 않아서 생기는 오류”
e.g. 아파트에 불이 났음에도 화재경보 알람이 울리지 않고 그대로 지나간 경우
👀 p-value
p-value는 “귀무가설이 맞다고 했을 때, 귀무가설이 말이 될 확률”을 의미한다.
즉, p-value는 1종 오류를 범할 확률과 같은 의미를 갖는다.
정밀도(Precision)란 모델이 True라고 분류한 것 중에서 실제 True인 것의 비율.
# python code
from sklearn.metrics import precision_score
precision_score(y_test, y_pred)
아주 확실한 경우에만 참으로 예측하고 나머지를 전부 거짓으로 예측
FP = 0, Precision = 1
e.g. 전체 데이터가 10,000,000개, 참이 5,000,000개 인데 확실한 1개만 참으로 예측
예측한 것중에 정답의 비율은?
재현율이란 실제 True인 것 중에서 모델이 True라고 예측한 것의 비율
# python code
from sklearn.metrics import recall_score
recall_score(df.y, pred)
찾아야 할 것중에 실제로 찾은 비율은?
F1 score는 Precision과 Recall의 조화평균
# python code
from sklearn.metrics import f1_score
# python code
from sklearn.metrics import roc_curve
# python code
from sklearn.metrics import roc_auc_score