코딜기

[Python/ML] 모델 평가(Model Evaluation) - F score(F1 score/Fβ score) 본문

ML & DL Process/Model Evaluation

[Python/ML] 모델 평가(Model Evaluation) - F score(F1 score/Fβ score)

코딜기 2022. 12. 21. 16:43
반응형

F score란 무엇일까요?

  • F score는 정밀도(precision)와 재현율(recall)의 조화평균으로 계산되는 지표입니다.
  • 가장 많이 쓰이는 지표로는 β = 1인 F1-score가 있습니다.
  • 정밀도(precision)와 재현율(recall), TP, FP, FN에 대한 정보는 여기에서 확인 가능합니다.

Fβ - score

Fβ-score 수식

  • Fβ-score는 정밀도와 재현율의 조화평균 식에서 계수 β에 따라 재현율에 가중치를 주어 조정한 지표입니다.

Python

from sklearn.metrics import fbeta_score

# 데이터 스플릿으로 y_valid와 모델 예측으로 y_pred를 구한 후 실행
# 모델 검정이 없다면 y_true값으로 y_valid 대체
fbeta = fbeta_score(y_valid, y_pred, average = 'macro', beta = 2)
print(fbeta)

대표적인 파라미터

  • average
    • binary : pos_label로 지정된 클래스에 대한 결과만 계산 (이진분류일 때만 사용 가능하고, average의 default값)
    • macro : 단순 평균 (클래스의 불균형을 고려하지 않음)
    • weighted : 각 클래스에 속하는 표본의 개수로 가중평균 (클래스의 불균형을 고려)
    • micro : TP, FN, FP의 수를 각각 카운트하여 전체적으로 메트릭 계산
    • samples : 각 인스턴스에 대한 메트릭을 계산하고 평균을 계산
  • beta : 재현율(recall)에 주어지는 가중치

F1 - score

F1-score 수식

  • β = 1인 score입니다.
  • F1-score는 분자에 TP값만 포함되는 것에서 알 수 있듯이 양성과 음성을 대칭으로 취급하지 않습니다.
  • 따라서 실제값과 예측값의 양성과 음성을 함께 바꾸면 F1-score나 그 행동이 바뀝니다.

Python

from sklearn.metrics import f1_score

# 데이터 스플릿으로 y_valid와 모델 예측으로 y_pred를 구한 후 실행
# 모델 검정이 없다면 y_true값으로 y_valid 대체
f1 = f1_score(y_valid, y_pred)
print(f1)

도메인에 따라 적절한 평가 지표를 선택해서 확인해야 합니다.

반응형
Comments