Бинарная классификация представляет собой задачу машинного обучения, в которой требуется отнести входные данные к одной из двух категорий. В JavaScript для таких задач удобна библиотека Brain.js, предоставляющая высокоуровневый интерфейс для работы с нейронными сетями.
Для начала необходимо установить библиотеку через npm:
npm install brain.js
После установки можно подключить её в проекте:
const brain = require('brain.js');
Brain.js поддерживает несколько типов сетей, но для бинарной
классификации чаще всего используют Feedforward Neural Network
(полносвязная нейронная сеть), реализованную через класс
NeuralNetwork.
Сеть создаётся с указанием конфигурации:
const net = new brain.NeuralNetwork({
hiddenLayers: [3], // один скрытый слой с 3 нейронами
activation: 'sigmoid' // функция активации
});
Ключевые параметры:
hiddenLayers — массив, задающий количество и размер
скрытых слоев.activation — функция активации, влияющая на способность
сети различать сложные паттерны. Для бинарной классификации чаще
применяются sigmoid или tanh.Для бинарной классификации данные должны быть представлены в виде массива объектов:
const trainingData = [
{ input: { feature1: 0, feature2: 1 }, output: { class0: 1 } },
{ input: { feature1: 1, feature2: 0 }, output: { class1: 1 } },
{ input: { feature1: 1, feature2: 1 }, output: { class0: 1 } },
{ input: { feature1: 0, feature2: 0 }, output: { class1: 1 } },
];
Особенности:
input) — объект, где
ключи соответствуют признакам, а значения нормализованы (обычно в
диапазоне 0–1).output) — объект с
двумя ключами, представляющими классы. Для бинарной классификации
достаточно двух ключей, где 1 соответствует принадлежности к классу, а 0
— к другому.Обучение выполняется методом train:
net.train(trainingData, {
iterations: 20000, // максимальное количество итераций
learningRate: 0.1, // скорость обучения
log: true, // вывод прогресса в консоль
logPeriod: 1000 // вывод каждые 1000 итераций
});
Параметры обучения:
iterations — количество проходов по данным, напрямую
влияет на точность и время обучения.learningRate — определяет скорость корректировки весов
сети. Слишком высокий может вызвать нестабильность, слишком низкий —
медленное обучение.log и logPeriod — удобны для отслеживания
процесса обучения и визуальной оценки сходимости.После обучения сеть готова к предсказаниям:
const output = net.run({ feature1: 1, feature2: 0 });
console.log(output);
Вывод представляет собой объект с вероятностями для каждого класса:
{ "class0": 0.2, "class1": 0.8 }
Интерпретация результата: Класс с большей вероятностью считается предсказанным.
sigmoid или tanh. relu
можно использовать при больших наборах данных.momentum, позволяющий сглаживать изменения весов и снижать
риск переобучения.Сохранение обученной сети позволяет использовать её без повторного обучения:
const json = net.toJSON(); // сериализация в JSON
Для восстановления:
const net2 = new brain.NeuralNetwork();
net2.fromJSON(json);
Это важно для проектов с долгим обучением или для интеграции в веб-приложения.
Brain.js подходит для небольших и средних задач бинарной классификации, где важна простота и быстрая интеграция в JavaScript-приложения.
Хотите, я могу подготовить полноценный пример проекта с реальными данными, где бинарная классификация на Brain.js будет реализована шаг за шагом? Это поможет увидеть работу сети «вживую» и понять все нюансы обучения.