Существует ли модель машинного обучения (что-то вроде LSTM
или 1D-CNN
), которая принимает в качестве входных данных два временных ряда переменной длины и выдает двоичную классификацию (True / False, если временные ряды имеют одну и ту же метку)?
Таким образом, данные будут выглядеть примерно так:
date value label
2020-01-01 2 0 # first input time series
2020-01-02 1 0 # first input time series
2020-01-03 1 0 # first input time series
2020-01-01 3 1 # second input time series
2020-01-03 1 1 # second input time series
Есть ли что-то подобное из коробки, и если нет, то как бы вы построили модель минимального рабочего примера в Keras
?
Лучше всего использовать общий слой LSTM
для обоих входов и Concatenate
оба результирующих вектора перед подачей в последний слой Dense
.
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
n_lstm_blocks = 50
input_1 = keras.Input(shape=(None, 1)) # unknown timespan, fixed feature size 1
input_2 = keras.Input(shape=(None, 1))
shared_lstm = layers.LSTM(n_lstm_blocks)
encode_1 = shared_lstm(input_1)
encode_2 = shared_lstm(input_2)
concat = layers.concatenate([input_1,input_2])
output = layers.Dense(1, activation='sigmoid')(concat)
model = keras.Model(inputs=[input_1,input_2],outputs=output)
model.compile(optimizer='adam', loss='binary_crossentropy')