我正在处理流式数据(使用Java和Apache Flink),我想执行异常值检测。我有一个网络,每个传感器接收流。 然后,他们将其流的采样版本发送到组合所有样本并生成全局模型的“领导者”节点。基于模型的增量式异常值检测
之后,它将全局模型发送给每个孩子。孩子们将使用这个模型来检测异常值。 这必须以连续的方式发生(即每次领导者接收x个样本时,其更新模型并广播它)。
我发现的论文/方法遇到的问题是,为了构建模型,我需要拥有所有数据,这是不可能的。领导者也不可能存储它收到的所有样本。
我写了一个小例子:
传感器A接收到一些数据并将其发送到领导
传感器B接收的一些数据并将其发送到领导
领域的领导者使用收到值来构建广播的模型。
两个传感器接收其他数据,对于每个值,他们使用接收到的模型执行异常值检测。 然后他们将新数据发送给领导。
领导者更新模型并将新的更新模型发送给子女。
我可以使用哪种方法来获得这样的行为?
是的,我完全是这样做的。我在问你是否知道任何可用于此目的的异常值检测模型。特别是,应该可以逐步更新模型。 – LizardKing
我已经更新了我的上面的答案,建议使用t-digest。 –
谢谢!我一直在研究t-digest,但它似乎用于计算阈值(http://koff.io/posts/using-t-digest/)。我不知道如何在我的数据流中使用它来找出异常,根据我的理解,我应该使用一个模型,然后使用t-digest给出的阈值(如本项目https:// github .com/pollo/anomaly_detection/blob/master/src/main/java/org/apache/mahout/anomalydetection/EKGAnomalyDetection.java,但问题在于该模型不可序列化并且不能逐步运行)。 – LizardKing