LSTM, шаблон и шумовой разрыв - PullRequest
0 голосов
/ 10 мая 2018

Я хочу найти шаблоны последовательностей во временных рядах со случайным шумовым промежутком.

Например, вот шаблон, который я хочу найти:

1, 2, 3, 4

Но мои образцы:

    *1*, 10,         *2*,             *3*, 11, 12, *4*
    *1*,             *2*, 10, 14, 15, *3*, 10, 13, *4*
10, *1*, 10, 10, 10, *2*, 11, 12,     *3*,         *4*

Я не знаю, что "хорошими" элементами являются 1, 2, 3 и 4.

Я начал с декодера LSTM, но «шум» скрывает хорошие элементы. Например, с 3 примерами я получаю:

*1*, 10, 13, 10, ...

и 2, 3 и 4 скрыты

У вас есть идея найти эти паттерны?

Спасибо.

Frédéric

1 Ответ

0 голосов
/ 10 мая 2018

В качестве отправной точки вы можете использовать модель последовательность-последовательность ( seq2seq ). Связанное репо имеет хорошее объяснение, как работают эти модели и какие проблемы они решают. Важным моментом будет то, как закодировать вашу последовательность. Часто они закодированы как одноразовые векторы. Поэтому, если у вас есть фиксированная верхняя граница для числа различных чисел / элементов в вашей последовательности, вы можете использовать ее.

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

seq = Input(shape=(timesteps, features))
hidden = LSTM(HIDDEN_UNITS, return_sequences=True)(seq)
out = TimeDistributed(Dense(1, activation='sigmoid'))(hidden)

Вы должны будете заранее знать, является ли каждая точка данных шумом или нет.

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