2 min read

Оценка F1 (F1 Score)

Оценка F1 (F1 Score)
Фото: Vincent van Zalinge / Unsplash

Оценка F1 – среднее значение Точности измерений (Accuracy) и Отзыва (Recall) с Весами (Weight) при наличии. F1 обычно более полезна, чем точность измерений, особенно если распределение классов неравномерно. Оценка F1 вычисляется по формуле:

$$F_1 = \frac{2 * Точность * Отзыв}{Точность + Отзыв}$$

Когда мы получаем данные, то после очистки и предварительной обработки, первым делом передаем их в модель и, конечно же, получаем результат в виде вероятностей. Но как мы можем измерить эффективность нашей модели? Здесь Матрица ошибок (Confusion Matrix) и оказывается в центре внимания.

Матрица ошибок – это показатель успешности классификации, где классов два или более. Это таблица с 4 различными комбинациями сочетаний прогнозируемых и фактических значений.

Давайте рассмотрим значения ячеек (истинно позитивные, ошибочно позитивные, ошибочно негативные, истинно негативные) с помощью "беременной" аналогии:


Истинно позитивное предсказание (True Positive, сокр. TP)
Вы предсказали положительный результат, и женщина действительно беременна.

Истинно отрицательное предсказание (True Negative, TN)
Вы предсказали отрицательный результат, и мужчина действительно не беременен.

Ошибочно положительное предсказание (ошибка типа I, False Positive, FN)
Вы предсказали положительный результат (мужчина беременен), но на самом деле это не так.

Ошибочно отрицательное предсказание (ошибка типа II, False Negative, FN)
Вы предсказали, что женщина не беременна, но на самом деле она беременна.

Точность измерений вычисляется по формуле:

$$Точность = \frac{TP}{TP + FP}$$

Отзыв вычисляется по формуле:

$$Отзыв = \frac{TP}{TP + FN}$$

Теперь, когда у нас есть базовое представление о том, как рассчитывается F1, рассмотрим пример.

Оценка F1: SkLearn

Давайте посмотрим, как SkLearn считает F1. Для начала импортируем необходимые библиотеки:

from sklearn.metrics import f1_score

Ниже мы объявим два списка –  истинные Классы (Class) y_true шести Наблюдений (Observation) и предсказанные y_pred:

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

Вызовем соответствующий модуль для вычисления оценки. Параметр average требуется, если у целей более двух классов, и weighted означает, что набор данных несбалансированный.

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

Метрика подспудно вычислила точность и отзыв, а затем выполнила подстановку в формулу F1:

0.26666666666666666

Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.

Подари чашку кофе дата-сайентисту ↑