Регрессия — это задача предсказания непрерывного значения на основе входных данных. В отличие от классификации, где результат ограничен конечным набором категорий, регрессия требует моделирования зависимостей числового характера. В контексте библиотеки Brain.js регрессионная задача реализуется через сети с обратным распространением ошибки, чаще всего с использованием многослойного перцептрона (feedforward neural network).
Ключевые элементы регрессионной модели:
Важнейшим этапом регрессии является подготовка данных:
Нормализация Данные должны быть приведены к диапазону [0, 1] или [-1, 1]. Это обеспечивает устойчивость обучения и предотвращает «затухание» градиентов при обучении сети. В Brain.js нормализация обычно делается вручную с использованием линейного масштабирования:
function normalize(value, min, max) {
return (value - min) / (max - min);
}
function denormalize(value, min, max) {
return value * (max - min) + min;
}Форматирование данных для сети Brain.js ожидает
объекты вида { input: [...], output: [...] }. Для регрессии
output содержит массив с одним элементом — числовым
значением:
const trainingData = [
{ input: [0.1, 0.5], output: [0.7] },
{ input: [0.4, 0.9], output: [0.2] }
];Разделение на обучающую и тестовую выборки Обычно выделяют 70–80% данных для обучения и 20–30% для проверки точности модели.
Brain.js предоставляет класс NeuralNetwork, который
подходит для регрессии при использовании линейной функции активации на
выходном слое или сигмоидной функции с нормализованными данными.
Настройки сети включают:
[10, 10] создаст
два скрытых слоя по 10 нейронов каждый.'sigmoid', 'relu',
'leaky-relu'), влияющая на нелинейность модели.Пример создания сети для регрессии:
const brain = require('brain.js');
const net = new brain.NeuralNetwork({
hiddenLayers: [10, 10],
activation: 'relu',
learningRate: 0.01
});
Обучение осуществляется методом train, который принимает
массив объектов с входными и выходными значениями и настройки процесса
обучения:
const trainingOptions = {
iterations: 20000,
errorThresh: 0.005,
log: true,
logPeriod: 1000
};
net.train(trainingData, trainingOptions);
После обучения сети необходимо проверить точность на тестовой выборке. Важно использовать денормализованные значения для интерпретируемых предсказаний:
const testInput = [0.2, 0.8];
const normalizedPrediction = net.run(testInput);
const prediction = denormalize(normalizedPrediction[0], minOutput, maxOutput);
Ключевые моменты проверки:
Регрессия в Brain.js строится вокруг этих фундаментальных принципов, обеспечивая гибкую платформу для решения широкого спектра задач предсказания числовых значений.