Синтетические данные многомерного временного ряда с корреляцией между сигналами - PullRequest
0 голосов
/ 17 января 2019

Для тестирования некоторых классификаторов я хочу сгенерировать синтетические данные временного ряда с 3 сигналами и одной меткой, которая должна зависеть от всех точек данных во всех трех из них, вот правила, которым я хочу следовать для моих сигналов:

  1. Три сигнала должны иметь некоторую корреляцию между ними
  2. Метка должна зависеть от всех точек всех трех сигналов
  3. Она не должна быть линейно разделимой, и онаДолжна быть трудная проблема для классификаторов.(В частности, я не хочу, чтобы простая двунаправленная модель LSTM достигала точности более 80%)

Я пробовал много способов, включая один из них, чтобы дать представление о том, кто япытаясь сделать:

Генерация базового синусового сигнала с течением времени со случайной частотой (в моем примере я использовал значения между 7 8 9 10 для частоты) и случайной фазой, проблема в том, чтобы найти эту частоту так, чтобы метка(y) зависит от частоты (если частота больше 8 y равна 1, иначе y равен 0), тогда я генерирую 3 случайных фильтра и свертываю этот базовый сигнал 3 раза для генерации моих 3 сигналов, добавляя шум на каждом шаге.

freq = np.random.choice([7, 8, 9, 10])
phase = np.random.rand() * 10
base = []
for i in range(data_size):
   base.append(np.random.rand() + math.sin(phase + float(i/freq)))
for f in filters:
   signal = np.convolve(base, f)
   signal += np.random.rand(len(signal)) * 6
   all_features.append(signal)
if freq > 8:
   y = 0
else:
   y = 1

Проблема с этими данными заключается в том, что простая модель BiLSTM достигает точности около 100%.Так что мой вопрос в том, есть ли способ добиться этого?Знаете ли вы какую-либо библиотеку, которую я могу использовать для генерации этого?

Если вы можете привести пример на любом языке программирования, который он будет делать, например, я нашел пакет simstudy в R, который, я думаю, можно использовать здесь,однако я не знаю, как этого добиться.

Спасибо за вашу помощь.

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