Confusion Matrix
- 분류모델의 성능평가지표를 보여준다.
- sklearn.metrics.plot_confusion_matrix
- 데이터는 전 포스팅의 H1N1을 그대로 사용한다.
1 |
|
- 분류성능을 쉽게 확인할 수 있다.
- 가로축은 예측범주, 세로축은 실제범주이다.
(Table 마다 TP, TN, FP, FN의 위치가 다르기 때문에 축을 잘 봐야한다.)
Accuracy(정확도) 계산
1 |
|
그 외 평가지표
- 분류기의 정확한 성능을 판단하기 위해 정확도 외의 다른 평가지표를 같이 사용해야 한다.
- 정확도(Accuracy) : 전체 범주를 모두 바르게 맞춘 경우를 전체 수로 나눈 값
- 정밀도(Precision) : Positive로 예측한 경우 중 올바르게 Positive를 맞춘 비율 (타입 1 에러 최소화)
- 재현율(Recall, Sensitivity) : 실제 Positive인 것 중 올바르게 Positive를 맞춘 것의 비율 (타입 2 에러 최소화)
- F1점수(F1 score) : 정밀도와 재현율의 조화평균(harmonic mean)
- 다루는 문제에 따라 정밀도와 재현율 중 어느 평가지표를 우선시 해야하는지 판단해야 한다.
- 초기 암진단 : Recall
- 넷플릭스 영화추천 : Precision
Sklearn 사용 정밀도, 재현율 확인
1 |
|
직접 계산
1 |
|
- Precision과 Recall은 상황에 따라 어느것을 중요하게 볼 지가 다르다.
- 암환자 진단 -> Recall이 중요하다(신경써야한다) -> Recall 값을 높여야한다 -> FN(암이 있는데 의사가 없다고 예측한 경우) 값을 최소화해야한다.
- 스팸메일 -> Precision이 중요하다 -> FP(좋은 메일인데 스팸메일이라고 예측한 경우) 값을 최소화해야한다.
정밀도, 재현율, 임계값(thresholds), 예측확률간 관계
시나리오
- 전체 인구의 70%가 코로나 항체를 갖고 있으면 ‘집단 면역’이 형성돼 코로나 유행을 멈출 수 있다.
- 양지면에서 지역주민들에게 계절독감에 대한 무료 접종을 준비하고 있다.
- 무료 접종의 설계를 잘 해 집단 면역을 생성하고자 한다.
- 양지면 인구는 14052명이다.
- 모두 항체가 없다고 가정했을 때 이들 중 70%가 백신을 접종한다면 집단 면역이 형성된다.
1 |
|
- 양지면에서는 무료백신 예산이 4500명에 한정되어 있다.
- 어떻게 하면 개인적으로 백신을 접종하지 않을 사람들 중 4500명을 예측하여 최대한 집단면역을 실현할 수 있을까?
- 우선 확보한 무료 백신을 앞으로 백신을 받을 가능성이 없어 보이는 사람들에게 우선 접종하고, 어차피 기존에 백신을 맞을 사람들은 본인이 접종하도록 유도해야 한다.
1 |
|
- 최대한 백신을 맞지 않을 사람을 골라 백신을 맞추어 주기 위해 임계값을 조정한다.
- 각 예측 범주에 대한 확률값을 제공한다. 즉 예측 범주와 함께 범주의 확률값을 함께 제공한다
- 주의사항 : 접종한다고 예측 결과가 나와도 다 같은 예측이 아니다. 접종에 대한 확률이 51% 이거나 99%이거나 모두 접종으로 예측하지만 51%인 경우는 틀릴 확률도 49%나 된다. 이 확률값을 사용해서 더 정밀하게 백신접종이 필요한 사람들을 타켓팅 한다.
1 |
|
- 임계값을 바꾸어가며 정밀도와 재현율의 변화 관찰한다.
- 임계값을 낮추어 백신을 접종하지 않을 확률이 높은 사람들을 더 정확하게 구하는 것이 도움이 된다.
- 임계값을 낮추면 Precision은 올라가지만 Recall은 떨어진다.
1 |
|
1 |
|
- 일부 주민들은 접종 확률이 낮음에도 접종한 사람들이다.
1 |
|
- 예측확률과 임계값을 잘 활용하면 필요한 범주의 정밀도나 재현율을 조정하여 최소한의 백신접종으로 최대한의 결과를 거둘 수 있다.
- 분류 문제에서 임계값을 잘 설정한다면 보다 효율적으로 문제를 해결할 수 있는데, 모든 임계값을 한눈에 보고 모델을 평가하는 방법은 ROC curve이다.
ROC, AUC (Receiver Operating Characteristic, Area Under the Curve)
- ROC curve와 AUC를 사용하면 분류문제에서 여러 임계값 설정에 대한 모델의 성능을 구할 수 있게 된다.
- ROC curve는 여러 임계값에 대해 TPR(True Positive Rate, recall)과 FPR(False Positive Rate) 그래프를 보여준다.
- Receiver operating characteristic
- Recall(재현율)
- Fall-out(위양성률)
- 재현율을 높이기 위해서는 Positive로 판단하는 임계값을 계속 낮추어 모두 Positive로 판단하게 만들면 된다. 하지만 이렇게 하면 동시에 Nagative이지만 Positive로 판단하는 위양성률도 같이 높아진다.
- 재현율은 최대화하고 위양성률은 최소화하는 임계값이 최적의 임계값이다.
- AUC는 ROC curve의 아래 면적을 말한다.
- 아래 면적은 학습이 잘될수록 1에 가깝게 된다. 안될수록 0.5에 가깝게 된다.
- 사이킷런 roc_curve는 임계값에 따른 TPR, FPR 수치를 자동으로 계산해준다.
1 |
|
1 |
|
1 |
|
1 |
|
- ROC curve는 이진분류문제에서 사용할 수 있다.
- 다중분류문제에서는 각 클래스를 이진클래스 분류문제로 변환(One vs ALL)하여 구할 수 있다.
- 3-class(A, B, C) 문제 -> A vs (B,C), B vs (A,C), C vs (A,B) 로 나누어 수행
- 분류문제에서 모델을 올바르게 평가하기 위해서는 정확도 외에도 정밀도, 재현율을 잘 이해하고 사용해야 한다.
- 특히 각 범주를 예측하는 기준이되는 임계값의 위치에 따라 정밀도나 재현율이 달라지기 때문에 문제의 상황에 따라 적절한 임계값을 선택할 필요성이 있다.
- 이진 분류문제에서는 ROC curve와 AUC 점수를 잘 활용하면 좋은 결과를 만들 수 있다.