Macro F1 Score의 설명과 샘플코드

2023.04.09 16:49 4,346 조회

Macro F1 Score는 다중 클래스 분류 문제에서 모델의 성능을 평가하는 데 사용되는 지표 중 하나입니다.

Macro F1 Score는 각 클래스별로 계산된 F1 Score의 평균을 구하여 모델의 전체 성능을 평가합니다.

F1 Score는 Precision과 Recall의 조화 평균으로 계산되며, 모델이 클래스 불균형 문제를 얼마나 잘 처리하는지 측정하는 데 도움이 됩니다.

Macro F1 Score는 다음과 같은 과정으로 계산됩니다.

  1. 각 클래스에 대해 Precision과 Recall을 계산합니다.
  2. 각 클래스에 대해 F1 Score를 계산합니다. F1 Score = $2 * \frac{Precision * Recall}{Precision + Recall}$
  3. 모든 클래스에 대한 F1 Score의 평균을 구합니다.

다음은 Macro F1 Score를 계산하는 간단한 Python 코드 예제입니다


import numpy as np
from sklearn.metrics import f1_score


def macro_f1_score(y_true, y_pred, n_classes):
    f1_scores = []
    for c in range(n_classes):
        y_true_c = (y_true == c)
        y_pred_c = (y_pred == c)
        f1_c = f1_score(y_true_c, y_pred_c)
        f1_scores.append(f1_c)
    return np.mean(f1_scores)


# 샘플 데이터
y_true = np.array([0, 1, 2, 0, 1, 2, 0, 1, 2])
y_pred = np.array([0, 1, 1, 0, 1, 2, 0, 1, 1])


# Macro F1 Score 계산
n_classes = 3
macro_f1 = macro_f1_score(y_true, y_pred, n_classes)
print("Macro F1 Score:", macro_f1)


이 코드에서 macro_f1_score 함수는 실제 레이블과 예측 레이블, 그리고 클래스의 개수를 인자로 받아 Macro F1 Score를 계산합니다.

이 예제에서는 세 개의 클래스가 있는 다중 클래스 분류 문제를 가정하고 있으며, Macro F1 Score 값이 출력됩니다.

학생들이 Macro F1 Score를 이해하고 사용하는 방법을 배우면, 다중 클래스 분류 문제에서 모델의 성능을 평가하고 개선하는 데 도움이 됩니다.

또한, 다양한 평가 지표와 손실 함수에 대한 이해를 기반으로, 더 복잡한 인공지능 문제에 대처할 수 있는 능력을 키울 수 있습니다.

이러한 이해를 바탕으로 학생들은 인공지능 분야에서 더 많은 성과를 이룰 수 있을 것입니다.