답변:
정밀도 (일명 양의 예측 값 PPV) 및 리콜 (일명 감도)의 정의를 설명하면 다른 클래스와 독립적으로 한 클래스 와 관련이 있음을 알 수 있습니다.
리콜 또는 senstitivity가 제대로 클래스에 속하는 것으로 확인 된 경우의 비율이다 C 진정한 클래스에 속하는 모든 경우들 다 .
(실제로 " c "에 속하는 경우가 있는데 이것을 정확하게 예측할 확률은 얼마입니까?)
정밀도 또는 양의 예측 값 PPV 는 분류자가 클래스 c에 속한다고 주장하는 모든 사례 중에서 클래스 c에 속하는 것으로 올바르게 식별 된 사례의 비율입니다 .
다시 말해, c의 클래스에 속하는 것으로 예측 된 경우 중 어느 부분이 실제로 c 클래스에 속하는가 ? (예측 " c "를 주면 정확할 확률은 얼마입니까?)
이 경우의 음의 예측값 NPV 는 클래스 c 에 속하지 않는 것으로 예측 되는데,이 분수는 실제로 클래스 c에 속하지 않는 것 입니까? ( " c 가 아닌"예측을 주면, 정확할 확률은 얼마입니까?)
따라서 각 클래스에 대한 정밀도를 계산하고 불러올 수 있습니다. 다중 클래스 혼동 테이블의 경우 대각선 요소를 각각 행과 열 합계로 나눈 값입니다.
단순히 결과를 원한다면 도구에 대해 너무 많이 생각하지 말고 도구를 사용하는 것이 좋습니다. 파이썬에서 어떻게 할 수 있습니까?
import pandas as pd
from sklearn.metrics import classification_report
results = pd.DataFrame(
[[1, 1],
[1, 2],
[1, 3],
[2, 1],
[2, 2],
[2, 3],
[3, 1],
[3, 2],
[3, 3]], columns=['Expected', 'Predicted'])
print(results)
print()
print(classification_report(results['Expected'], results['Predicted']))
다음과 같은 결과를 얻으려면
Expected Predicted
0 1 1
1 1 2
2 1 3
3 2 1
4 2 2
5 2 3
6 3 1
7 3 2
8 3 3
precision recall f1-score support
1 0.33 0.33 0.33 3
2 0.33 0.33 0.33 3
3 0.33 0.33 0.33 3
avg / total 0.33 0.33 0.33 9
다음은 클래스 레이블이 A, B 및 C 인 것으로 가정하는 다중 클래스 혼동 매트릭스의 예입니다.
A / P A B C 합계
A 10 34 17
B 2 12 6 20
C 6 3 9 18
합계 18 18 19 55
이제 Precision과 Recall에 대한 세 가지 값을 각각 계산하고이를 Pa, Pb 및 Pc라고합니다. 유사하게 Ra, Rb, Rc.
우리는 Precision = TP / (TP + FP)를 알고 있으므로 Pa의 경우 true positive는 A, 즉 10, 해당 열의 나머지 두 셀 (B 또는 C)에 상관없이 F로 정의됩니다. False Positive입니다. 그래서
Pa = 10/18 = 0.55 Ra = 10/17 = 0.59
이제 클래스 B의 정밀도와 리콜은 Pb와 Rb입니다. 클래스 B의 경우 참 양성은 실제 B가 B로 예측됩니다. 즉, 값 12를 포함하는 셀이며 해당 열의 나머지 두 셀은 False Positive입니다.
Pb = 12/18 = 0.67 Rb = 12/20 = 0.6
유사하게 Pc = 9/19 = 0.47 Rc = 9/18 = 0.5
분류기의 전체 성능은 평균 정밀도 및 평균 리콜에 의해 결정됩니다. 이를 위해 각 클래스의 정밀도 값에 해당 클래스의 실제 인스턴스 수를 곱한 다음 추가하고 총 인스턴스 수로 나눕니다. 처럼 ,
평균 정밀도 = (0.55 * 17 + 0.67 * 20 + 0.47 * 18) / 55 = 31.21 / 55 = 0.57 평균 리콜 = (0.59 * 17 + 0.6 * 20 + 0.5 * 18) / 55 = 31.03 / 55 = 0.56
나는 그것이 도움이되기를 바랍니다