При работе с нейронными сетями, построенными с использованием Brain.js, критически важно уметь оценивать качество модели. Понимание точности, полноты и способности сети обобщать информацию позволяет корректировать архитектуру сети, параметры обучения и подход к подготовке данных.
1. Accuracy (Точность) Accuracy измеряет долю правильных предсказаний на тестовой выборке относительно общего числа образцов. Для классификаторов с несколькими классами она определяется как:
[ Accuracy = ]
В Brain.js для получения accuracy необходимо отдельно разделять данные на обучающую и тестовую выборки, обучать сеть на тренировочных данных и проверять предсказания на тестовых данных.
2. Confusion Matrix (Матрица ошибок) Матрица ошибок представляет собой таблицу, в которой строки соответствуют истинным классам, а столбцы — предсказанным. Каждый элемент (M[i][j]) показывает, сколько раз образцы класса (i) были классифицированы как (j).
Пример структуры матрицы для трёх классов:
| Истинный Предсказанный | A | B | C |
|---|---|---|---|
| A | 50 | 2 | 3 |
| B | 4 | 45 | 1 |
| C | 2 | 3 | 40 |
Эта матрица позволяет выявлять, какие классы сеть путает чаще всего, и принимать решения о дополнительной подготовке данных.
3. Precision и Recall (Точность и полнота)
Эти показатели особенно важны для несбалансированных данных, когда один класс встречается значительно чаще других.
4. F1-score F1-score объединяет точность и полноту в одну метрику, учитывая компромисс между ними:
[ F1 = 2 ]
Для корректной оценки качества классификатора данные необходимо разделить на три части:
Важно, чтобы тестовая выборка не пересекалась с обучающей, иначе accuracy будет завышена.
При создании нейронной сети в Brain.js используется объект
NeuralNetwork или NeuralNetworkGPU для
ускоренного обучения. После обучения для оценки точности можно
использовать метод run для каждого образца тестовой выборки
и подсчитывать количество совпадений с ожидаемыми результатами.
Пример подсчёта accuracy:
const brain = require('brain.js');
const net = new brain.NeuralNetwork({ hiddenLayers: [10, 10] });
net.train(trainingData);
let correct = 0;
testData.forEach(item => {
const output = net.run(item.input);
const predicted = Object.keys(output).reduce((a, b) => output[a] > output[b] ? a : b);
if (predicted === item.output) correct++;
});
const accuracy = correct / testData.length;
console.log('Accuracy:', accuracy);
В Brain.js результаты классификации можно визуализировать через графики распределения ошибок, построение матриц ошибок и анализ вероятностей, возвращаемых сетью. Это позволяет не только оценить общую точность, но и понять характер ошибок: систематические ли они, случайные или вызваны редкими классами.
learningRate), функции активации
(activation), структура скрытых слоёв.Для окончательной оценки качества создаются несколько сетей с разными параметрами, и их результаты сравниваются по ключевым метрикам: accuracy, F1-score, распределение ошибок. Это позволяет выбрать оптимальную конфигурацию для конкретной задачи классификации.
Эти методы обеспечивают всесторонний анализ эффективности нейронной сети в Brain.js, позволяя не ограничиваться только обучением и предоставлять количественные и качественные оценки её работы.