时间序列分类 MATLAB

Posted

技术标签:

【中文标题】时间序列分类 MATLAB【英文标题】:Time series classification MATLAB 【发布时间】:2012-12-05 13:59:05 【问题描述】:

我的任务是使用 MATLAB 和任何神经网络框架对时间序列数据进行分类。

更具体地描述任务: 是计算机视觉领域的一个问题。 Is 是一个场景边界检测任务。

源数据是来自视频流的 4 个相邻帧直方图相关性数组。 根据这些数据,我们必须将此时间序列分为 2 类:

“场景中断” “没有场景中断”

因此,每个源数据条目的网络输入是 4 个双精度值,输出是一个二进制值。我将在下面展示 src 数据的示例:

0.997894,0.999413,0.982098,0.992164
0.998964,0.999986,0.999127,0.982068
0.993807,0.998823,0.994008,0.994299
0.225917,0.000000,0.407494,0.400424
0.881150,0.999427,0.949031,0.994918

问题是来自 Matlab 神经工具箱的模式识别工具(如 patternnet)威胁源数据,如独立实体。但我坚信只有在 net 根据之前相关性的历史做出决定时,结果才会准确。

但我也未能从提供时间序列分析的递归网络(如延迟网络和 narxnet)获得有效响应。

narxnet 和 delaynet 返回糟糕的结果,看起来这些类型的网络不应该解决分类任务。我没有在这里插入任何代码,而它几乎完全是使用 Matlab Neural Toolbox GUI 自动生成的。

我会很感激任何帮助。特别是一些建议,哪种工具更适合完成我的任务。

【问题讨论】:

添加以前的步骤数据作为附加输入... @Dan,感谢您的回复。但我不确定是否可以为其他输入设置权重。因此,如果我们处理 n 个条目,来自 n-1 的值应该比来自 n-10 的值具有更大的影响,并且比来自 n 的值的影响更小。我认为有一些特殊类型的网络可以完成这样的任务。 您可能不需要 n-10 数据,这当然取决于您要建模的系统。首先提供所有 t = n 和 t = n - 1 数据作为输入。然后尝试添加 t = n - 2。如果这不会导致明显的改进,那么您只需回到 t - n。但是您可以将其建模为一阶系统,因此您只需要 n 和 n-1 个数据作为输入。 @Dan,这个神经网络正在开发用于这个分类任务,而不是adaptiveThreshold(以前的解决方案)。测试表明,我在滑动窗口大小 = 30 时获得的最大精度。所以,我确信我的任务需要 n-10 个数据,甚至可能更多。 我正在研究“时间序列降雨数据的模式识别”......以及matlab中的新手......请您提供您程序的matlab代码......我很确定它会帮助我很多 【参考方案1】:

我不确定对这个问题进行分类有多难。 给定您的样本,4 个输入和 1 个输出的前馈神经网络就足够了。

如果您坚持使用历史输入,您只需对输入 d 进行预处理,这样

您的新输入 D(t)t 时的向量)由 d(t) 组成,是 t 时的 1x4 向量; d(t-1) 在时间 t-1 时是 1x4 向量;...而 d(t-k) 在时间 t-k 时是 1x4 向量。

如果t-k <0,则将其视为'0'。

所以你有一个 1x(4(k+1)) 向量作为输入和 1 个输出。 和Dan提到的类似,你需要找到一个好的k

说到权重,我认为不需要对输入进行额外的预处理,如窗口方法,因为会训练神经网络为每个输入维度分配权重。

这听起来有点混乱,因为神经网络会独立考虑每个输入维度。这意味着您将信息丢失为四个相邻的相关性。

一种可能的解决方案是预处理提取邻域特征,例如使用 meanstd 作为代表原件的两个特征。

【讨论】:

谢谢。虽然你和丹对可能的方法有相同的看法,但我会同意你的看法,并根据你的建议实施网络。

以上是关于时间序列分类 MATLAB的主要内容,如果未能解决你的问题,请参考以下文章

使用 GMM 和 MATLAB 进行分类

Matlab中的KNN文本分类

Libsvm 分类 MATLAB

大型数据库的多类分类(matlab)

如何在matlab中结合两个分类模型?

用于分类的深度信念网络的Matlab示例代码