时间序列二元分类
Time series binary classfication
问题:
我有一个关于对冲基金的数据集。它包含月度对冲基金 returns 和一些财务指标。我计算了从 2010 年到 2019 年 12 月每个月的指标。 (2889 月度数据)我想根据这些指标对冲基金 class 化并预测下个月对冲基金的 class 基础。我想从 T 时间开始预测 T+1。我想使用随机森林和其他 classifiers(决策树、KNN、SVM、逻辑回归)。我知道这个数据集是时间序列问题,如何将其转换为机器学习问题。
对于您在建模、特征工程和编辑此数据集时应遵循何种方法或方法,我愿意接受您的建议和建议。
其他问题:
1)使用这些数据进行训练和测试时,如何进行数据拆分? 0,80-0,20?。您是否可以推荐任何其他验证方法?
2)有些基金是后来加入数据的,所以并不是所有的基金都有等长的数据,比如2015年成立的"AEB"基金,2015年之前就没有数据了,有几个这样的资金,它们会引起问题,还是删除它们并将它们从数据集中删除更好?我总共有 27 个不同的基金数据。
3)另外,我把hedge funds的tickers/names改成了numeric ID,可不可以做dummy encoding,性能会不会更好?
示例数据集:
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)移回目标变量。所以每一行都显示了 class 其中基金所在的 month.I 因为这个,我想在那个月开始之前预测下个月。从 T.But 预测到 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 | ? |
您可以找到许多方法。时间序列是有挑战性的,一开始结果不好也没关系。我建议您执行以下操作:
- 在您的数据集中添加一些
lags
作为附加列。你想预测 t+1
并且你有 t
,所以也尝试计算 t-1
、t-2
、t-3
等
- 为了知道您可以拥有的
t-x
的最佳数量,请尝试绘制 ACF
和 PACF
绘图并查看出现在阴影中的第一个滞后地区
- 滞后可能会提高您的准确性
- 尝试在建模时normalize/standardize你的数据
- 看看你的时间序列是不是
random walk
,如果是的话,最近有很多论文试图解决随机游走预测的问题
- 如果你的数据集足够大,尝试使用一些神经网络,如 LSTM、RNN、GAN 等,它们可能比你提到的浅层模型更好
- 我真的建议你看看 Jason Brownlee on Time Series here Jason 的教程,他非常聪明,你可以随时在他的教程中添加评论。他也有求必应!!
问题:
我有一个关于对冲基金的数据集。它包含月度对冲基金 returns 和一些财务指标。我计算了从 2010 年到 2019 年 12 月每个月的指标。 (2889 月度数据)我想根据这些指标对冲基金 class 化并预测下个月对冲基金的 class 基础。我想从 T 时间开始预测 T+1。我想使用随机森林和其他 classifiers(决策树、KNN、SVM、逻辑回归)。我知道这个数据集是时间序列问题,如何将其转换为机器学习问题。
对于您在建模、特征工程和编辑此数据集时应遵循何种方法或方法,我愿意接受您的建议和建议。
其他问题:
1)使用这些数据进行训练和测试时,如何进行数据拆分? 0,80-0,20?。您是否可以推荐任何其他验证方法?
2)有些基金是后来加入数据的,所以并不是所有的基金都有等长的数据,比如2015年成立的"AEB"基金,2015年之前就没有数据了,有几个这样的资金,它们会引起问题,还是删除它们并将它们从数据集中删除更好?我总共有 27 个不同的基金数据。 3)另外,我把hedge funds的tickers/names改成了numeric ID,可不可以做dummy encoding,性能会不会更好?
示例数据集:
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)移回目标变量。所以每一行都显示了 class 其中基金所在的 month.I 因为这个,我想在那个月开始之前预测下个月。从 T.But 预测到 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 | ? |
您可以找到许多方法。时间序列是有挑战性的,一开始结果不好也没关系。我建议您执行以下操作:
- 在您的数据集中添加一些
lags
作为附加列。你想预测t+1
并且你有t
,所以也尝试计算t-1
、t-2
、t-3
等 - 为了知道您可以拥有的
t-x
的最佳数量,请尝试绘制ACF
和PACF
绘图并查看出现在阴影中的第一个滞后地区 - 滞后可能会提高您的准确性
- 尝试在建模时normalize/standardize你的数据
- 看看你的时间序列是不是
random walk
,如果是的话,最近有很多论文试图解决随机游走预测的问题 - 如果你的数据集足够大,尝试使用一些神经网络,如 LSTM、RNN、GAN 等,它们可能比你提到的浅层模型更好
- 我真的建议你看看 Jason Brownlee on Time Series here Jason 的教程,他非常聪明,你可以随时在他的教程中添加评论。他也有求必应!!