时间序列二进制分类

Posted

技术标签:

【中文标题】时间序列二进制分类【英文标题】:Time series binary classfication [closed] 【发布时间】:2020-08-03 14:05:14 【问题描述】:

问题:

我有一个关于对冲基金的数据集。它包含每月对冲基金回报和一些财务指标。我计算了从 2010 年到 2019 年 12 月每个月的指标。 (2889 个月度数据)我想对下个月的这些指标进行二元分类并预测对冲基金的类别基础。我想从 T 时间对 T+1 进行预测。我想使用随机森林和其他分类器(决策树、KNN、SVM、逻辑回归)。我知道这个数据集是时间序列问题,我如何将其转换为机器学习问题。

对于在建模、特征工程和编辑此数据集时应遵循何种方法或方法,我愿意听取您的建议和建议。

其他问题:

1)在使用这些数据进行训练和测试时如何进行数据拆分? 0,80-0,20?。您可以推荐其他任何验证方法吗?

2)有些基金是后期加进去的,所以并不是所有的基金都有等长的数据,比如2015年成立的“AEB”基金,2015年之前就没有数据了。这样的基金有几个,是不是导致问题,还是删除它们并从数据集中删除它们更好?我一共有27个不同的基金数据。 3)另外,我把对冲基金的股票代码/名称改成了数字ID,是否可以做虚拟编码,对性能会更好吗?

示例数据集:

     Date    | Fund Name / Ticker | sharpe | sortino | beta  | alpha | target |  
 ------------|--------------------|--------|---------|-------|-------|--------|-- 
  31.03.2010 | ABC                | -0,08  | 0,025   | 0,6   | 0,13  | 1      |  
  31.03.2010 | DEF                | 0,41   | 1,2     | 1,09  | 0,045 | 0      |  
  31.03.2010 | SDF                | 0,03   | 0,13    | 0,99  | -0,07 | 1      |  
  31.03.2010 | CBD                | 0,71   | -0,05   | 1,21  | 0,2   | 1      |  
  30.04.2010 | ABC                | 0,05   | -0,07   | 0,41  | 0,04  | 0      |  
  30.04.2010 | DEF                | 0,96   | 0,2     | 1,09  | 1,5   | 0      |  
  30.04.2010 | SDF                | -0,06  | 0,23    | 0,13  | 0,23  | 0      |  
  30.04.2010 | CBD                | 0,75   | -0,01   | 0,97  | -0,06 | 1      |  
  :          | :                  | :      | :       |  :    | :     | :      |  
  :          | :                  | :      | :       |  :    | :     | :      |  
  30.12.2019 | ABC                | 0,05   | -0,07   | 0,41  | 0,04  | 1      |  
  30.12.2019 | DEF                | 0,96   | 0,2     | 1,09  | 1,5   | 0      |  
  30.12.2019 | SDF                | -0,06  | 0,23    | 0,13  | 0,23  | 0      |  
  30.12.2019 | CBD                | 0,75   | -0,01   | 0,97  | -0,06 | 1      |  
  30.12.2019 | FGF                | 1,45   | 0,98    | -0,03 | 0,55  | 1      |  
  30.12.2019 | AEB                | 0,25   | 1,22    | 0,17  | -0,44 | 0      |  

我的想法和第一次尝试: 我模拟了一个例子。我使用了这样的方法,我将(-1)移回了目标变量。所以每一行都显示了下个月基金所在的班级。我这样做是因为这个,我想在那个月开始之前预测下个月。从 T 预测到 T+1。但是这个模型给出的结果很差。(%43)

此模型数据集的视图:

     Date    | Fund Name / Ticker | sharpe | sortino | beta  | alpha | target |  
 ------------|--------------------|--------|---------|-------|-------|--------|-- 
  31.03.2010 | ABC                | -0,08  | 0,025   | 0,6   | 0,13  | 1      |  
  31.03.2010 | DEF                | 0,41   | 1,2     | 1,09  | 0,045 | 0      |  
  31.03.2010 | SDF                | 0,03   | 0,13    | 0,99  | -0,07 | 1      |  
  31.03.2010 | CBD                | 0,71   | -0,05   | 1,21  | 0,2   | 1      |  
  30.04.2010 | ABC                | 0,05   | -0,07   | 0,41  | 0,04  | 0      |  
  30.04.2010 | DEF                | 0,96   | 0,2     | 1,09  | 1,5   | 0      |  
  30.04.2010 | SDF                | -0,06  | 0,23    | 0,13  | 0,23  | 0      |  
  30.04.2010 | CBD                | 0,75   | -0,01   | 0,97  | -0,06 | 1      |  
  :          | :                  | :      | :       |  :    | :     | :      |  
  :          | :                  | :      | :       |  :    | :     | :      |  
  30.12.2019 | ABC                | 0,05   | -0,07   | 0,41  | 0,04  | 0      |  
  30.12.2019 | DEF                | 0,96   | 0,2     | 1,09  | 1,5   | 0      |  
  30.12.2019 | SDF                | -0,06  | 0,23    | 0,13  | 0,23  | 1      |  
  30.12.2019 | CBD                | 0,75   | -0,01   | 0,97  | -0,06 | 1      |  
  30.12.2019 | FGF                | 1,45   | 0,98    | -0,03 | 0,55  | 0      |  
  30.12.2019 | AEB                | 0,25   | 1,22    | 0,17  | -0,44 | ?      |  

【问题讨论】:

请注意cross-posting 多个 SE 站点中的相同问题是not allowed 【参考方案1】:

您可以找到许多方法。时间序列具有挑战性,一开始的结果很差也没关系。我建议您执行以下操作:

在数据集中添加一些 lags 作为附加列。你想预测 t+1 并且你有 t,所以尝试同时计算 t-1t-2t-3 等。 为了知道您可以拥有的t-x 的最佳数量,请尝试绘制ACFPACF 并查看阴影区域中出现的第一个滞后 滞后可能会提高您的准确性 在建模时尝试规范化/标准化您的数据 试试看你的时间序列是不是random walk,如果是,最近有很多论文试图解决随机游走预测的问题 如果您的数据集足够大,请尝试使用一些神经网络,例如 LSTM、RNN、GAN 等,它们可能比您提到的浅层模型更好 真心建议大家看看Jason Brownlee on Time Series hereJason 的教程@Jason 超级聪明,你可以随时在他的教程中添加cmets。他也反应灵敏!!

【讨论】:

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

使用 Keras 对多个独立序列进行二进制分类

用于序列二进制分类的 Keras LSTM 模型

基于过去和未来值的每个时间序列步骤的二进制分类

为二进制分类调整 tensorflow LSTM 代码

具有二进制数据的朴素贝叶斯分类器

用于二进制分类的 OneClassSVM