时间序列预测(最终使用Python)

27 投票
7 回答
19918 浏览
提问于 2025-04-16 03:23

时间序列预测或回归有哪些算法呢?

  • 那使用神经网络怎么样?有没有关于这个主题的好资料?
  • 有没有Python库或者代码片段可以帮助我们?

7 个回答

5

两种方法

处理时间结构化输入以进行分类、回归、聚类、预测等相关任务,有两种方式:

  1. 专用时间序列模型: 这种机器学习算法直接使用时间序列数据。这样的模型就像一个黑箱,可能很难解释它的行为。比如自回归模型就是一个例子。
  2. 基于特征的方法: 在这种方法中,时间序列会被转换成另一种可能维度更低的表示方式。这意味着特征提取算法会计算时间序列的一些特征,比如平均值或最大值。然后,这些特征会作为特征矩阵传递给“普通”的机器学习模型,比如神经网络、随机森林或支持向量机。这种方法的好处是结果更容易解释。此外,它还让我们能够使用成熟的监督学习理论。

tsfresh 计算大量特征

Python 包 tsfresh 可以从包含时间序列的 pandas.DataFrame 中计算出大量这样的特征。你可以在 http://tsfresh.readthedocs.io 找到它的文档。

enter image description here

免责声明:我是 tsfresh 的作者之一。

5

我对Python的库不太了解,不过在R语言里有一些很不错的开源预测算法。你可以看看这个forecast包,里面有关于时间序列预测的代码和参考资料。

73

传统的时间序列回归方法有:

  • 自回归模型(关于它们有很多文献)

  • 高斯过程

  • 傅里叶分解或类似方法,用来提取信号中的周期性成分(也就是数据中隐藏的波动)

我知道的其他不太常见的方法有:

  • 慢特征分析,这是一种提取时间序列驱动因素的算法,比如说混沌信号背后的参数

  • 神经网络(NN)方法,可以使用递归神经网络(即专门处理时间信号的网络)或经典的前馈神经网络,这种网络接收过去数据的一部分作为输入,尝试预测未来的某个点;后者的优点是递归神经网络在考虑远期数据时有困难

在我看来,对于金融数据分析,不仅要得到时间序列的最佳预测,还要有可靠的置信区间,因为最终的投资策略可能会因此有很大不同。像高斯过程这样的概率方法可以“免费”提供这种置信区间,因为它们会返回未来可能值的概率分布。而使用经典统计方法,你就得依赖自助法技术

有很多Python库提供统计和机器学习工具,以下是我最熟悉的一些:

  • NumPySciPy是Python科学编程的必备工具
  • 有一个Python接口可以使用R,叫做RPy
  • statsmodel包含经典的统计模型技术,包括自回归模型;它与流行的数据分析包Pandas配合得很好
  • scikits.learnMDPMLPyOrange是机器学习算法的集合
  • PyMC是一个Python模块,实施贝叶斯统计模型和拟合算法,包括马尔可夫链蒙特卡罗方法。
  • PyBrain包含(其中之一)前馈和递归神经网络的实现
  • 高斯过程网站上有GP软件的列表,包括两个Python实现
  • mloss是一个开源机器学习软件的目录

撰写回答