ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 58일차 - 파이썬 머신러닝(4)
    AI 솔루션 개발자과정(Java, Python) 2022. 12. 28. 16:18

    F1 스코어

    F1 스코어는 정밀도와 재현율을 결합한 지표이다.

    F1 스코어는 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가진다.

     

    F1 스코어의 공식은 다음과 같다.

    F1 스코어 = 2 * { (정밀도 * 재현율) / (정밀도 + 재현율)}

     

    A 예측모델의 경우 정밀도가 0.9, 재현율이 0.1로 극단적인 차이가 나고,

    B 예측모델은 정밀도가 0.5, 재현율이 0.5로 큰 차이가 없다면 A예측모델의 F1스코어는 0.18이고, B 예측모델의 F1 스코어는 0.5로 B 모델이 A모델에 비해 매우 우수한 F1 스코어를 가지게 된다.

     

     

    사이킷런은 F1 스코어를 구하기 위해 f1_score()라는 API를 제공한다.

     

     

     

    ROC 곡선과 AUC

    ROC 곡선과 이에 기반한 AUC 스코어는 이진 분류의 예측 성능 측정에서 중요하게 사용되는 지표이다.

    ROC(Receiver Operation Characteristic Curve) 곡선은 우리말로 수신자 판단 곡선으로 불린다.

     

    2차대전 때 통신 장비 성능 평가를 위해 고안된 수치이다.

     

    ROC 곡선이란 FPR의 변화에 따른 TPR의 변화를 나타낸 곡선이다.

    • FPR : 실제값이 네거티브인 건수 중 포지티브를 예측했던 비율 (FP / (FP + TN))
    • TPR : 실제값이 포지티브인 건수 중 포지티브를 예측했던 비율 (TP / (FN + TP))

    ROC 곡선은 FPR을 0부터 1까지 변경하면서 TPR의 변화 값을 구한다.

    이 곡선은 가운데 정비례(y=x) 선과 거리가 멀수록 성능이 좋은 것으로 평가한다.

     

    위의 두 비율은 임곗값과 밀접한 관계가 있다.

    인곗값이 1에 가까워질 수록 FPR은 0에 가까워진다.

    반대로 인곗값이 0에 가까워질 수록 FPR은 1에 가까워진다.

     

     

    사이킷런은 ROC 곡선을 구하기 위해 roc_curve() API를 제공한다.

    사용법은 precision_recall_curve() API와 유사하다.

    단지 반환값이 FPR, TPR, 임곗값으로 구성되어 있을 뿐이다.

     

    일반적으로 ROC 곡선 자체는 FPR과 TPR의 변화 값을 보는 데 이용하며 분류의 성능 지표로 사용되는 것은 ROC 곡선 면적에 기반한 AUC 값으로 결정한다.

    AUC값은 ROC 곡선 밑의 면적을 구한 것으로서 일반적으로 1에 가까울수록 좋은 수치이다.

     

    AUC 수치가 커지려면 FPR이 작은 상태에서 얼마나 큰 TPR을 얻을 수 있느냐가 관건이다.

    가운데 직선에서 멀어지고 왼쪽 상단 모서리로 가파르게 곡선이 이동할수록 직사각형에 가까운 곡선이 되어 면적인 1에 가까워지는 좋은 ROC AUC 성능 수치를 얻게 된다.

     

    가운데 대각선 직선은 랜덤 수준의 이진 분류 AUC 값으로 0.5이다.

    따라서 보통의 분류는 0.5 이상의 AUC값을 가진다.

     

     

     

     

Designed by Tistory.