【问题标题】:Is it a good idea to use PCA before running Fb-prophet?在运行 Fb-prophet 之前使用 PCA 是个好主意吗?
【发布时间】:2020-01-12 11:45:29
【问题描述】:

我试图在具有 18 个特征的时间序列数据中找到异常。由于 Fb-prophet 不允许预测多元时间序列,我想知道在降维之前使用 PCA 是否是个好主意?我每 15 分钟就有 2 年的数据。

每个功能都有大量随机时间戳的缺失数据。我的数据被部分标记。我了解 PCA 可能会消除异常情况。有没有我可以遵循的替代技术?

【问题讨论】:

    标签: machine-learning time-series pca anomaly-detection facebook-prophet


    【解决方案1】:

    我将尝试通过将您的问题分成 3 个部分来回答,因为我认为您将三个不同的概念混为一谈,或者至少我不清楚您实际尝试建模的是什么。

    1) Facebook 的预言机模型的主要目标是通过将单变量时间序列建模为时间函数来进行预测。主模型方程的形式为

    y(t) = g(t) + s(t) + h(t) + error_t
    

    其中 g 负责趋势,s 负责季节性,h 负责假期影响。

    因此,我不会说先知模型以任何方式适合检测时间序列中的异常值。 Prophet 可用于对 y 进行预测,无论您的数据中是否存在异常值(我假设这就是您所说的异常值?),但我认为它对异常值检测没有用。

    2) 关于时间序列的 PCA: 为了减少时间序列中的维度(在有意义的情况下,例如当您的特征高度相关时),确实可以使用某些版本的 PC。

    如果您可以现实地假设您的序列是平稳的、方差和均值不会随时间变化,那么您也许可以避免使用静态 PCA。否则,请查看动态 PCA 和/或动态因子分析。

    同样,如果您所说的异常是指异常值,我也不知道 PCA 将如何消除异常。

    3) 关于检测时间序列中的异常值: 我最近看到了应用隔离森林来检测时间序列中的异常(如异常值)的应用。这也适用于多维空间。

    也许这类模型可能更适合您的任务。


    希望对您有所帮助,关于您的问题的更多信息,我可能会说更多。

    【讨论】:

    • 1. @Jean_N 我的数据具有来自机器不同传感器的值。我所说的异常是指错误的数据点,这些数据点可能是异常值或任何不正常的传感器行为。 2.我已经应用了隔离林和一类SVM。但我最大的问题是没有适当的标签(用于错误点)来计算我的准确性或验证它们。
    • 2.我已经应用了隔离林和一类 SVM。但我最大的问题是没有适当的标签(用于错误点)来计算我的准确性或验证它们。 3. 我已将数据拆分为测试和训练。对于 fb 先知,我采取的方法是:计算预测值和实际值之间的距离。与实际值相差很大的预测是异常的。但是这种方法需要我在干净的数据上训练我的模型。
    • 好的,我知道你用这个去哪里了。但我觉得这很奇怪——Prophet 无法知道什么是异常值,什么不是,因此这些观察结果会影响拟合本身——这可能会导致模型不佳。最后,如果您不能相信均值的估计值,那么与观测值(潜在异常值)的距离也不是很可信。
    • 关于隔离林:如果您有未标记的数据,则您有未标记的数据,就是这样,如果没有标签,则无法计算准确性。尽管如此,IF 仍会为您估计在多维特征空间上与其他点相距甚远的点。假设这些点是异常值是合理的。最后 - 您提到您的 一些 数据已被标记。您可以在这些点上应用隔离森林(在训练和测试中拆分)并检查那些被标记为异常值的测试集的准确性。这将使您有信心在整个数据集上应用 IF
    • 谢谢。听起来不错。我会试试的。你会建议使用 LSTM 自动编码器吗?这是建议的。但我认为我的数据集太大了。我每 15 分钟就有两年的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    相关资源
    最近更新 更多