首页 > 解决方案 > 时间序列二分类

问题描述

问题:

我有一个关于对冲基金的数据集。它包含每月对冲基金回报和一些财务指标。我计算了从 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 | ?      |  

标签: machine-learningtime-seriesclassificationsvmrandom-forest

解决方案


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

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

推荐阅读