Метрики precision, recall, F1

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

Precision (точность)

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

[ = ]

где:

  • TP (True Positive) — истинно положительные предсказания, когда модель верно классифицировала положительный класс;
  • FP (False Positive) — ложноположительные предсказания, когда модель ошибочно классифицировала отрицательный пример как положительный.

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

Recall (полнота)

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

[ = ]

где:

  • FN (False Negative) — ложноотрицательные предсказания, когда модель пропустила положительный пример.

Высокий recall необходим, когда пропуск положительных объектов недопустим, например, при диагностике болезней или детекции мошенничества. Низкий recall указывает на то, что модель упускает значительное количество положительных примеров.

F1-score

F1-score является гармоническим средним между precision и recall, объединяя обе метрики в одну, что позволяет оценивать баланс между ложноположительными и ложноотрицательными срабатываниями:

[ F1 = 2 ]

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

Реализация метрик в Brain.js

Brain.js — это библиотека для создания нейронных сетей на JavaScript. Она предоставляет классы, такие как NeuralNetwork и NeuralNetworkGPU, для обучения моделей, однако встроенных средств для вычисления precision, recall и F1 нет. Метрики необходимо реализовывать самостоятельно, используя массивы предсказаний и реальных значений.

Пример вычисления метрик:

function calculateMetrics(predictions, labels) {
  let TP = 0, FP = 0, FN = 0;

  for (let i = 0; i < predictions.length; i++) {
    if (predictions[i] === 1 && labels[i] === 1) TP++;
    if (predictions[i] === 1 && labels[i] === 0) FP++;
    if (predictions[i] === 0 && labels[i] === 1) FN++;
  }

  const precision = TP / (TP + FP || 1);
  const recall = TP / (TP + FN || 1);
  const f1 = 2 * (precision * recall) / (precision + recall || 1);

  return { precision, recall, f1 };
}

В этом примере:

  • predictions — массив с предсказанными значениями (0 или 1);
  • labels — массив с фактическими значениями.

Использование || 1 предотвращает деление на ноль в случае отсутствия TP, FP или FN.

Применение в проектах

Для задач бинарной классификации, например, определения спама, анализа отзывов или детекции аномалий, метрики precision, recall и F1 позволяют объективно оценивать качество модели. В Brain.js после обучения сети:

const net = new brain.NeuralNetwork();
net.train(trainingData);

const predictions = testData.map(item => net.run(item.input) > 0.5 ? 1 : 0);
const labels = testData.map(item => item.output);

const metrics = calculateMetrics(predictions, labels);
console.log(metrics);

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

Баланс метрик

В практических задачах часто приходится регулировать компромисс между precision и recall. Например:

  • Высокий precision, низкий recall — модель уверенно классифицирует положительные объекты, но пропускает многие из них;
  • Высокий recall, низкий precision — модель находит почти все положительные объекты, но делает много ложных срабатываний.

Использование F1-score позволяет оценивать такой баланс и сравнивать модели, ориентируясь на общий показатель эффективности.

Метрики precision, recall и F1 являются стандартными инструментами анализа качества классификации и их внедрение в проекты с Brain.js позволяет создавать более надёжные и проверяемые нейросетевые решения.