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