Tensorflow 基于过去和未来值的每个时间序列步骤的二进制分类

Tensorflow 基于过去和未来值的每个时间序列步骤的二进制分类,tensorflow,machine-learning,keras,time-series,classification,Tensorflow,Machine Learning,Keras,Time Series,Classification,我目前面临一个机器学习问题,我已经到了需要一些帮助才能继续的地步 我有传感器跟踪的各种位置(x,y,z)数据的时间序列。我开发了更多的功能。例如,我光栅化了整个3D空间,并计算了每个时间步的单元格x、单元格y和单元格z。时间序列本身具有可变长度 我的目标是建立一个模型,用标签0或1(基于过去和未来值的二进制分类)对每个时间步进行分类。因此,我有很多训练时间序列,其中的标签已经设置好了 有一件事可能非常有问题,那就是数据中几乎没有1的标签(例如,800个样本中只有3个标有1) 如果有人能在正确的方

我目前面临一个机器学习问题,我已经到了需要一些帮助才能继续的地步

我有传感器跟踪的各种位置(
x
y
z
)数据的时间序列。我开发了更多的功能。例如,我光栅化了整个3D空间,并计算了每个时间步的
单元格x
单元格y
单元格z
。时间序列本身具有可变长度

我的目标是建立一个模型,用标签
0
1
(基于过去和未来值的二进制分类)对每个时间步进行分类。因此,我有很多训练时间序列,其中的标签已经设置好了

有一件事可能非常有问题,那就是数据中几乎没有
1
的标签(例如,800个样本中只有3个标有
1

如果有人能在正确的方向上帮助我,那就太好了,因为有太多可能的问题:

  • 错误的超参数
  • 模型不正确
  • 1
    的标签太少,但我认为这不是什么大问题,因为我只需要模型来建议正确的时间步。所以我只使用输出的峰值
  • 训练数据不好或太少
  • 不良特征

非常感谢您的帮助和提示。

您的模型看起来很奇怪。为什么在lstm层中只使用2个单元?另外,您的问题是二进制分类。在这种情况下,您应该只选择输出层中的一个神经元(尝试在和lstm层之间插入一个额外的密集层,并尝试在它们之间插入退出层)

如果没有多标签问题,二进制交叉熵对2个输出神经元没有多大意义。但如果你切换到一个输出神经元,它就是正确的。您还需要sigmoid作为激活函数

最后一个建议是:试试班级权重。
如果标签不平衡,这会产生巨大的差异。

可以使用tensorflow BasicLSTMCell创建模型,数据的形状适合tensorflow中的BasicLSTMCell和创建模型。希望这对你有帮助,干杯