我正在處理流式數據(使用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