时间序列二进制分类
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-1
、t-2
、t-3
等。
为了知道您可以拥有的t-x
的最佳数量,请尝试绘制ACF
和PACF
并查看阴影区域中出现的第一个滞后
滞后可能会提高您的准确性
在建模时尝试规范化/标准化您的数据
试试看你的时间序列是不是random walk
,如果是,最近有很多论文试图解决随机游走预测的问题
如果您的数据集足够大,请尝试使用一些神经网络,例如 LSTM、RNN、GAN 等,它们可能比您提到的浅层模型更好
真心建议大家看看Jason Brownlee on Time Series hereJason 的教程@Jason 超级聪明,你可以随时在他的教程中添加cmets。他也反应灵敏!!
【讨论】:
以上是关于时间序列二进制分类的主要内容,如果未能解决你的问题,请参考以下文章