데이터 수학/이론

정밀도(Precision), 재현율(Recall), 정확도(Accuracy)

HicKee 2023. 2. 20. 10:49
성능 평가
인공지능은 데이터를 기반으로 모델을 만드는 데
모델 성능에 따라 데이터 분류에 대한 정확도가 달라짐
-> 성능측정 중요함

 (1) 혼동행렬(confusion matrix)과 (2) ROC 커브(curve) 
① TP(True Positive): 맞는 것을 맞다고 예측한 것

② TN(True Negative): 아닌 것을 틀리다고 예측한 것

③ FP(False Positive): 아닌 것을 맞다고 예측한 것

④ FN(False Negative): 맞는 것을 틀리다고 예측한 것
 

정밀도 (Precision)

모델이 True로 에측한 데이터중 싱제로 True인 데이터 수 

모델의 예측값이 얼마나 정확하게 예측이 되었는 지

암환자로 예측한 사람 중에 진짜 암환자로 결과가 나온 사람의 비율
 

재현율(recall)

실제 Ture 중에서 실제 True라고 예측한 거래의 비율

실제 값중에서 모델이 검출한 실제값의 비율

진짜 암환자 중에 진단 결과 암환자라고 나온 사람의 비율

실제 암환자들이 병원에 갔을때 암환자라고 예측될 확률
 

정확도(accuracy)

전체 샘플 중 맞게 예측한 샘플 수의 비율

전체 암환자 중에 암환자라고 나온 사람의 비율
 

F1 스코어

정밀도와 재현율을 조화 평균해서 하나의 수치로 나타낸 지표
 

혼동행렬

모델의 성능의 평가하기위 한 지표
 

[6]
 
0초
# 혼동행렬을 위한 sklearn 라이브러리 호출
import numpy as np
import sklearn.metrics as metrics

y = np.array([1,1,1,1,0,0]) # 0은 정상 1은 비정상
p = np.array([1,1,0,0,0,0]) #예측값

# sklearn 을 이용하여 정확도 정밀도 재현울 f1스코어를 계산함

print('정확도 :', metrics.accuracy_score(y,p))

# precision_score() 정밀도 계산
print('정밀도 : ',metrics.precision_score(y,p))
# recall_score() 재현율 계산
print('재현율 : ',metrics.recall_score(y,p))
# f1_score() F1 스코어 계산 
print('F1 스코어 : ',metrics.f1_score(y,p))

print(metrics.classification_report(y,p))
print(metrics.confusion_matrix(y,p))
 
정확도 : 0.6666666666666666
정밀도 :  1.0
재현율 :  0.5
F1 스코어 :  0.6666666666666666
              precision    recall  f1-score   support

           0       0.50      1.00      0.67         2
           1       1.00      0.50      0.67         4

    accuracy                           0.67         6
   macro avg       0.75      0.75      0.67         6
weighted avg       0.83      0.67      0.67         6

[[2 0]
 [2 2]]
 
 

혼동행렬의 단점

양끝은 정확한 진단이 가능 가운데는 판단이 불분명
-> 정확도가 떨어지게 된다
 

 

ROC 커브

축은 민감도(True Positive Rate, TPR)를 나타내고, 
x축은 특이도(False Positive Rate, FPR)

민감도
    맞는 것을 맞다고 예측한 것입니다
특이도
    틀린 것을 틀리다고 예측한 것입니다
AUC
    그래프의 아래 면적으로, 
    계산 결과를 수치화하여 성능을 간단히 비교할 수 있도록 합니다