基于java增量模型的离群点检测
我正在处理流数据(使用Java和Apache Flink),我想执行异常值检测。我有一个网络,每个传感器接收一个流。 然后,他们将其流的采样版本发送到“leader”节点,该节点组合所有采样并生成一个全局模型
然后,它将全局模型发送给每个孩子。孩子们将使用这个模型来检测异常值。 这必须以连续的方式发生(即,每次领导者接收到x个样本时,它都会更新模型并进行广播)
我在论文/方法中遇到的问题是,为了构建模型,我需要所有的数据,而这是不可能的。对于领导者来说,存储其收到的所有样本也是不可行的
我正在写一个小例子:
传感器A接收一些数据并将其发送给领导者
传感器B接收一些数据并将其发送给领导者
领导者使用接收到的值来构建一个广播的模型
两个传感器接收其他数据,对于每个值,它们使用接收到的模型来执行异常值检测。 然后他们将新数据发送给领导
领导者更新模型并将新更新的模型发送给孩子们
我可以使用哪种方法来获得这种行为
# 1 楼答案
实现这一点的一种方法是让领导者将模型更新写入卡夫卡主题,并让a和B从卡夫卡读取这些模型更新(除了传感器流)
更新:
检测异常值/异常的一个非常简单的算法是t-digest(是的,它是增量工作的)This page from mapr将引导您获得更多信息