是否有机器学习模型(类似于LSTMor 1D-CNN)将两个可变长度的时间序列作为输入并输出二进制分类(时间序列是否具有相同标签的真/假)?
所以数据看起来像下面这样
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对两个输入和两个结果向量使用一个共享层。ConcatenateDense
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([encode_1,encode_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')
一个类似的任务是用于人脸识别的 Siamese Networks / One-Shot learning。但在这种情况下,任务是与时间序列进行比较并检测它们是否具有相同的标签,但知道每个标签不是网络的任务!