文章目录
- MIDAS: Microcluster-Based Detector of Anomalies in Edge Streams
- 0 前言
- 1 問題
- 2 MIDAS演算法
- 2.0 三大前提
- 2.1 前提解說
- 2.2 定義 Anomaly 與 probability level ϵ {ϵ} ϵ
- 2.3 考量時序與空間關係 Incorparal Relations
- 3 實驗
- 4 結論
MIDAS: Microcluster-Based Detector of Anomalies in Edge Streams
- paper
- official github (C++ version)
- dataset
0 前言
本篇基於動態圖譜 dynamic graph 來做異常偵測 anomaly detection。至2020年止,現有的方法大多專注於 individually surprising edges,但是這種方式將可能錯失大量可疑活動。因此,在本篇中提出MIDAS,主要專注於microcluster anomalies(後續將詳細解說何為microcluster),像是DNS attack, lockstep behavior。而本篇的三大貢獻在於:
- 提出False Possitive probability的理論上限與下限
- 在合理的記憶體與時間內,較 sota(state-of-the-art)快上108 - 505倍
- 能夠提升比 sota 高出 46 ~ 52% 的準確度(AUC)
以下將由問題定義出發,解說MIDAS演算法,最後講解實驗與結論。
1 問題

1.1 三大目標
相較於上圖中的前兩篇論文,本篇除了先前研究就已經能達到在洽當的記憶體使用量與運算時間達成異常偵測,本篇更多了microcluster detection 和 False positive probability,以下有詳細定義。
- Microcluster Detection: 這裡的 microcluster 在本篇中定義為短時間內爆量的活動,含有重複的 edge / node。
- Guarantees on False Positive Probability(提出偽陽性的範圍): 給予任何一個使用者定義的probability level ϵ {ϵ} ϵ (e.g. 1%)。
- Constant Memory and Update Time: 記憶體的使用量和計算時間,不可隨拓樸的node 或 edge 漸多而增加。
1.2 符號定義
首先,會有一個隨時間演進的 graph 記作 G \mathcal{G} G, 所有 node 的集合記作 ν {\nu} ν ,至於 stream edges 記作 ξ = { e 1 , e 2 , e 3 , . . . } {\xi =\{e_1, e_2, e_3, ...\}} ξ={e1,e2,e3,...} ,而每個 edge 記作 e i = ( u i , v i , t i ) {e_i = (u_i, v_i, t_i)} ei=(ui,vi,ti) , u ∈ ν {u \in {\nu}} u∈ν 表示source node, v ∈ ν {v \in {\nu}} v∈ν 表示destination node, t {t} t 則表示這個 edge 加入的時間。因此這個 ν {\nu} ν 並非事先就定義好的,有可能因為後續有新的 node 或是 edge 加入而擴增。
若是要實作的話,可以實作於 directed graph,undirected graph 以及 multigraph。只是套用在undirected graph 必須先自行將一條 edge 生成雙向的資料,而這裡的 multigraph 指的是 edge可以被同一個 pair 的 sourceIp 和 destinationIp 多次生成。另外,在不同時間點的 edge 是可以同時給予的,因為在很多應用中時間都是以離散方式處理的。
2 MIDAS演算法
2.0 三大前提
- 假設我們所使用的都是 streaming 資料且是 hypothesis testing based
- 事先定義好什麼樣算是 anomalous,並且設定 probability level ϵ {ϵ} ϵ
- 除了上述兩點,額外考量Incorporating Relations 像是:時序關係 (temporally) 與空間關係(spatially) 在此稱作:MIDAS-R。其中空間關係指的是相鄰的nodes
基於 MIDAS: Streaming Hypothesis Testing Approach,以下舉例一個microcluster的例子

上圖中我們觀察單一的 edge,可以看到在
t
=
10
{t=10}
t=10 出現一個較大型短時間內暴增的活動量。以上圖為例子,當時間到達
t
=
10
{t=10}
t=10 時,以
S
u
v
{S_{uv}}
Suv 來表示
t
<
=
10
t<=10
t<=10 之前所累積的 edge 內容,另外以
a
u
v
{a_{uv}}
auv 紀錄每一個單一時刻的 edge,像是
t
=
10
t=10
t=10 這一時間點的 edge內容,並且在下一個時間點重置
a
u
v
{a_{uv}}
auv。
2.1 前提解說
2.1.1 Stream Data Structure
為了讓記憶體使用量不隨 Graph 增大而增大,在本方法裡並不會追蹤edge在單一時間點時的樣子。另外,並不會在事先取得 node 和 edges 的資料集合,因為後續可能會有新加入的 node 或是 edge,為了規避上述兩件事,在這裡採用 Count-Min-Sketch data structure (CMS) (Cormode and Muthukrishnan 2005)。
2.1.2 Hypothesis Testing Framework
為了不對資料附加更多假設,本篇採用若假說來計算 mean level:某個 edge 出現的平均機率。在這裡引入 chi-squared goodness-of-fit 來計算,給定 S u v ^ \hat{S_{uv}} Suv^ 和 a u v ^ \hat{a_{uv}} auv^ 來近似真實的 S u v {S_{uv}} Suv 與 a u v {a_{uv}} auv。
chi-squared的計算公式,為將各個不同類別計算 ( o b s e r v e d − e x p e c t e d ) 2 ( e x p e c t e d ) {\frac{(observed - expected)^2}{(expected)}} (expected)(observed−expected)2 再加總。在這裡將依照時間點,分出兩個類別,分別是 t = 10 t=10 t=10 和 t < 10 t<10 t<10,當要計算mean level 的時候,會將需要的內容記作以下:
| type | ${t=10} | t < 10 {t<10} t<10 |
|---|---|---|
| o b s e r v e {observe} observe | a u v {a_{uv}} auv | S u v − a u v S_{uv}-a_{uv} Suv−auv |
| e x p e c t e d {expected} expected | S u v t {\frac{S_{uv}}{t}} tSuv | t − 1 t S u v {\frac{t-1}{t}S_{uv}} tt−1Suv |
套用上 chi-squared 可推倒出以下公式:

透過這個公式計算出來的數值,稱作 Anomaly score,這個分數僅是一個分數,尚未做出是否為anomaly的決定,後續會有詳細說明。以下展示當有一個新的edge加入時,以source-destination pair 記作
(
u
,
v
,
t
)
{(u, v, t)}
(u,v,t),MIDAS 演算法會怎麼做。

2.2 定義 Anomaly 與 probability level ϵ {ϵ} ϵ
有了 Anomaly score 以後,在這裡設定 probability level
ϵ
{ϵ}
ϵ 作為閥值,決定是否為異常。由於採用CMS Data Structure,當 probabilty 至少為
1
−
ϵ
2
{1 - {\frac{\epsilon}{2}}}
1−2ϵ 時,估計值
a
u
v
^
\hat{a_{uv}}
auv^ 滿足 :
a
u
v
^
≤
a
u
v
+
v
⋅
N
t
\hat{a_{uv}} \leq {a_uv} + v \cdot {N_t}
auv^≤auv+v⋅Nt
其中
N
t
{N_t}
Nt 表示在 t 時間點 edge 的總數量。CMS 會讓我們估計的 mean level 比真實的值來得大一些:
S
u
v
≤
S
u
v
^
{S_{uv}} \leq \hat{S_{uv}}
Suv≤Suv^,因此這裡我們將上述公式簡化為:
a
u
v
~
=
a
u
v
^
−
v
N
t
\tilde{a_uv} = \hat{a_{uv}} - v {N_t}
auv~=auv^−vNt
並且將上述公式套入剛剛的 Anomaly score 計算公式,我們可以得到:
X
2
~
=
(
a
u
v
~
−
S
u
v
^
t
2
)
t
2
S
u
v
^
(
t
−
1
)
\tilde{X^2} = (\tilde{a_{uv}} - {\frac{\hat{S_{uv}}}{t}}^2) {\frac {{t}^2}{\hat{S_{uv}}(t-1)} }
X2~=(auv~−tSuv^2)Suv^(t−1)t2
有了上述的公式,就可以定義出偽陽性機率的上下界線,False Positive Probability Bound。也就是說在
ϵ
\epsilon
ϵ 設定好以後,使用
X
2
~
\tilde{X^2}
X2~ 作為 test statistic 和閥值
X
1
−
ϵ
2
2
(
1
)
X^2_{1-{\frac{\epsilon}{2}}}(1)
X1−2ϵ2(1)。最後我們可以得到這樣的定義域:
P
(
X
~
2
>
X
1
−
ϵ
2
2
(
1
)
)
<
ϵ
P({\tilde{X}^2}> X^2_{1-{\frac{\epsilon}{2}}}(1)) < \epsilon
P(X~2>X1−2ϵ2(1))<ϵ
2.3 考量時序與空間關係 Incorparal Relations
relational manner 考量關係的目的是將時序上和空間上相鄰的節點群組起來。
2.3.1 時序關係
在時序關係上做一個比較彈性的調整,當越接近當前時間點的時候影響力越大,越舊的時間點影響力越低。實作上,不清空 a u v {a_{uv}} auv,而是將前一個 a u v {a_{uv}} auv 以固定的遞減率 α ∈ ( 0 , 1 ) {\alpha \in (0, 1)} α∈(0,1) 遞減來自前一個時間點的影響。
2.3.2 空間關係
聚焦在忽然出現的大型群組,像是單一的sourceIP 忽然產生多條edge連至 destinationIP,或是一小群的 node 忽然創造出異常巨量的 edge 互相連結。以上這些情況都可以從 node 的角度來觀察,並且以 CMS Data Strucutre 來追蹤過去數量,期待計算出任一個 node 的相鄰 edge 數量。
當我們給定任一 e d g e ( u , v ) {edge (u, v)} edge(u,v),就能計算出三種 Anomaly score,分別是第一種 e d g e ( u , v ) {edge(u, v)} edge(u,v),第二種 n o d e u {node u} nodeu,最後一種 n o d e v {node v} nodev。後續在使用上有兩種取法,可以取這三種 Anomaly score 的最大值,也可以取三者的平均,而在本篇的後續實驗當中是取最大值。
以下為考量時序與空間關係後的演算法,稱作 MIDAS-R。

3 實驗
3.0 基本介紹
3.0.1 資料集
在實驗當中總共使用三種資料集,分別是
| Dataset | 資料量 | 資料時間 | 資料時序 | 備註 |
|---|---|---|---|---|
| DARPA | 4.5M IP之間的通聯, 9.4K ScourceIP, 2.3K destinationIP. | - | 每分鐘87.7K | 1. 來源:Lippmann et al.1999 2. 資料欄位(srcIp, dstIP, timestamp, attack) attack 欄位標註是否異常。 3. 異常率 anomaly rate: 23.8% |
| TwitterSecurity | 2.6M tweet samples | May-Aug 2014 | 80 time ticks/day | 來源:Rayana and Akoglu 2015; Rayana and Akoglu 2016 |
| TwitterWorldCup | 1.7M tweet samples | 2014 season (June 12-July 13) | 5 minute sample rate (8640 time points) | 來源:Rayana and Akoglu 2015; Rayana and Akoglu 2016 |
3.0.2 對照組 Base line
在 Related work 中,僅有 RHSS 和 SEDANSPOT 這兩個方法為 on edge streams 且為edge提供分數,但由於RHSS在DARPA資料集表現並不理想,因此下列實驗結果僅納入SEDANSPOT作為實驗的對照組。SEDANSPOT的實作方式是採用personalised pageRank來達成。
3.0.3 評估方式 Evaluate Metrics
- True Positive Rate(TPR)
- False Positive Rate(FPR)
- ROC 曲線(TPR vs. FPR)
- ROC 曲線下面積(AUC)
- 平均準確度分數
3.0.4 實驗設定與探討面向
論文內有詳細的參數設定,與所使用運算資源規格。這裡就不做贅述。在實驗中期望從三個面向來探討 MIDAS 與 MIDAS-R 的 rubustness。分別是第一,準確度Accuracy, 第二,拓展性 Scalability,也就是說在 Stream 長度漸長的時候,是否能夠依然有好的表現或是較少的運算時間。第三在真實世界的效益,這裡會以推特資料類比真實世界做案例探討。接下來會針對以上三個面向做更深入的探討。
3.1 準確度 Accuracy
從下圖可以看到,無論是 MIDAS 或是 MIDAS-R 的表現皆是遠遠超過 SedanSpot。
另外第二張圖可以看到,越靠左代表運行時間越短,越靠上代表準確度越高,因此在準確度與運行時間的比較,本篇所提出的方法也是十分顯著。


3.2 拓展性 Scalability
在下圖中呈現了當Graph的複雜度提升時,本篇所提出之演算法運算時間,仍是以線性增長,且表現仍十分顯著,表示本篇所提出之方法,無論在表現上或是運算時間上均具拓展性。可以注意到本篇論文所提供的運算時間表格,所需時間真的比對照組節省許多。


3.3 真實世界效益 Real -World Effectiveness
以下是以推特真實世界資料所推斷,在高峰值時屬於異常的狀況,可以看到以下的數字 1-10 對應到當時後推特上發生一些爆量討論時的對照表。時序表示法為日-月-年。
- 13-05-2014. Turkey Mine Accident, Hundreds Dead
- 24-05-2014. Raid.
- 30-05-2014. Attack/Ambush.
03-06-14. Suicide bombing - 09-06-14. Suicide/Truck bombings.
- 10-06-2014. Iraqi Militants Seized Large Regions.
11-06-2014. Kidnapping - 15-06-14. Attack
- 26-06-14. Suicide Bombing/Shootout/Raid
- 03-07-14. Israel Conflicts with Hamas in Gaza.
- 18-07-14. Airplane with 298 Onboard was Shot Down over
Ukraine. - 30-07-14. Ebola Virus Outbreak.

4 結論
在未來,本篇期待嘗試這樣的演算法在不同的 Graph 上,像是異質圖等。
總結本篇最大貢獻:
- Streaming Microcluster Detection: 提出一個能夠偵測短時間內爆大量的異常偵測
- 提出False Positive Rate的上下界線理論
- 提出在運算時間與運算資源上皆高效能的演算法:MIDAS 與 MIDAS-R
歡迎提出疑惑一同討論~
也歡迎更正筆者理解有誤之處,抑或是提出建議、互相砥礪,感謝閱讀!


