双向LSTM(BLSTM)的培训,测试和验证集

时间:2016-01-24 00:34:51

标签: python neural-network time-series keras recurrent-neural-network

当谈到正常的人工智能或任何标准机器学习技术时,我理解培训,测试和验证集应该是什么(概念上和经验法则比率)。但是,对于双向LSTM(BLSTM)网络,如何分割数据让我感到困惑。

我正在尝试改进对受监控健康值组成的个别主题数据的预测。在最简单的情况下,对于每个主题,存在一个长时间序列的值(> 20k值),并且该时间序列的连续部分根据主题的当前健康状况从一组类别中标记。对于BLSTM,网络将同时训练所有前后数据。那么问题是,如何分割一个主题的时间序列?

  • 我不能只拿最后2,000个值(例如),因为它们可能都属于一个类别。
  • 我无法随机砍掉时间序列,因为学习和测试阶段都会脱节。

最后,每个主题(据我所知)具有略微不同(但相似)的特征。所以,也许,因为我有成千上万的科目,我会训练一些,测试一些,并验证其他人吗?但是,由于存在主体间的差异,如果我只考虑一个主题,我将如何设置测试?

1 个答案:

答案 0 :(得分:0)

我认为这与您的特定数据集有关,而不是Bi-LSTM。

您难以分割数据集以进行培训/测试,而不是拆分特定样本中的序列。看起来你有许多不同的科目,它们构成了不同的样本。对于标准的训练/测试分割,您可以按照上一段中的建议在主题之间分割数据集。

对于任何类型的RNN应用程序,您不会沿着时间顺序分开;您将整个序列作为单个样品输入Bi-LSTM。因此,问题确实在于这样的模型是否适合您的问题,该问题在序列中的特定点处具有多个标签。您可以使用LSTM模型的序列到序列变体来预测序列中每个时间点所属的标签,但同样不会将序列分成多个部分。