Confusion matrix(혼동 행렬)?
- 모델링 성과를 평가하는 지표 중 하나
- (당연하지만) 분류에 한정되어 사용
- 여기서 Actual은 실제 값을 뜻하며, Predicted는 예측한 결과물을 뜻한다.
- 즉, TP(True Positive)와 TN(True Negative)가 높을수록 좋은 성능을 보여준다
Precision
- TP / TP+FP
- 즉, 내가 예측한 값 중에서 정답이 있을 경우(1에 가까울수록 좋다)
Recall(= sensitivity 민감도)
- TP / TP+FN
- 즉, 실제 1인 값 중에서 1이라고 예측한 것이 있을 경우(1에 가까울수록 좋다)
Accuracy
- TP + TN / TP+FP + TN + FN
- 전체 경우의 수 중에서 정답으로 분류한 비율(1에 가까울수록 좋다)
F1 Score?
- 왜 사용하는가? --> Precisoin 과 Recall의 밸런스를 고려하여 정확도 측정
- Precison과 Recall이 한쪽만 높게 될 경우 문제가 된다.
- 하지만 특별한 상황의 경우 두 지표중 한쪽에 weight 를 두고 평가하게 된다. 아래의 예시 참고
Precision vs Recall?
- 만약 탐정이 "도둑"을 예측한다고 해보자.
- 이 때, Precision이 30%(== 탐정이 "도둑"이라고 예측한것 중, 진짜 도둑인 것의 비율)은 용납할 수 있다.
- 하지만, Recall이 30%라면(진짜 도둑들중에서 탐정이 도둑이라고 예측한 것의 비율), 이 부분은 용납되기 어렵다.
- 안타깝게도, precision과 recall은 일종의 trade-off 관계를 가지게 되어, precision이 높으면 recall이 낮고.. 하는 관계를 가진다.
- 그림에서 볼 수 있는 것처럼, recall은 우하향하게 되면 끊임없이 낮아지고, 상승하게 되면 꾸준히 완만하게 상승한다
- 하지만, Precision은 꾸준히 상승하지만 "일시적으로" 낮아질 수 있다.
'데이터분석 > with Python' 카테고리의 다른 글
Voting classifier를 통한 이진분류 모델 구현 (0) | 2019.02.04 |
---|---|
[Python] seaborn을 사용한 데이터 시각화 (2) (0) | 2018.08.19 |
[Python] seaborn을 사용한 데이터 시각화 (1) (0) | 2018.08.19 |
[Python] fbprophet를 사용한 시계열 데이터 예측 (0) | 2018.07.29 |
Batch, Mini-Batch, SGD 정의와 설명 및 예시 (5) | 2018.07.22 |