[머신러닝] Evaluation Metrics for Classification

Colacan·2022년 3월 8일
1

[머신러닝]

목록 보기
2/8

Confusion Matrix

  • 얼마나 많은 범주 or 클래스들이 정확하게 예측되고, 예측되지 않았는지 나열하는 간단한 방법

  • TP, TN, FP, FN 으로 이루어진 매트릭스
    1) TP- 잘 맞춰서 Positive(True,1)를 잡아냈다.
    2) TN -잘 맞춰서 Negative(False,0)을 잡아냈다.
    3) FP - 잘 못해서 Positive라고 예측 (원래는 Negative)
    4) FN - 잘 못해서 Negative라고 예측 (원래는 Positive)

  • plot_confusion_matrix를 통해 확인 가능 (가로 세로축 확인 필수)

  • class A와 class B를 구분하는 방법
    1) 그리드를 그린다.
    2) 세로축은 실제값, 가로축은 예측값을 의미
    3) 어떤 class를 긍정적, 부정적으로 판단했는지는 중요하지 않다.
    4) 행렬이 각 class에서 얼마나 올바르게 예측되었는지 알려줄 것이기 때문이다.
    5) 따라서 Confusion matrix는 실제값 class A가 B로 예측된 횟수를 알려준다. 그 반대도 마찬가지이다.

분류, 회귀의 성능측정

  • 문제유형에 따라서 적절한 성능측정이 필요하다

  • 분류는 올바르게 분류될 확률, 예측은 올바르게 예측될 확률을 의미한다. (따라서 성능측정방법을 다르게)

  • 분류 성능측정
    1) Simple Accuracy
    2) F-beta measure
    3) Precision
    4) ROC
    5) recall

  • 회귀 성능측정
    1) Sum of Squares Error
    2) Mean Absolute Error
    3) RMS Error

  • 분류의 경우 카테고리형, 회귀의 경우 수치형에 대해서 예측

  • Simple Accuracy : 올바르계 예측된 sample의 수 / 총 sample의 수
    1) 예측의 성공에만 초점을 맞추기에 이진분류에서 문제점이 생긴다.
    2) 옳은 것에 대한 예측을 기대하지만 답이 아닌 것에 초점이 맞춰진 학습에도 정확도가 높게 나타남

  • Preformance Measure : Precision, recall을 이용하여 Simple Accuracy의 위와 같은 문제를 개선

  • Precision과 recall이 1일 경우 이상적이라고 본다.

  • F-beta measure
    1) Preformance Measure은 시스템의 성능을 확인하는데 정확하지만 다른 system을 비교하려는 경우 성가실 수 있다.
    2) precision이 70% recall이 60% vs precision이 80% recall이 50%
    3) 어떤 것이 실제로 더 좋은 성능을 발휘하는 지 알 수 없다.
    4) 이와 같은 경우를 위해서 F-beta measure 을 사용한다.
    5) F-beta measure식에서 beta를 키우면 recall의 영향을 더 많이 받는다.
    6) F-beta measure를 통해서 recall 과 precision의 비율을 조정한 뒤 다른 system을 비교할 수 있다.

precision과 recall의 예

  • 암진단 초기단계에서는 암환자를 놓치면 안되기에 precision보다는 recall이 중요

  • 스팸메일의 경우에는 정말 spam인 메일만 보내야하기에 precision이 중요

  • 상황에 따라서 이 비율을 조정해야한다.

  • 암 검진 vs 스팸 분류
    1) 암 검진에서 주로 보아야할 지표
    암검진 결과가 양성 (1) -> 암에 걸린 것
    암검진 결과가 음성 (0) -> 암이 아닌 것
    암에 걸렸는데(Positive, 1) 암이 아니라고 (Negative, 0) 오진하면 문제
    2) 스팸분류에서는 FP를 보아야한다.
    스팸이면 1, 아니면 0으로 분류

  • 나이키신발 예시
    1) Precision의 예
    분류된 나이키신발 중에서 실제로 나이키신발은 몇 개인가? TP/(TP+FP)
    2) recall의 예
    실제 나이키신발 중 나이키신발로 분류되는 신발은 몇 개인가? TP/(TP+FN)
    3) 10000개의 신발 중 9990개의 신발이 나이키신발이 아니라고 simple accuracy로 분류할 경우
    TP =0, FN = 10, FP = 0, TN = 9990이 된다. (답이 아닌 것에 초점이 맞춰진 학습)
    Precision은 0/0으로 정의되지 않으며 테스트가 극도로 부정적이었다고 본다.
    recall도 0/0+10으로 0이 나온다.
    4) 10000개의 신발 중 10개의 신발이 나이키라고 분류할 경우 (답인 것에 초점이 맞춰진 학습)
    위와 같이 계산할 경우 Simple Accuracy는 0.1%
    Precision은 0.001, Recall은 1.0이다.

정확도, 정밀도, 재현율 차이

  • 정확도 : 전체 범주를 모두 바르게 맞춘 경우

  • 정밀도 : Positive로 예측한 경우중 올바르게 Positive를 맞춘 비율

  • 재현율 : 실제 Positive 중에서 올바르게 Positive를 맞춘 비율

  • F1 score : 정밀도와 재현율의 조화평균 (둘의 비중을 동일하게 고려)

  • classificaion_report를 통해서 각 class별로 정밀도, 재현율이 확인 가능하다.

  • accuracy만으로 평가하면 안되는가
    1) 데이터 불균형이 있으면 정확도를 신뢰할 수 없다.
    2) 맞았는지 틀렸는지보다는 진짜 문제를 해결하기 위한 예측이 잘 되었는지 안되었는지를 볼 수 있는 지표가 필요하다

  • 정밀도와 재현율
    1) 정밀도
    1로 예측한 경우 중 모델이 1을 잘 맞춘 것의 비율
    스팸 분류를 다룰 때 정밀도를 살펴봄
    2) 재현율
    진짜 1인 것들 중 모델이 1로 맞춘 것의 비율
    암 검진을 할 때 재현율을 살펴본다.
    3) 정밀도와 재현율은 트레이트오프 관계
    4) 임계값을 낮추면 P로 예측하는 것이 많아지고 N으로 예측하는 것은 줄어든다
    Recall은 증가하고 Precision은 낮아진다.
    5) f1_score(조화평균)
    Recall과 Precision의 조화평균
    베타가 1이다는 정밀도와 재현율의 가중치가 같음을 의미
    데이터 불균형이 있을 경우 개선할 수 있다.
    6) accuracy는 높아지는데 f1은 낮아질 경우?
    상황에 따라 다르겠지만 acc < f1의 경향이 많음

임계값, 예측확률

  • 예시
    1) 무작위로 무료백신을 접종한다
    2) 이중에는 자율접종한 사람도 포함될 수 있다
    3) 최대한 백신을 맞지 않을 사람을 골라 백신을 맞추기 위해 임계값을 조정해보자

  • 임계값, 예측확률 이용
    1) 기본적으로 모델은 임계값을 50%를 기준으로 범주 예측 (예측결과가 나와도 다 같은 예측이 아니다. 51%인 경우는 틀릴확률이 49%, 99%의 경우 틀릴확률이 1%이다.)
    2) predict_proba로 각 범주의 확률 값을 알 수 있다.
    3) 임계값을 바꾸면 평가지표가 변화한다.
    4) 임계값을 낮출시 백신접종을 안하는 사람들 (0인 사람들)을 더 정확하게 구함
    5) 예측확률을 이용하여 임계값을 낮춘 경우 집단 면역기준에 다다른다.
    6) 예측확률을 사용하지 않고 임계값 0.5이하에서 무작위로 접종한 경우 집단 면역기준에 다다르지 못한다.
    7) 예측확률과 임계값을 잘 활용하여 정밀도와 재현율이 조정, 최소한의 백신접종으로 최대한의 결과를 얻을 수 있다.

ROC,AUC

  • ROC와 AUC를 이용하여 최적의 임계값을 찾을 수 있다.

  • 재현율과 위양성률은 trade-off 관계에 있다.
    1) 재현율을 높이기위해 positive로 판단하는 임계값을 낮추면 positive로 예측
    2) 하지만 이 경우 negative이지만 positive로 판단하는 위양성률도 높아진다.

  • 재현율을 최대화하고 위양성률은 최소화하는 임계값이 최적의 임계값

  • AUC는 ROC curve의 아래면적을 의미
    1) 학습이 잘 될수록 면적이 1에 가깝다.
    2) 잘 안될수록 0.5에 가깝다.

  • ROC curve로 재현율(TPR)과 위양성률(FPR)을 임계값에 따라 구해준다.

  • ROC curve 그래프로 학습이 되었는지에 대해 판단이 가능하다.

  • 재현율에서 위양성률을 뺀 값이 최대가 된 지점을 threshold로 지정

  • roc_auc_score를 통해 AUC점수 계산가능 (높을수록 좋다)

  • ROC curve는 기본적으로 이진분류문제에서 이용

  • 다중분류문제에서는 각 클래스를 이진클래스 분류문제로 변환하면 가능
    1) 3-class(A, B, C) 문제
    2) A vs (B,C), B vs (A,C), C vs (A,B) 로 나누어 수행

  • ROC Curve
    1) 임계값에 따른 재현율(Recall)과 위양성률(Recall에서 F와 N을 반대로 계산)을 의미
    2) 재현율은 최대화 위양성률은 최소화 하는것이 목적
    3) ROC Curve가 좌상단에 밀접할 수록 좋은 모델

  • f-beta-score와 threshold의 차이점
    1) beta : 모델 성능을 평가 (train)
    2) threshold : 분류할 때 확률의 기준 (연구자가 직접 선택)

오늘의 참고자료

1) Making sense of the confusion matrix
https://youtu.be/8Oog7TXHvFY
2) Machine Learning tips and tricks cheatsheet
https://stanford.edu/~shervine/teaching/cs-229/cheatsheet-machine-learning-tips-and-tricks
3) Understanding AUC - ROC Curve
https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5#:~:text=for%20multiclass%20model%3F-,What%20is%20AUC%20%2D%20ROC%20Curve%3F,capable%20of%20distinguishing%20between%20classes.
4) ROC curves and Area Under the Curve explained
https://www.dataschool.io/roc-curves-and-auc-explained/
5) 3.3.2.14. Receiver operating characteristic (ROC)
https://scikit-learn.org/stable/modules/model_evaluation.html#receiver-operating-characteristic-roc
6) sklearn.metrics.roc_curve
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html
7) sklearn.metrics.roc_auc_score
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html

profile
For DE, DA / There is no royal road to learning

0개의 댓글