1. Recall (재현율)
- Recall은 실제 True인 것 중에서 모델이 True라고 예측한 것의 비율
Recall이 중요한 이유
- 2종 오류일 때 위험 요소가 커지는 경우를 대비하기 위해서
Scikit-learn
- 하이퍼 파라미터 “average”
- None : 각 class마다 recall 점수가 반환됨
- binary : 이진분류에서만 사용됨
- micro : 총 TP, FN, FP를 이용해 스코어를 계산
- macro / weighted / samples
from sklearn.metrics import recall_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
recall_score(y_true, y_pred, average='macro')
2. Precision (정밀도)
- 모델이 True 라고 예측하였을 때 실제도 True인 비율
- 예측이 1일 때를 기준으로 확률을 보는 것
- 일어나지 않은 일을 일어났다고 판단하는 것을 오류로 간주
Precision이 중요한 이유
- 1종 오류 발생 시 업무에 지장을 주기 때문에 precision을 기준으로 오차를 분석해야 함
3. Recall & Precision Trade off
- 정밀도와 재현율은 상호보완적인 평가지표이다. 한쪽이 높아지면 한쪽은 낮아지는 관계를 가지고 있다.
- 임계값 조정을 통해 재현율과 정밀도 중 어느 것을 강조할지 정할 수 있다.
4. F1-score
- Precision과 Recall의 조화평균
- 두 지표를 평균값을 통해 하나의 값으로 나타내는 방법
F1-score는 언제 사용하는가?
- 주로 분류 클래스 간의 데이터가 불균형이 심각할때
- 정밀도와 재현율은 둘 중 하나만 채용해서는 예측 성능 평가 지표로 불완전하기 때문에
- 정확도의 경우, 데이터 분류 클래스가 균일하지 못하면 머신러닝 성능을 제대로 나타낼 수 없기 때문에
from sklearn.metrics import f1_score
f1 = f1_score(y_test, y_pred)
5. Curve
1) PR curve(Precision Recall curve)
- x축이 Recall, y축이 Precision인 곡선을 의미
- 곡선 아래 면적 (AUC, area under curve) 가 1에 가까울수록 정확도가 높다고 볼 수 있음
- Deep learning classification 성능 평가로 활용되기도 하며, 임계값에 따라 달라지는
- precision과 recall값의 변화를 곡선으로 표현한 것
# PR curve 라이브러리 불러오기
from sklearn.metrics import precision_recall_curve
2) ROC curve (Receiver operating characteristic curve) & AUC
- ROC curve와 AUC는 서로 동일하다고 볼 수 있지만 표현하는 방식에 차이가 있다.
- ROC curve는 x축을 FPR지표, y축을 TPR지표로 하는 그래프로 표현하는 방식
- FPR (False Positive Rate) = TN / (FP + TN)
- TPR (True Positivie Rate) = TP / (FN + TP)
- AUC는 이 ROC curve를 점수로 환산한 방식
- 값이 1에 가까울수록 좋은 값이다.
- 값이 0에 가까우면 최악의 값
- 값이 0.5이면 분류능력이 전혀없다는 뜻
# roc_curve 라이브러리 불러오기
from sklearn.metrics import roc_curve