LSTM - работа с несколькими строками в дате - PullRequest
4 голосов
/ 18 октября 2019

У меня есть данные временного ряда около 6 месяцев, имеющие столбцы «сущность» (произвольный текст) и «стоимость». Моя цель состоит в том, чтобы предсказать «Стоимость» с учетом даты и сущности. Я использовал вложение слов и подсчет слов, чтобы включить функцию текста в LSTM. Также возможно, что:

  • Нет записи в дате
  • Не все сущности существуют в одну дату

Я запутался в отношениипредставление данных. Как встроить несколько строк одной даты в LSTM и как LSTM будет смягчать новые сущности?

Ниже приведен образец данных.

enter image description here

Я преобразовал свои входные данные в векторы:

enter image description here

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 19 октября 2019

Возможно, я плохо понимаю вашу проблему. Но, как я вижу на картинке, у вас есть более одной записи в день, и это ваша главная проблема. решить это не очень сложно. обратите внимание, что вы можете передать тензор в качестве X и связать все несколько записей в матрицу.

Например, простой тензор ваших данных будет таким:

date :                        [Entity vector, Weight vector, …, Cost vector]
----------------------------------------------------------------------------
24/05/2019:          [[A, B, C, D], [18.1, 22, 36, 46], …, [25, 24, 23, 50]]
25/05/2019:                         [[A, B, C], [43, 44, 35], …, [24, 0, 0]]
27/05/2019: [[A, B, C, D, F], [34, 46, 31, 27, 60], …, [27, 24, 23, 50, 35]]

ПРИМЕЧАНИЕ: может потребоваться, чтобы все ваши векторы были водинаковой длины (для матрицы мульт). Тогда вы можете использовать " Padding ". (это означает просто поставить 0 или -1 для пропущенных сущностей. Для вас есть два возможных сенарио:

1), если у вас есть конечные сущности ,вроде бы просто от A до F. Вы просто добавляете -1 для не существующих значений. И нет необходимости в первом векторе, потому что они фиксированы и, например, index 1 всегда представляет A. Окончательные тензоры будут такими после заполнения:

date : "indexes are [A, B, C, D, E, F]" [Weight vector, …, Cost vector]
-----------------------------------------------------------------------
24/05/2019:   [[18.1, 22, 36, 46, -1, -1], …, [25, 24, 23, 50, -1, -1]]
25/05/2019:       [[43, 44, 35, -1, -1, -1], …, [24, 0, 0, -1, -1, -1]]
27/05/2019:     [[34, 46, 31, 27, 60, -1], …, [27, 24, 23, 50, 35, -1]]

2) если у вас есть бесконечные сущности , я имею в виду, могут ли ваши сущности быть чем угодно. тогда вам нужно сохранить первый вектор и просто добавить все векторы к вектору максимальной длины. Окончательные тензоры будут такими в этом случае после заполнения (предположим, 27/05/2019 имеет максимальную длину):

date :                            [Entity vector, Weight vector, …, Cost vector]
--------------------------------------------------------------------------------
24/05/2019:  [[A, B, C, D, -1], [18.1, 22, 36, 46, -1], …, [25, 24, 23, 50, -1]]
25/05/2019:     [[A, B, C, -1, -1], [43, 44, 35, -1, -1], …, [24, 0, 0, -1, -1]]
27/05/2019:     [[A, B, C, D, F], [34, 46, 31, 27, 60], …, [27, 24, 23, 50, 35]]

СОВЕТ: если ваши сущности состоят из более чем одного слова, то вы можете использовать хеш для перевода их только на один номер. (Я не рекомендую использовать для этого серию встраиваний слов! Это слишком тяжело для этой модели LSTM с 6-ю месяцами, и вы не получите из этого хорошего результата.


Теперь вы подаете эти векторы в свой LSTM. На рисунке ниже X0 и X1 и… эти тензоры (и многие ожидают цену на следующий день от h с).

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...