基于过去和未来值的每个时间序列步骤的二进制分类
Posted
技术标签:
【中文标题】基于过去和未来值的每个时间序列步骤的二进制分类【英文标题】:Binary classification of every time series step based on past and future values 【发布时间】:2018-10-18 07:47:27 【问题描述】:我目前面临机器学习问题,并且已经到了需要一些帮助才能继续的地步。
我有传感器跟踪的各种时间序列的位置(x
、y
、z
)数据。我开发了更多功能。例如,我栅格化了整个 3D 空间,并为每个时间步计算了 cell_x
、cell_y
和 cell_z
。时间序列本身具有可变长度。
我的目标是建立一个模型,该模型使用标签0
或1
(基于过去和未来值的二进制分类)对每个时间步进行分类。因此,我有很多已经设置标签的训练时间序列。
可能非常成问题的一点是,数据中很少有1
的标签(例如,800 个样本中只有 3 个带有1
的标签)。
如果有人能在正确的方向上帮助我,那就太好了,因为有太多可能的问题:
错误的超参数 型号不正确1
的标签太少,但我认为这不是什么大问题,因为我只需要模型来建议正确的时间步长。所以我只会使用输出的峰值。
训练数据不好或太少
不好的功能
感谢任何帮助和提示。
【问题讨论】:
【参考方案1】:你的模型看起来很奇怪。为什么在 lstm 层中只使用 2 个单元?您的问题也是二进制分类。在这种情况下,您应该在输出层中只选择一个神经元(尝试在和 lstm 层之间插入一个额外的密集层,并尝试在它们之间退出层)。
如果您没有多标签问题,二元交叉熵对于 2 个输出神经元没有多大意义。但是,如果您要切换到一个输出神经元,那就是正确的。您还需要 sigmoid 然后作为激活函数。
最后的建议是:尝试类权重。 http://scikit-learn.org/stable/modules/generated/sklearn.utils.class_weight.compute_class_weight.html 如果您的标签不平衡,这可能会产生巨大的影响。
【讨论】:
【参考方案2】:您可以使用 tensorflow BasicLSTMCell 创建模型,您的数据形状适合 TensorFlow you can find Documentation for BasicLSTMCell here 中的 BasicLSTMCell 和创建模型 this Documentation contain code that will help to build BasicLstmCell model 。希望这会对你有所帮助,干杯。
【讨论】:
以上是关于基于过去和未来值的每个时间序列步骤的二进制分类的主要内容,如果未能解决你的问题,请参考以下文章
如何使用窗口函数获取每个日期值的今天、过去 7 天、过去 30 天的指标?