【问题标题】:K-Means on time series data with Apache Spark使用 Apache Spark 处理时间序列数据的 K-Means
【发布时间】:2016-11-16 07:59:09
【问题描述】:

我有一个数据管道系统,其中所有事件都存储在 Apache Kafka 中。有一个事件处理层,它使用并转换该数据(时间序列),然后将生成的数据集存储到 Apache Cassandra。

现在我想使用 Apache Spark 来训练一些机器学习模型以进行异常检测。这个想法是在过去的数据上运行 k-means 算法,例如一天中的每一小时。

例如,我可以选择下午 4 点到 5 点之间的所有事件并为该时间间隔构建模型。如果我应用这种方法,我将得到正好 24 个模型(每个小时的质心)。

如果算法运行良好,我可以将间隔的大小减少到例如 5 分钟。

这是对时间序列数据进行异常检测的好方法吗?

【问题讨论】:

    标签: algorithm apache-spark k-means apache-spark-mllib anomaly-detection


    【解决方案1】:

    我不得不说找到Outliers 的策略很好,但你需要注意几个步骤。首先,使用每 5 分钟的所有事件为事件创建一个新的质心。我认为 tahat 可能不是一个好主意。

    因为使用过多的质心,您可能很难找到异常值,而这正是您不想要的。

    那么让我们看看一个好的策略:

    1. 为您的 K-means 找到合适的 K 数。

      这一点非常重要,如果你有太多或太少,你可能会对现实做出不好的表示。所以选择good K
    2. 获取良好的训练集

      因此,您无需每次和每天都使用所有数据来创建模型。你应该举一个例子来说明你的正常情况。你不需要拿不正常的东西,因为这是你想要找到的。所以用它来创建你的模型,然后找到集群。
    3. 测试一下!

      您需要测试它是否工作正常。你有什么奇怪的例子吗?你有一套你现在并不奇怪。看看它是否正常工作。为了帮助它,您可以使用Cross Validation

    那么,你的idea好不好?是的!它可以工作,但请确保不要在集群中过度工作。当然,您可以利用每天的数据集来训练更多模型。但是让这个过程每天一次找到质心。并让Euclidian distance 方法查找您的组中的内容。

    希望对你有所帮助!

    【讨论】:

      猜你喜欢
      • 2015-01-16
      • 2015-12-09
      • 2015-06-02
      • 2017-11-01
      • 2014-09-30
      • 2014-12-31
      • 2011-03-31
      • 2019-05-01
      • 2017-11-20
      相关资源
      最近更新 更多