AIFFEL 노드에서 오차행렬이 나왔었는데 확실하게 이해가 가지 않아서 정리를 한번 해보려고 한다.
정리하고 여러번 보다보면 한번에는 이해하지 못하더라도 확실하게 이해는 할 수 있겠지..싶은 마음으로 :D
Test set에 대한 분류기의 성능을 평가하는 행렬로 혼동 행렬이라고도 한다.
행
: 실제 클래스
열
: 예측한 클래스
예측된 클래스 값과 실제 클래스 값을 기준으로 TRUE, FALSE로 분류
TN(True Negatives), FP(False Positives), FN(False Negatives), TP(True Positives) 로 분류하여 모델 예측 성능의 오류 발생 확인
[https://kimdingko-world.tistory.com/173]
TN: 예측값 Negative, 실제 값 Negative → 틀린 걸 틀렸다고 !
FP: 예측값 Positive, 실제 값 Negative → 틀린 걸 맞았다고 ! → 문제!!
FN: 예측값 Negative, 실제 값 Positive → 맞은 걸 틀렸다고 ! → 문제!!
TP: 예측값 Positive, 실제 값 Positive → 맞은 걸 맞았다고 !
오차 행렬을 통한 성능 지표는 아래와 같다.
Accuracy(정확도)
Sensitivity(민감도), Recall(재현율)
Precision(정밀도)
Specificity(특이도)
AUC
F1-score
예측값 중 정확한 예측을 어느정도로 했는지 확인하는 지표.
높을수록 예측 정확도가 높다.
하지만, 데이터에 따라 Accuracy만으로 모델의 성능을 판단하기에 어려울 수 있다.
그렇다면 어떠한 경우에 accuracy 만을 사용하고, 다른 지표를 사용해야할까?
그 기준은 데이터의 균형 정도를 기준으로 한다.
만약 사용한 데이터가 불균형 하다면 accuracy만이 아니 다른 지표를 함께 고려하여 성능을 판단해야한다.
균형 데이터(balanced) → accuracy를 평가 척도로 사용해도 괜찮음
불균형 데이터(imbalanced) → accuracy 만으로 성능 판단 X, 다른 지표도 함께 볼 것
Recall 값으로, 실제 Positie를 얼마나 잘 예측했는지를 나타내는 지표
긍정으로 예측한 것 중 실제로 맞춘 비율
실제 Negative를 얼마나 잘 예측 했는지 나타내는 지표
불균형 분류 문제에 평가 척도로 많이 사용된다.
Sensitivity와 Precision을 이용하여 조화평균을 구하는 것으로 평가 척도 구성
불균형 데이터를 조화평균 하는 이유
큰 값의 크기에 대한 가중치 낮춤
작은 값에 가중치를 더 맞춤
위 과정을 통해 크기 차이를 상대적으로 상쇄
이 글은 아래 링크의 자료들을 참고하여 작성하였습니다.
분류 성능 - 오차 행렬(confusion matrix)과 정밀도(precision), 재현율(recall), F1 score(F-measure)