Временные ряды — это последовательности данных, упорядоченные по времени. Примеры включают значения температуры, котировки акций, показатели трафика сайта. Для анализа временных рядов важны тренды, сезонные колебания, шумы и автокорреляции.
В ml5.js временные ряды можно использовать через интеграцию с моделями машинного обучения для прогнозирования, кластеризации и анализирования последовательностей. Основная цель — создание моделей, способных предсказывать будущие значения ряда на основе истории.
Для работы с ml5.js используется подключение через CDN или пакетный менеджер:
<script src="https://cdn.jsdelivr.net/npm/ml5@latest/dist/ml5.min.js"></script>
или через npm:
npm install ml5
После подключения библиотека доступна через глобальный объект
ml5.
Данные должны быть представлены в виде массива чисел или объектов с временной меткой и значением:
const timeSeriesData = [
{ time: '2026-01-01', value: 100 },
{ time: '2026-01-02', value: 105 },
{ time: '2026-01-03', value: 102 },
{ time: '2026-01-04', value: 108 }
];
Для большинства моделей важно масштабирование
значений. Используется нормализация или стандартизация, чтобы
значения находились в диапазоне [0, 1] или имели нулевое
среднее и единичную дисперсию.
function normalize(data) {
const values = data.map(d => d.value);
const min = Math.min(...values);
const max = Math.max(...values);
return data.map(d => ({ ...d, value: (d.value - min) / (max - min) }));
}
В ml5.js для работы с последовательностями используется модель LSTM. Она подходит для предсказания будущих значений на основе предыдущих.
const options = {
inputs: 1,
outputs: 1,
task: 'regression',
debug: true
};
const lstm = ml5.LSTMTimeSeries(timeSeriesData, options);
Параметры:
inputs: количество входных признаков (для простого ряда
— 1, значение в момент времени);outputs: количество предсказываемых значений;task: 'regression' для прогнозирования
числовых значений;debug: вывод информации о процессе обучения.Обучение LSTM происходит с использованием метода
train:
const trainingOptions = {
epochs: 100,
batchSize: 1,
learningRate: 0.01
};
lstm.train(trainingOptions, whileTraining);
function whileTraining(epoch, loss) {
console.log(`Эпоха: ${epoch}, Потеря: ${loss}`);
}
epochs: количество проходов по данным;batchSize: размер пакета данных на одну итерацию;learningRate: скорость обновления весов модели;whileTraining позволяет отслеживать
прогресс.После обучения используется метод predict:
const futureSteps = 5;
lstm.predict(futureSteps, function(err, results) {
if (err) {
console.error(err);
} else {
console.log('Прогноз:', results);
}
});
results возвращает массив предсказанных значений
временного ряда.
Для анализа модели удобно использовать графическое отображение. Например, с библиотекой Chart.js:
const ctx = document.getElementById('chart').getContext('2d');
const chart = new Chart(ctx, {
type: 'line',
data: {
labels: timeSeriesData.map(d => d.time),
datasets: [
{
label: 'Исторические значения',
data: timeSeriesData.map(d => d.value),
borderColor: 'blue',
fill: false
},
{
label: 'Прогноз',
data: [...Array(timeSeriesData.length).fill(null), ...predictedValues],
borderColor: 'red',
fill: false
}
]
}
});
null
для выравнивания по времени.После обучения модель можно сохранить для последующего использования:
lstm.save('my-lstm-model');
Для загрузки:
ml5.LSTMTimeSeries.load('my-lstm-model', function(err, loadedModel) {
if (err) {
console.error(err);
} else {
console.log('Модель загружена');
}
});
Сохранение позволяет избегать повторного обучения и использовать модель в браузере или на сервере.
Если данные имеют несколько признаков (например, температура,
влажность, давление), inputs устанавливается равным
количеству признаков:
const multivariateOptions = {
inputs: 3, // температура, влажность, давление
outputs: 1,
task: 'regression'
};
const lstmMulti = ml5.LSTMTimeSeries(multivariateData, multivariateOptions);
Предсказание производится аналогично, но модель учитывает взаимозависимости между признаками.
epochs и learningRate.ml5.KNNClassifier.Работа с временными рядами в ml5.js сочетает в себе удобство браузерной интеграции, доступ к мощным моделям LSTM и возможности быстрой визуализации и анализа данных.