Изучение мультиклассовой кривой ROC AUC: методы и примеры кода

В задачах классификации машинного обучения важно оценить производительность моделей. Одним из популярных показателей оценки, используемых для двоичной классификации, является кривая рабочей характеристики приемника (ROC) и соответствующая площадь под кривой (AUC). Однако что, если у нас будет несколько классов вместо двух? В этой статье мы углубимся в концепцию мультиклассовой кривой ROC AUC, рассмотрим различные методы ее вычисления и предоставим примеры кода с использованием Python и scikit-learn.

Понимание мультиклассовой кривой ROC AUC:
Мультиклассовая кривая ROC AUC расширяет бинарную кривую ROC для обработки сценариев с более чем двумя классами. Он обеспечивает визуальное представление компромисса между истинно положительным показателем (чувствительностью) и ложноположительным уровнем (1 – специфичность) для каждого класса. Площадь под мультиклассовой кривой ROC AUC измеряет общую производительность классификатора по всем классам.

Методы вычисления мультиклассовой ROC AUC:

  1. Подход «один против остальных» (OvR):
    Подход OvR рассматривает каждый класс как отдельную задачу бинарной классификации. Для каждого класса рассчитывается отдельная кривая ROC, считая класс положительным, а остальные — отрицательными. Итоговый мультиклассовый ROC AUC рассчитывается путем усреднения значений AUC отдельного класса.

Пример кода с использованием scikit-learn:

from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import LabelBinarizer
# Assuming y_true contains the true labels and y_pred contains the predicted probabilities
lb = LabelBinarizer()
lb.fit(y_true)
y_true_bin = lb.transform(y_true)
y_pred_bin = lb.transform(y_pred)
multiclass_roc_auc = roc_auc_score(y_true_bin, y_pred_bin, average='macro')
  1. Взвешенная AUC:
    В ситуациях, когда существует классовый дисбаланс, можно использовать подход взвешенной AUC. Он присваивает более высокие веса классам с меньшим количеством выборок, что дает им большее влияние на общий расчет производительности.

Пример кода с использованием scikit-learn:

from sklearn.metrics import roc_auc_score
# Assuming y_true contains the true labels and y_pred contains the predicted probabilities
multiclass_roc_auc = roc_auc_score(y_true, y_pred, average='weighted')
  1. Микро- и макроусреднение.
    При микроусреднении рассчитывается общая кривая ROC и AUC путем совместного рассмотрения всех образцов и их прогнозов. С другой стороны, макроусреднение вычисляет кривую ROC и AUC для каждого класса независимо, а затем усредняет результаты.

Пример кода с использованием scikit-learn:

from sklearn.metrics import roc_auc_score
# Assuming y_true contains the true labels and y_pred contains the predicted probabilities
micro_roc_auc = roc_auc_score(y_true, y_pred, average='micro')
macro_roc_auc = roc_auc_score(y_true, y_pred, average='macro')

В этой статье мы рассмотрели различные методы расчета мультиклассовой кривой ROC AUC. Мы рассмотрели подход «один против остальных», взвешенную AUC, а также методы микро- и макроусреднения. Используя эти методы с примерами кода на Python и scikit-learn, вы можете эффективно оценить производительность моделей многоклассовой классификации. Понимание и использование многоклассовой кривой ROC AUC имеет решающее значение для принятия обоснованных решений в задачах машинного обучения.