[CellPin] Trouble Shooting (feat: Accuracy, Precision, Recall이...

[CellPin] Trouble Shooting (feat: Accuracy, Precision, Recall이...

728x90

6주간 진행되는 해커톤3에서 4주차 째 모델 선정까지 끝나고 Flask에서 웹페이지를 만들기 중반부에 접어들었을 무렵 매우 큰 오류를 발견하게 된다. 바로 우리 모델이 대부분을 CPE라고 예측하고 있었던 것... 더 큰 문제는 이렇게 되었을 경우 Accuracy나 다른 값들이 낮아야 하지만 우리 모델은 매우 높았고 가장 큰 문제는 Accuracy, Precision, Recall 값이 0.9154로 모두 동일했다. 확실하게 문제가 있다고 느꼈고 하나하나 파헤쳐가기 시작했다.

Accuracy, Precision, Recall 값이 동일한 경우 ?

Accuracy, Precision, Recall의 의미를 알기 위해서는 confusion matrix를 알아야 한다.

Predicted Class (예측) Positive Negative Actual Class (실제) Positive True Positive (TP)

정답을 정답으로 예측 False Negative (FN)

정답을 오답으로 예측 Negative False Positive (FP)

오답을 정답으로 예측 True Negative (TN)

오답을 오답으로 예측

이해하기 쉽게

앞에 T가 붙으면 예측이 맞은 것, F가 붙으면 예측이 틀린 것

뒤에 P가 붙으면 정답으로 예측, N이 붙으면 오답으로 예측

이제 Accuracy, Precision, Recall이 무엇인지 알아보자.

$ Accuracy = \frac{TP + TN}{TP + FN + FP + TN} $

$ Precision = \frac{TP}{TP + FP} $

$ Recall = \frac{TP}{TP + FN} $

여기서 Accuracy, Precision, Recall 이 0과 1이 아닌 이 사이의 값을 가진다?!

1. FP 와 FN이 같아야 한다.

Precision = Recall에서 양변에 $TP(TP + FP)(TP + FN)$을 곱해주면 $TP + FP = TP + FN$이 되어 $FP = FN$이 된다.

2. TN과 TF가 같아야 한다.

Accuracy에 FP = FN임을 이용하여 나타내주면$ Accuracy = \frac{TP + TN}{TP + 2FN + TN} $

Accuracy = Recall에서 양변에 $(TP + TN + 2FN)(TP + FN)$을 곱해주면

$ \frac{TP + TN}{TP + 2FN + TN} = \frac{TP}{TP + FN}$

$ TP^2 + TN*TP + TP*FN + TN*FN = TP^2 + TP*TN + 2TP*FN$

$TN = TF$

모델로 Positive data만 예측해보고 Negative data만 예측해보기

1. 모델로 positive data만 예측해보기

결과: 117개 모두 Positive로 예측하였다

2. 모델로 negative data만 예측해보기

결과: 143개 중 22개를 Positive로 예측하고 나머지는 Negative로 예측하였다.

3. 이때의 confusion matrix와 Accuracy, Precision, Recall 구하기

Predicted Class (예측) Positive Negative Actual Class (실제) Positive True Positive (TP)

정답을 정답으로 예측

117 False Negative (FN)

정답을 오답으로 예측

0 Negative False Positive (FP)

오답을 정답으로 예측

22 True Negative (TN)

오답을 오답으로 예측

121

$ Accuracy = \frac{TP + TN}{TP + FN + FP + TN} = \frac{117 + 121}{117 + 22 + 121} = 0.9154$

$ Precision = \frac{TP}{TP + FP} = \frac{117}{117 + 22} = 0.8417$

$ Recall = \frac{TP}{TP + FN} = \frac{117}{117} = 1$

즉, 모든 값이 다르게 나와야 하지만 Accuracy 값으로 Precision과 Recall값이 대체되었다. 무슨 일일까?

728x90

from http://biology-statistics-programming.tistory.com/104 by ccl(A) rewrite - 2021-06-03 14:00:19