[ISLR] 4. 분류모델의 성과지표(Performance Metric)

2023. 3. 31. 17:31·AI/Machine Learning

저번 포스팅까지 분류기법에 적용할 수 있는 로지스틱회귀, LDA, QDA에 대해 알아보았는데요. 이번시간에는 분류 모델의 성능을 측정하는 방법에 대해 알아보겠습니다.

 

1. 혼동행렬(Confustion Matrix)

로지스틱회귀와 같이 범주 2개인 반응변수를 분류하는 이진 분류기는 두 가지의 오류를 범할 수 있습니다. 실제로는 Positive(양성, 성공)인데 분류기는 이를 Negative(음성, 실패)라고 분류하거나, 실제로는 Negative인데 분류기는 Positive라고 분류할 수 있겠죠.

일반적으로는 두가지 유형의 오류가 발생하는지에 관심이 있으며 이러한 정보를 나타내기 위해 혼동행렬(Confusion Matrix)를 사용합니다. 아래 이미지와 같이 실제 상태와 모델이 분류한 상태를 카운트하며 R에서는 yardstick::conf_mat 함수를 통해 혼동행렬을 생성할 수 있습니다.

 

Confusion Matrix

 

 

2. 성과지표(Performace Metric)

위와 같이 혼동행렬을 만들고 나면 모델의 성과를 측정하는 정확도, 민감도, 특이도와 같은 여러가지 성과지표를 구할 수 있습니다.

성과지표를 구하는 여러 패키지가 있지만 Tidy Modeling과의 연결성을 생각해서 Yardstick 패키지를 사용한 함수를 소개합니다.

  • 정확도(Accuracy) : 분류기가 제대로 분류했는지를 나타내는 지표
    • Accuracy = $\frac{TN+TP}{TN+TP+FN+FP}$
    • 오분류율(Error Rate) : $1-Accuracy$
    • yardstick::accuracy(data, truth, estimate)
  • 민감도(Sensitivity) : 실제 Positive인데 분류기가 Positive로 예측 할 확률
    • Sensitivity =  $\frac{TP}{TP+FN}$
    • 재현율(Recall)과 민감도(Sensitivity)는 동일합니다.
    • yardstick::sens(data, truth, estimate) / yardstick::recall(data, truth, estimate) / sensitivity
  • 특이도(Specificity) : 실제 Negative인데 분류기가 Negative로 예측 할 확률
    • Specificity = $\frac{TN}{TN+FP}$
    • yardstick::spec(data, truth, estimate) / specificity
  • 정밀도(Precision) :  분류기가 Positive로 예측했을 때, 실제로 Positive일 확률
    • Precision = $\frac{TP}{TP+FP}$
    • yardstick::precision(data, truth, estimate)
  • F1 Score : 정밀도와 민감도의 조화평균로 $\beta = 1$인 F-value
    • F1 Sore = $\frac{2*Precision*Recall}{Precision+Recall}$
    • yardstick::f_meas(data, truth, estimate, beta=1) (정확하게는 F-value를 구하는 함수입니다. )
  • Balance Accuracy : 민감도와 특이도의 평균으로 yardstick::bal_accuracy 함수 사용
  • Brier Score : $\frac{1}{n}\sum_{i=1}^{n}(y_i - f(y))^2$의 값으로 실제값과 추정된 확률의 차이 제곱의 평균
    • 0에 가까울수록  모델이 정확함을 의미하고 1에 가까울수록 모델이 부정확함을 의미함
    • yardstick::brier_class(data, truth, estimate)
    • 참고 : https://library.virginia.edu/data/articles/a-brief-on-brier-scores

 

 

3. ROC-Curve (ROC곡선)

이진 분류기의 경우 일반적으로 $\theta=0.5$로 주어졌을 때, $P(Y=k|X=x)>\theta$를 만족하면 X=x인 관측치의 반응변수를 k로 할당하게 되는데 사후확률에 대한 임계치(Threshold)를 0.5에서 다른 값으로 변경하면 민감도 및 특이도의 수치가 변화하게 됩니다.

임계치가 변함에 따라 달라지는 특이도와 민감도를 활용한 ROC-Curve를 그릴 수 있는데 x축을 1-Specificity, y축을 Sensitivity로 설정하면 곡선을 그리는 그래프를 얻을 수 있습니다. 이때, 모든 임계치에 대한 요약된 분류기의 전체적 성능은 ROC 곡선 아래의 면적인 AUC(Area Under ROC)에 의해 주어지며 1에 가까울수록 모델의 성능이 좋다고 말할 수 있습니다. 

  • yardstick::roc_curve(data, truth, ...)를 사용해 임계치에 따른 민감도와 특이도를 포함하는 데이터프레임 반환
  • yardstick::roc_auc(data, truth, ...)를 사용해 AUC 값을 구할 수 있음

 

참고로 ROC-Curve와 유사하게 PR-Curve를 그릴 수 있는데, (Precision, Recall)를 축으로한 곡선을 얻을 수 있습니다.

  • yardstick::pr_curve(data, truth, ...)를 통해 임계치에 따른 Precision과 Recall을 포함한 데이터프레임을 반환
  • Average Precision : PR-Curve의 아래 면적을 나타내며 yardstick::average_precision를 통해 구할 수 있음

 

 

4. Summary

 

 

저작자표시 비영리 변경금지 (새창열림)

'AI > Machine Learning' 카테고리의 다른 글

[ISLR] 5. 교차검증(Cross-Validation)  (0) 2023.04.04
[ISLR] 4. 분류(Classifiction) With R Using Tidymodels  (0) 2023.03.31
[ISLR] 4. 분류(Classification) - 이차선형판별분석(QDA)  (0) 2023.03.31
[ISLR] 4.분류(Classification) - 선형판별분석(LDA)  (0) 2023.03.30
[ISLR] 4. 분류(Classification) - 로지스틱 회귀분석(Logistic Regression)  (0) 2023.03.28
'AI/Machine Learning' 카테고리의 다른 글
  • [ISLR] 5. 교차검증(Cross-Validation)
  • [ISLR] 4. 분류(Classifiction) With R Using Tidymodels
  • [ISLR] 4. 분류(Classification) - 이차선형판별분석(QDA)
  • [ISLR] 4.분류(Classification) - 선형판별분석(LDA)
임파카
임파카
[ML & Statistics] 모바일 버전에서 수식 오류가 있어 PC 환경에서 접속하는 것을 권장합니다.
  • 임파카
    무기의 스탯(Stat)
    임파카
  • 전체
    오늘
    어제
    • Study (149)
      • Data Science (44)
        • Modeling (18)
        • Manipulation (21)
        • Visualization (4)
      • Statistics (59)
        • Mathmetical Statistics (53)
        • Categorical DA (1)
      • Web Programming (17)
      • AI (26)
        • Machine Learning (16)
        • Deep Learning (10)
      • 활동 및 프로젝트 (3)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.5
임파카
[ISLR] 4. 분류모델의 성과지표(Performance Metric)
상단으로

티스토리툴바