多元时间序列预测的支持向量回归

机器算法验证 时间序列 机器学习 支持向量机
2022-02-11 20:31:02

有没有人尝试使用支持向量回归进行时间序列预测?

我了解支持向量机并部分了解支持向量回归,但我不了解它们如何用于建模时间序列,尤其是多变量时间序列。

我试着读了几篇论文,但它们的水平太高了。任何人都可以用通俗的语言解释它们将如何工作,尤其是与多元时间序列相关的吗?

编辑:为了详细说明,让我试着用一个股票价格的例子来解释。

假设我们有 N 天的股票价格。然后,对于每一天,我们可以构建一个特征向量,在一个简单的例子中,可以是前一天的价格和当天的价格。每个特征向量的响应将是第二天的价格。因此,给定昨天的价格和今天的价格,目标将是预测第二天的价格。我不明白的是,假设我们有六个月的训练数据,你会如何更加强调最近的特征向量?

3个回答

在支持向量回归的上下文中,您的数据是时间序列这一事实主要从方法论的角度来看 - 例如,您不能进行 k 折交叉验证,并且在运行回测时需要采取预防措施/模拟。

基本上,支持向量回归是一种判别回归技术,与任何其他判别回归技术非常相似。你给它一组输入向量和相关的响应,它适合一个模型来尝试预测给定新输入向量的响应。另一方面,内核 SVR 在学习步骤之前将许多转换中的一种应用于您的数据集。这允许它在数据集中拾取非线性趋势,这与线性回归不同。一个好的内核可能是高斯 RBF——它有一个可以调整的超参数,所以尝试几个值。然后,当您对正在发生的事情有所了解时,您可以尝试其他内核。

对于时间序列,导入步骤是确定您的“特征向量”将是什么;每个都称为“特征”,可以从当前或过去的数据中计算出来,每个(响应)都将是您试图预测的任何时间段内的未来变化。以一只股票为例。随着时间的推移,你有价格。也许您的特征是 a.) 200MA-30MA 价差和 b.) 20 天波动率,因此您计算每个时间点的每个以及,即(比方说)该股票下一周的回报. 因此,您的 SVR 学习如何根据当前 MA 价差和 20 天成交量预测下一周的回报。(这个策略行不通,所以不要xxiyixtyt

如果您阅读的论文太难,您可能不想尝试自己实现 SVM,因为它可能很复杂。IIRC 有一个用于 R 的“kernlab”包,其中包含一个包含许多内核的内核 SVM 实现,这样可以提供一种快速启动和运行的方法。

我个人对所问问题的回答是“是”。您可能会认为有无数种特征可供选择来描述过去,这既有利也有弊。尝试选择与您可以简明扼要地向某人描述市场刚刚发生的事情的方式相对应的特征[例如“价格如果它与其他数字无关,则为 1.4" 不会告诉您任何信息]。至于SVM的目标,最简单的就是连续两天的价格差和价格比。由于这些直接对应于假设交易的命运,它们似乎是不错的选择。

我不得不迂腐地不同意 Jason 的第一句话:你可以在 raconteur 描述的情况下进行 k 折交叉验证,它很有用(附带条件我会解释)。它在统计上有效的原因是在这种情况下目标的实例没有内在的关系:它们是不相交的差异或比率。如果您选择使用比目标规模更高分辨率的数据,则有理由担心相关实例可能会出现在训练集和验证集中,这会损害交叉验证(相比之下,当应用SVM,您将没有可用的实例,其目标与您感兴趣的目标重叠)。

确实会降低交叉验证有效性的事情是市场行为是否随着时间而变化。有两种可能的方法来处理这个问题。首先是把时间作为一个特性加入(我没有发现这个很有用,可能是因为这个特性在未来的价值都是新的)。一个动机良好的替代方法是使用前向验证(这意味着在滑动时间窗口上测试您的方法,并在此窗口之后的时间段内测试它。如果行为随着时间而变化,这句话归因于 Niels Bohr “预测是非常困难的,尤其是关于未来的”特别合适。文献中有一些证据表明金融市场的行为确实会随着时间而改变,通常会变得更有效率,

祝你好运!

Quantum Financier上有一个使用 SVM 预测金融系列的例子。它可以很容易地从分类系统(长/短)转换为回归系统。