Как смоделировать генерацию события и временного ряда с неравной длиной - PullRequest
1 голос
/ 22 марта 2019

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

Мои данные в основном выглядят так:

[[[ -1.00, Event <],
  [  0.00, Event A],
  [  6.19, Event B],
  [ 55.41, Event C],
  [ 66.68, Event B],
  ...
  [293.54, Event G],
  [300.99, Event H],
  [ -0.50, Event >],
  [ -0.50, Event >],
  [ -0.50, Event >],
  [ -0.50, Event >]]]

И форма будет

(1459,76,2)

Цель состоит в том, чтобы создать временные ряды, похожие на те, которые есть в моем наборе данных, содержащие обе функции.

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

1 Ответ

1 голос
/ 22 марта 2019

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

Пример

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

from nltk.lm.preprocessing import padded_everygram_pipeline
from nltk.lm import MLE,Laplace
from nltk.lm import Vocabulary

# Generate Data
event = []
for i in range(1,100):
    event.append(["{0}".format(n*i) for n in range(10)])

# Train model 
train_data, padded_vocab = padded_everygram_pipeline(3, event)
model = MLE(3)
model.fit(train_data, padded_vocab)

# Generate a random sequence of 10 numbers
model.generate(10)

Примечание: игнорировать </s> и <s> в сгенерированной последовательности, поскольку они представляют начало и конец последовательности.

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

...