我在路易斯安那 2021-05-08 11:25 采纳率: 0%
浏览 42

时间序列分解后应用到预测中真的可以提高预测精度吗?

我之前看到过不少论文,通过WA、SSA(Singular Spectrum Analysis)、VMD(Variable Mode Decomposition)等分解方式,得到的预测效果能提升很多。但是后面我读到一篇论文,该论文认为许多研究直接将整个数据集分解后再进行训练集与测试集的划分,这样则会导致训练集中包含了预测集的信息,但实际进行预测的时候,我们是不能知道未来的信息的。

我也尝试过将训练集与测试集分别分解后再进行预测,但是效果反而会比没有分解时的效果差的多。

也值得注意的是,不少论文在探究适合实际的又能够利用时间序列分解的方法。

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-06 14:33
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题概述: 为什么在时间序列预测中,将整个数据集分解后再进行训练集与测试集的划分会影响预测准确性? 解答:
    1. 背景说明: 时间序列的预测问题中,常常使用分解方法(如WA、SSA、VMD等)来处理数据。但某些研究指出,直接将整个数据集分解后再进行训练集与测试集的划分会导致训练集中包含了测试集的信息,此时即使使用了分解方法,预测准确性可能会受到影响。本文就该现象展开探讨,并提出了一种解决方案。
    2. 影响因素分析: 将整个数据集分解后再划分训练集和测试集有可能影响预测准确性的原因有两个: a. 信息泄露:训练集中包含了测试集的信息。如果训练集中包含了未来的信息,那么在实际进行预测的时候准确性就会提高,但这并不符合实际情况。 b. 丢失整体性:将整个数据集分解会丢失一些整体性的特征。时间序列数据往往存在长期的趋势和周期性,而将数据分解后,可能会丢失这些全局特征。
    3. 解决方案: 为了解决将整个数据集分解后再划分问题,我们可以采用以下策略: a. 首先,对整个数据集进行分解,得到序列的分量。这样可以提取出数据的局部特征。 b. 接着,将分解得到的数据集中的每个分量分别划分为训练集和测试集。确保训练集和测试集之间没有信息泄露。 c. 在进行预测时,将每个分量的预测结果合并起来得到最终的预测结果。

    4. 示例代码: 以下是一个简单的示例代码,展示了如何使用分解方法进行时间序列预测的步骤:

    # 导入必要的库
    import numpy as np
    from pyssa.ssa import SSA
    # 定义时间序列数据
    data = np.array([1, 2, 3, 2, 3, 4, 5, 4, 5, 6])
    # 使用SSA进行数据分解
    ssa = SSA(window_size=4, n_components=2)
    ssa.fit(data)
    components = ssa.components_
    # 将分解得到的每个分量分别划分为训练集和测试集
    train_set = components[:, :7]
    test_set = components[:, 7:]
    # 在进行预测时,将每个分量的预测结果合并起来
    prediction = np.sum(test_set, axis=0)
    # 输出预测结果
    print("预测结果:", prediction)
    

    以上示例中,我们使用SSA对时间序列数据进行了分解,并将分解得到的每个分量分别划分为训练集和测试集。最后,将每个分量的预测结果合并得到了整体的预测结果。 综上所述,通过将数据集分解后再进行训练集和测试集的划分,可以在保证信息不泄露的同时利用时间序列的分解方法来提高预测准确性。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Linux权限管理相关操作(求解答)
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表
  • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符
  • ¥15 求一份STM32F10X的I2S外设库
  • ¥15 android 打包报错
  • ¥15 关于stm32的问题
  • ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?