gpt4 book ai didi

python - 用于序列二元分类的 Keras LSTM 模型

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:15 25 4
gpt4 key购买 nike

我目前正在从事一个更大的项目。目标是自动找到时间序列中的分割点,将序列分割成基本模式。

我有很多时间序列形式的训练数据,具有不同长度和在有用位置上手动记录的分割点。基本上,我有 xyz 位置以及这些点在长度为 2、25 和 50 的居中窗口上的距离(dist2dist25dist50)。我还将房间划分为 3D 网格并找出位置所在的单元格(cell_xcell_ycell_z)。我认为这可能很有用,因为基本操作更有可能在一个或两个单元格中进行。

Fig1

Fig2cell_x, cell_y, cell_z based on size 50. 垂直红线是训练数据的分割点。

现在我想知道时间序列中的每个点是否是 split 点。

在我看来,从这些功能开始就足够了,但我认为我的 Keras 模型不正确,因为结果在 0 的时间序列索引处始终且仅为 1。它基本上是一个基于过去和 future 值的二元分类问题。这就是我尝试使用 LSTM 解决它的原因。它看起来像这样:

model = Sequential()

model.add(LSTM(20, input_shape = (None, input_dim), return_sequences = True))
model.add(Dropout(0.5))
model.add(LSTM(20))
model.add(Dropout(0.5))
model.add(Dense(1, activation = 'sigmoid'))

model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])

因为我正处于整个机器学习主题的最开始,而且大量的 Material 有点让人不知所措,所以我在这里寻求帮助。我知道还有很多其他因素(错误的训练数据、错误的特征、错误的参数……)会导致这个结果,但我想知道如何正确地为这个问题建立一个 Keras 模型。我已经找到了很多 Keras 示例,但我不确定它们是否适合问题。

最佳答案

这对于评论来说太长了,所以我将其作为答案发布:

首先,原则上,您可以将数据输入 Keras 的 LSTM,并希望网络学习如何发现您所说的 split 点。有了足够的(标记的)数据,这似乎是一个有趣的项目,尽管不平衡的类可能是一个问题(这肯定可以使用权重、重采样技术或其他类似技术来解决)!我相信所有这些都已经在各种评论中说过了。如果您真的不关心时间维度,您可能还想尝试看看其他网络架构的表现如何。

在更一般的层面上,我想知道顺序神经网络是否是解决此问题的正确方法。时间序列计量经济学和相关领域中有许多久经考验的方法。它们有各种名称,来自 structural break , change point或参数稳定性检测。如果您想确定新数据点是否属于不同的制度,那么您可能会发现一些异常/离群值检测技术很有用。要找到适合您的特定设置的合适的统计测试(旨在找到发生中断时的时间索引),您可能需要深入研究 actual literature因为其中只有少数可以在开源包中轻松获得(即“很少”是所有东西的一小部分)。我知道 R 包中有一些可用选项(clickclick),而且我确信 Python 中存在类似的东西,尽管我对 Python 中的统计包不是很熟悉,所以我可以'即使它们确实存在,也不要链接到任何东西。

如果您正在寻找易于访问的高级开源解决方案,有些人会找到 facebook's prophet有趣的是,它允许您对时间序列进行建模,并且包括检测 change points 的能力,除其他事项外,自动。我不确定您标记的分割点可以在多大程度上输入模型以帮助学习这些点,但一个好的起点可能是查看自动检测到的点是否与您标记的点相似。

关于python - 用于序列二元分类的 Keras LSTM 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49944010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com