Метрики: accuracy, precision, recall, AUC

В TensorFlow.js метрики представляют собой функции, используемые для оценки качества работы модели на валидационных или тестовых данных. Они применяются после каждой эпохи обучения или на отдельной выборке для количественного измерения точности предсказаний модели.


Accuracy

Accuracy (точность) — это одна из наиболее часто используемых метрик, которая измеряет долю правильных предсказаний от общего числа предсказаний. В TensorFlow.js она вычисляется как отношение количества верных предсказаний к общему количеству примеров.

Пример использования при компиляции модели:

const model = tf.sequential({
  layers: [
    tf.layers.dense({ units: 16, activation: 'relu', inputShape: [10] }),
    tf.layers.dense({ units: 3, activation: 'softmax' })
  ]
});

model.compile({
  optimizer: 'adam',
  loss: 'categoricalCrossentropy',
  metrics: ['accuracy']
});

Особенности accuracy:

  • Хорошо работает для сбалансированных классов.
  • Не подходит для сильно несбалансированных данных, когда один класс преобладает.

Precision

Precision (точность по положительным предсказаниям) измеряет долю истинно положительных предсказаний среди всех примеров, которые модель определила как положительные:

[ = ]

где TP — истинные положительные, FP — ложные положительные.

В TensorFlow.js precision можно реализовать через метрику tf.metrics.precision() или самостоятельно:

const precision = tf.metrics.precision();

const yTrue = tf.tensor1d([1, 0, 1, 1, 0]);
const yPred = tf.tensor1d([1, 0, 1, 0, 0]);

precision.updateState(yTrue, yPred);
precision.result().print(); // выводит значение precision

Особенности precision:

  • Важна, когда важно минимизировать количество ложных срабатываний (FP).
  • Например, в медицинской диагностике для редких заболеваний.

Recall

Recall (полнота) показывает, какая доля реальных положительных случаев была корректно предсказана моделью:

[ = ]

где FN — ложные отрицательные.

Пример использования:

const recall = tf.metrics.recall();

const yTrue = tf.tensor1d([1, 0, 1, 1, 0]);
const yPred = tf.tensor1d([1, 0, 1, 0, 0]);

recall.updateState(yTrue, yPred);
recall.result().print(); // выводит значение recall

Особенности recall:

  • Ключевая метрика, когда важно захватить все положительные примеры, даже если появляются ложные срабатывания.
  • Полезна в задачах обнаружения редких событий.

AUC (Area Under Curve)

AUC (Area Under the ROC Curve) измеряет качество модели по кривой ROC, которая строится по истинной положительной и ложной положительной частотам для разных порогов. Значение AUC варьируется от 0.5 (случайная модель) до 1.0 (идеальная модель).

В TensorFlow.js AUC задается через tf.metrics.auc():

const auc = tf.metrics.auc();

const yTrue = tf.tensor1d([1, 0, 1, 0, 1]);
const yPred = tf.tensor1d([0.9, 0.2, 0.8, 0.4, 0.95]);

auc.updateState(yTrue, yPred);
auc.result().print(); // выводит значение AUC

Особенности AUC:

  • Не зависит от выбранного порога классификации.
  • Полезна для оценки моделей с несбалансированными классами.
  • Позволяет сравнивать качество моделей с различными распределениями предсказаний.

Совместное использование метрик

В практике обучения моделей часто используют комбинацию метрик, чтобы получить комплексную оценку работы:

  • accuracy — общая корректность предсказаний.
  • precision и recall — дают информацию о ложных срабатываниях и полноте обнаружения.
  • AUC — оценка качества при различных порогах и при несбалансированных данных.

Пример компиляции модели с несколькими метриками:

model.compile({
  optimizer: 'adam',
  loss: 'binaryCrossentropy',
  metrics: ['accuracy', tf.metrics.precision(), tf.metrics.recall(), tf.metrics.auc()]
});

Такой подход позволяет отслеживать одновременно общую точность и специфические характеристики модели, повышая надежность анализа результатов.


Важные нюансы

  • Метрики не обучают модель, а лишь оценивают её качество.
  • Для многоклассовой классификации precision, recall и AUC требуют указания подходящей стратегии усреднения (macro, micro, weighted), что в TensorFlow.js иногда реализуется вручную.
  • Обновление состояния метрик через updateState позволяет аккумулировать результаты по мини-батчам и корректно вычислять итоговые значения на большой выборке.

Метрики accuracy, precision, recall и AUC являются фундаментальными инструментами анализа качества моделей в TensorFlow.js. Их грамотное использование позволяет выявлять сильные и слабые стороны модели, особенно на сложных или несбалансированных наборах данных.