使用神经网络的时间序列分类

Posted

技术标签:

【中文标题】使用神经网络的时间序列分类【英文标题】:time series classification using neural networks 【发布时间】:2016-02-14 20:25:57 【问题描述】:

我想使用神经网络预测公司的破产情况。数据集组织如下: 研究数据属于 2001-2012 年期间的 160 家公司(50 家破产公司和 110 家非破产公司)。破产由一个二进制变量(0=健康,1=破产)来描述。例如,A 公司在 2001-2012 年期间未破产,但 B 公司在 2003 年破产,每个公司每年大约有 150 个特征/输入,因此应选择其中一些特征,然后选择公司的健康状况应该可以预测。

现在,我不知道如何进行分类,以便考虑公司内部多年来(趋势)和公司之间的相似程度。准确地说,我想考虑公司内部和公司之间的特性变化趋势。 如果我的问题是时间序列分类,我应该使用什么样的神经网络?循环神经网络?如果是,数据集在Matlab中应该如何组织。

company         year  Bankruptcy Feature 1 Feature 2 …  …  Feature 150

A              2001    0                              
A                2002    0                              
A                2003    0                              
A                2004    0                              
A                2005    0                              
A                2006    0                              
A                2007    0                              
A                2008    0                              
A                2009    0                              
A                2010    0                              
A                2011    0                              
A                2012    0                              
B                2001    0                              
B                2002    0                              
B                2003    1  

最好的问候,

【问题讨论】:

我会将每家公司所有年份的所有数据提供给网络。所以第 1 行:公司 A 功能 1 2002 功能 1 2003 ... 功能 150 2012。在第 2 行,公司 B 也是如此,依此类推 【参考方案1】:

使用神经网络可以做到这一点。鉴于它是一个时间序列,并且您有许多特征,您可以将其视为分类或回归问题。我不知道你的数据,我只是举例。

您可以输入输入层中的所有数据,并为每个样本提供理想的输出(您想要分类的特征)来训练您的神经网络模型。示例:

Company ; Year ; Feature 1 ; Feature 2      Ideal Output
1       ; 2000 ; 1         ; 1              1
2       ; 2001 ; 1         ; 2              0
3       ; 2002 ; 2         ; 4              1
4       ; 2003 ; 5         ; 0              1
5       ; 2004 ; 4         ; 1              0

现在,将其用作时间序列,您可以使用预测窗口来使用它,例如,您可以选择要预测的特征并在数据之间滑动窗口以估计该系列的理想输出。

假设您有一个包含这些值的时间序列

2.5 ; 2.6 ; 3.2 ; 4.6 ; 5.1 ; 5.2 ; 5.9 ; 6.4 ; 7.1 ; 8.3 ; 9.1

使用 3 个点的预测窗口,您将有这样的集合:

Inputs              Ideal Output
2.5 ; 2.6 ; 3.2     4.6
2.6 ; 3.2 ; 4.6     5.1
3.2 ; 4.6 ; 5.1     5.2 
4.6 ; 5.1 ; 5.2     5.9
5.1 ; 5.2 ; 5.9     6.4
5.2 ; 5.9 ; 6.4     7.1 
5.9 ; 6.4 ; 7.1     8.3 
6.4 ; 7.1 ; 8.3     9.1

另一种方法是使用具有更多属性的滑动窗口,例如,CompanyYearFeature 1 等。但是你会得到一个大的神经网络模型。这不是问题,但可能需要更多的计算时间来训练它。

另一个重要的一点,神经网络是一个数学模型,因此,必须将定性属性(例如 Company 的值为 AB 的值转换为数字,例如:1(对于A)、2(用于B)等。

【讨论】:

谢谢,但我的理想输出是一个二进制变量(1 或 0),这意味着公司是否破产,所以它是分类。 没有相关问题,只是将你的集合组织为一个分类问题。这篇文章中的数据只是为了举例说明如何做到这一点。 @toddmo -- 我认为这个问题有点类似于下面的链接,应该通过循环神经网络来解决,但我不知道如何(stats.stackexchange.com/questions/137721/…)。 @Paolo Zaia -- 如果您能应用您建议的编辑,我将不胜感激,因为我不能这样做。

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

神经网络序列分类中的高损失

使用神经网络学习分类值的分布

使用卷积神经网络作为二元分类器

如何使用 keras 实现多标签分类神经网络

使用神经网络进行文本分类

使用 Matlab 进行基于神经网络的分类的参数设置