Оценка качества модели — ключевой этап работы с любыми машинными обучающимися системами, включая ml5.js. Без корректной оценки невозможно понять, насколько модель способна правильно предсказывать новые данные и как она ведёт себя на практике. Ml5.js предоставляет упрощённый доступ к мощным инструментам оценки, делая их понятными в контексте веб-разработки и JavaScript.
Точность (Accuracy) — одна из наиболее часто используемых метрик для классификационных моделей. Она показывает долю правильных предсказаний относительно общего числа примеров:
[ = ]
В ml5.js точность обычно вычисляется после разбиения данных на тренировочный и тестовый наборы.
Потери (Loss) отражают разницу между предсказанными и реальными значениями. Потери могут быть вычислены по разным функциям, в зависимости от задачи:
Понижение значения потерь на тестовом наборе указывает на улучшение способности модели к обобщению.
Матрица ошибок (Confusion Matrix) позволяет визуализировать качество классификации по каждому классу. Она показывает, какие классы модель путает чаще всего. В ml5.js можно получить предсказания по тестовому набору и самостоятельно построить матрицу через JavaScript.
Правильное разделение данных критически важно для честной оценки модели. Стандартное разбиение:
В ml5.js при использовании ml5.neuralNetwork() можно
перед обучением вызвать методы:
nn.addData(inputs, outputs);
nn.normalizeData();
nn.train({epochs: 50});
После тренировки часть данных оставляется для проверки точности через:
nn.classify(testInput, (err, results) => {
console.log(results);
});
Это позволяет убедиться, что модель не просто запомнила тренировочные примеры, а умеет обобщать знания.
Для более надёжной оценки качества используется кросс-валидация. Она заключается в многократном разбиении исходного набора данных на тренировочные и тестовые фрагменты. Ml5.js не имеет встроенного метода кросс-валидации, поэтому её реализуют вручную через циклы:
const folds = 5;
for (let i = 0; i < folds; i++) {
// Выбор тестового и тренировочного фрагментов
// Обучение модели
// Проверка точности на тестовом фрагменте
}
Результаты каждой итерации усредняются, что даёт более надёжную оценку производительности модели.
Переобучение возникает, когда модель слишком точно подстраивается под тренировочные данные и плохо предсказывает новые. Признаки:
В ml5.js для отслеживания переобучения удобно использовать
callback в методе train():
nn.train({epochs: 100}, whileTraining, finishedTraining);
function whileTraining(epoch, loss) {
console.log(`Epoch: ${epoch}, Loss: ${loss}`);
}
Если наблюдается резкий разрыв между тренировочными и тестовыми показателями, требуется корректировка архитектуры модели или увеличение объёма данных.
Визуализация предсказаний помогает оценить модель интуитивно. В ml5.js для этого можно использовать графические библиотеки, такие как p5.js:
results.forEach((result, index) => {
console.log(`Input: ${testInputs[index]}, Prediction: ${result.label}, Actual: ${testOutputs[index]}`);
});
Такой подход позволяет выявлять систематические ошибки и корректировать модель.
Для улучшения качества модели применяют методы регуляризации:
В ml5.js эти параметры задаются при создании нейронной сети:
const nnOptions = {
task: 'classification',
debug: true,
layers: [
{ type: 'dense', units: 32, activation: 'relu' },
{ type: 'dense', units: 16, activation: 'relu' },
],
learningRate: 0.01
};
const nn = ml5.neuralNetwork(nnOptions);
Изменение learningRate, числа слоёв, числа нейронов и функции активации существенно влияет на способность модели обобщать знания.
Сочетание всех методов — правильного разбиения данных, метрик точности и потерь, кросс-валидации, отслеживания переобучения и визуализации — позволяет получить полное понимание того, насколько модель ml5.js готова к практическому применению. Только комплексная оценка даёт уверенность в стабильной работе модели на реальных данных.