В TensorFlow.js метрики представляют собой функции, используемые для оценки качества работы модели на валидационных или тестовых данных. Они применяются после каждой эпохи обучения или на отдельной выборке для количественного измерения точности предсказаний модели.
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 (точность по положительным предсказаниям) измеряет долю истинно положительных предсказаний среди всех примеров, которые модель определила как положительные:
[ = ]
где 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:
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 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. Их грамотное использование позволяет выявлять сильные и слабые стороны модели, особенно на сложных или несбалансированных наборах данных.