Анализ временных рядов нейросетью

236
23 декабря 2021, 01:10

Способна ли библиотека решить следующую задачу (вычислительную задачу)?

Даны ежедневные данные (x1,x2,x3), данные по декадам (x4) и единожды заданные данные (x5, x6). Данные собираются за полугодие. В конце полугодия получается y1. Собраны данные за несколько лет.

Пример - гостиница. Постояльцы платят ежедневно (номера разного размера - плата разная - x1, x2). Ежедневно начисляется заработная плата работникам - x3. Раз в десять дней закупаются продукты питания и вода - x4. Раз в полгода оплачиваются коммунальные счета, делается ремонт - x5, x6 (для упрощения считаем, что это происходит в начале интервала). Раз в полгода делается финансовый отчет и вычисляется прибыль - y1.

Проблема в том что нужно предсказать y1 до окончания полугодия в произвольный день.

П.С. Я склоняюсь к LSTM. И надеюсь, что все данные можно свести к минимальному интервалу (день, в данном примере) - считать все X ежедневными. Но у меня не получается понять как подать числовые данные в сеть.

И да - мне нужно не классифицировать входные данные, а обсчитывать их в сети...

Пример данных:

{
  ...
  2018_1: { ... },
  2018_2: { ... },
  2019_1: {
    rent1: [19200,19200,19200,19200,12000,12000,7200,15600,15600,7200,7200,8400,7200,8400,8400,8400,10800,21600,21600,21600,21600,19200,15600,7200,7200,8400,7200,8400],
    rent2: [19800,18000,18000,18000,14400,12600,12600,12600,14400,14400,14400,9000,18000,18000,18000,19800,19800,12600,18000,18000,18000,14400,14400,14400,14400,14400,14400,14400],
    salary: [-9000,-9000,-9000,-9000,-8400,-8400,-7700,-8400,-8400,-7700,-7700,-7700,-7700,-8000,-8000,-8000,-8400,-8600,-9000,-9000,-9000,-8600,-8600,-7700,-7700,-7700,-7700,-7700],
    food: [-27743,-32682,-23009.5],
    repair: [-47000],
    annuity: [-175000]
    profitability: 266765.5
  }
}

Если привести данные в одномерную форму - нейросеть (brain.NeuralNetwork) выполняет вычисления. Но только в конце периода. Прогноз необходим в любое время периода - т.е. до окончания серии данные в текущем периоде. Размеры данных могут варьироваться - високосный год, неожиданные ремонты, бонусы сотрудникам, испорченные продукты и т.п. Я думаю, что для этого требуется сеть с памятью (возможно какая-то из brain.recurrent.*). Но я не понимаю, как передать в неё даже простые тестовые данные что бы она выполнила расчет.

Возможно, более понятным будет другой пример: прогнозирование урожайности: ежедневные погодные данные, внесение удобрений перед посевом, обработка от вредителей и др. - суть в том, что данные представляются временными рядами разного периода прежде чем станет известен результат (погода получается ежедневно с момента сева, но урожай собирается только в конце года).

Суть моего вопроса в том как с пеомощью нейронной сети с памятью выполнять прогноз по не полному временному ряду данных (при том что сеть должна обучаться по временным рядам данных).

READ ALSO
Фильтрация массива с помощью map [дубликат]

Фильтрация массива с помощью map [дубликат]

Кажется, я не до конца понимаю,как работает mapЯ пытаюсь вернуть массив,который не содержит элемента с определенным id

156
Модальные окна и динамические списки

Модальные окна и динамические списки

Надо сделать подобноеЯ подобное сделал, но это получается говнокод какой-то и обслуживать его тоже вредно

191
Разделить API config на версию dev и prod webpack

Разделить API config на версию dev и prod webpack

Подскажите пожалуйста, есть вот файл configjs в нем экспортируемая переменная с ссылкой на API, но есть API для dev версии, а есть отдельное API для prod версии,...

304
Какой метод использовать для получения cookies?

Какой метод использовать для получения cookies?

Я делаю свое собственное расширение Chrome на JS, поэтому, мне нaдo получать куки с нужного сайтаНо я не знаю, какой метод мне использовать

193