🤔 Какие есть агрегации мультиклассовых метрик?



В задачах многоклассовой классификации (когда у нас больше двух классов) использование метрик, таких как точность (accuracy), полнота (recall), точность (precision) и F1-Score, требует применения агрегационных методов, чтобы получить общую оценку производительности модели. Рассмотрим основные способы агрегации мультиклассовых метрик:



🟠Макро-среднее (Macro-averaging)

Макро-среднее вычисляется как среднее значение метрик, рассчитанных отдельно для каждого класса. Оно придает одинаковый вес каждому классу, независимо от его частоты. \[ \text{Macro-Precision} = \frac{1}{N} \sum_{i=1}^{N} \text{Precision}_i \] Где \( N \) – число классов.



🟠Микро-среднее (Micro-averaging)

Микро-среднее вычисляется путем суммирования всех истинных положительных, ложных положительных и ложных отрицательных результатов для всех классов, а затем вычисления метрики. Это придает больший вес классам с большим числом примеров. \[ \text{Micro-Precision} = \frac{\sum_{i=1}^{N} TP_i}{\sum_{i=1}^{N} (TP_i + FP_i)} \]



🟠Взвешенное среднее (Weighted-averaging)

Взвешенное среднее учитывает частоту каждого класса. Метрика для каждого класса умножается на долю примеров этого класса, и затем все результаты суммируются. \[ \text{Weighted-Precision} = \sum_{i=1}^{N} w_i \cdot \text{Precision}_i \ Где \( w_i \) – доля примеров класса \( i \).



Рассмотрим, как использовать различные способы агрегации метрик для многоклассовой классификации на Python:

from sklearn.metrics import precision_score, recall_score, f1_score



# Пример истинных и предсказанных значений для многоклассовой задачи

y_true = [0, 1, 2, 2, 1, 0]

y_pred = [0, 2, 1, 2, 0, 1]



# Precision

macro_precision = precision_score(y_true, y_pred, average='macro')

micro_precision = precision_score(y_true, y_pred, average='micro')

weighted_precision = precision_score(y_true, y_pred, average='weighted')



print(f"Macro Precision: {macro_precision}")

print(f"Micro Precision: {micro_precision}")

print(f"Weighted Precision: {weighted_precision}")



# Recall

macro_recall = recall_score(y_true, y_pred, average='macro')

micro_recall = recall_score(y_true, y_pred, average='micro')

weighted_recall = recall_score(y_true, y_pred, average='weighted')



print(f"Macro Recall: {macro_recall}")

print(f"Micro Recall: {micro_recall}")

print(f"Weighted Recall: {weighted_recall}")



# F1-Score

macro_f1 = f1_score(y_true, y_pred, average='macro')

micro_f1 = f1_score(y_true, y_pred, average='micro')

weighted_f1 = f1_score(y_true, y_pred, average='weighted')



print(f"Macro F1-Score: {macro_f1}")

print(f"Micro F1-Score: {micro_f1}")

print(f"Weighted F1-Score: {weighted_f1}")




Ставь 👍 и забирай 📚 Базу знаний