李海林,鄔先利
(華僑大學(xué) 信息管理系,福建 泉州 362021)(*通信作者電子郵箱1519998683@qq.com)
近幾年,時間序列的異常研究漸漸興起,成為時間序列數(shù)據(jù)挖掘的一個新熱點,并被廣泛地應(yīng)用于航天、醫(yī)療、網(wǎng)絡(luò)監(jiān)測等領(lǐng)域。航路飛行目標(biāo)的屬性異常檢測是確保及時發(fā)現(xiàn)飛行異常的關(guān)鍵問題,對此,王曉華等[1]通過在時間序列上的指派融合,對比預(yù)測值和觀測值差異,檢測航路目標(biāo)異常變化。在時間序列的異常檢測實際應(yīng)用中,劉煒等[2]從時間序列角度出發(fā),提出一種基于結(jié)構(gòu)相似度準(zhǔn)則的輸油管道泄漏檢測定位方法。
在時間序列異常研究中,相對于單個序列點的異常,大家更多關(guān)心的是序列在一段時間內(nèi)的異常變化情況[3]?,F(xiàn)有的方法有基于擴展符號聚集近似的水文時間序列異常檢測方法(Extended Symbolic Aggregate Approximation based anomaly mining of hydrological time series, ESAA)[4]。首先通過基于擴展符號聚集近似(Extended Symbolic Aggregate Approximation, ESAX)方法對時間序列進行重新描述,然后計算某序列與時間序列數(shù)據(jù)集中其他序列之間的累積距離,以此來衡量其異常程度。時間序列的累積距離越小,其為異常的可能性也就越小。該方法能較好地壓縮數(shù)據(jù)并發(fā)現(xiàn)異常,但對于時間序列的異常檢測,每增加一條新的序列就需要該序列與數(shù)據(jù)集中每一條序列作距離測量,如果數(shù)據(jù)集中的序列過少則不能較好地發(fā)現(xiàn)異常;然而,如果數(shù)據(jù)集中的序列過多則會耗時耗力,特別是對增量式數(shù)據(jù),更是不適用。后續(xù)研究在此問題上提出基于層級實時記憶算法的時間序列異常檢測方法[5]、基于滑動窗口預(yù)測的水文時間序列異常檢測方法(Time Series Outlier Detection based on sliding window prediction, TSOD)[6]等,通過對時間序列內(nèi)在模式關(guān)系進行學(xué)習(xí),建立預(yù)測模型,通過比較預(yù)測值和真實值的偏離程度來判斷數(shù)據(jù)是否異常。這類方法對含有噪聲的數(shù)據(jù)檢測率較低,對數(shù)據(jù)干擾較為敏感。鑒于傳統(tǒng)方法對增量式數(shù)據(jù)挖掘效率較低等問題,提出基于頻繁模式的時間序列異常檢測方法。
符號集合近似(Symbolic Aggregate Approximation, SAX)[7-8]是由Keogh在分段累積近似(Piecewise Aggregate Approximation, PAA)的基礎(chǔ)上提出的一種有效的時間序列數(shù)據(jù)離散化降維方法,通過將數(shù)值轉(zhuǎn)換為離散的符號來對時間序列重新描述,因其簡單易用、不依賴于具體實驗數(shù)據(jù)等特點而得到越來越多的關(guān)注。
SAX可分為3個步驟。
首先,用Z-score標(biāo)準(zhǔn)化方法對時間序列L={l1,l2,…,li,…,lm}(例如t=(0∶0.001∶2),L=sint)進行預(yù)處理,得到均值為0、標(biāo)準(zhǔn)差為1的序列C={c1,c2,…,ci,…,cm}。
(1)

然后,選擇合適的壓縮閾值w(例:w=1 000),對C進行 PAA表示,得到U={u1,u2,…,un}(例如U={0.65,1.35,0.82,-0.47,-1.33,-0.96,-0.20})其中m是序列L的長度,n為時間序列的PAA表示的長度。
最后,離散化,選定字母集大小即基大小a(例如a=3),根據(jù)字母集大小在高斯分布表(如表1)中查找區(qū)間的系列分裂點。

表1 基從3到7的分裂點
將PAA表示的均值映射為對應(yīng)的字母,最終離散化為字符串H={h1,h2,…,hn}(例如H={a,a,a,c,c,c,b})。其主要實現(xiàn)過程如圖1所示。

圖1 SAX方法實現(xiàn)過程示意圖
頻繁模式是頻繁地出現(xiàn)在數(shù)據(jù)集中的模式。如首先購買PC,然后是數(shù)碼相機,再后是內(nèi)存卡,如果它頻繁地出現(xiàn)在購物歷史數(shù)據(jù)庫中,則稱它為一個(頻繁的)序列模式。頻繁模式挖掘是一項數(shù)據(jù)挖掘任務(wù),它發(fā)現(xiàn)頻繁出現(xiàn)并且具有某些突出性質(zhì)的模式,這些性質(zhì)使它們有別于其他模式,常常揭示某些固有的和有價值的規(guī)律。
序列模式挖掘算法[9-10]就是找出序列支持度大于或等于min_sup的所有頻繁序列, 其中,min_sup是用戶預(yù)先指定的最小支持度閾值。假設(shè)有序列數(shù)據(jù)集D={I1,I2,…,Ia},一般的序列I={k1,k2,…,kp},序列I的支持度support(I)是包含I的所有數(shù)據(jù)序列所占數(shù)據(jù)集D的比例。如果序列I的支持度大于或等于用戶指定閾值min_sup,則稱I是一個頻繁序列。
support(I)=P(I∪D)
(2)
設(shè)n維序列P={p1,p2,…,pn},m維序列Q={q1,q2,…,qm},其中m>n,若序列P中每個元素都在序列Q中相同位置出現(xiàn),即pi=qi(i 頻繁序列挖掘和頻繁項集挖掘一樣,首先遍歷一次序列數(shù)據(jù)集D,得到所有的頻繁1-序列, 按照頻繁1-序列把數(shù)據(jù)集D劃分為各個頻繁 1-序列作為前綴的投影數(shù)據(jù)集; 在生成得到的各個投影數(shù)據(jù)集中繼續(xù)遞歸挖掘子頻繁序列; 將投影數(shù)據(jù)集中的序列當(dāng)作新的序列數(shù)據(jù)集,按照上述步驟重新掃描并形成頻繁序列項,然后挖掘各個頻繁項的投影數(shù)據(jù)集,直到?jīng)]有新的投影數(shù)據(jù)集產(chǎn)生,即獲得所有的頻繁序列。 頻繁模式的挖掘是本文提出的新方法中的重點,也是比較傳統(tǒng)方法的優(yōu)勢所在,因為理論上得到的頻繁模式看作正常序列的標(biāo)準(zhǔn),省去了待測序列與所有序列都作相似性度量的繁雜,只需與該模式作相似性度量即可初步判斷其是否為異常序列。 在尋找頻繁模式前需對所有序列進行預(yù)處理,用SAX方法對時間序列進行重新描述可以在壓縮數(shù)據(jù)的同時保留較多的局部信息,而且分段過程能實現(xiàn)數(shù)據(jù)的噪聲消除,重新描述的數(shù)據(jù)結(jié)果在視覺上表現(xiàn)得簡潔直觀。 對頻繁模式挖掘,主要算法步驟如下。 輸入 訓(xùn)練序列,最小支持度min_sup; 輸出 頻繁序列p。 步驟1 用SAX方法將序列符號化,得到字符序列。 步驟2 首先遍歷一次字符序列S,提取序列中每個長度為1的字符存入候選集U(相同字符只提取一次)。 步驟3 查找序列中U中每個序列的個數(shù),計算其支持度。 步驟4 將支持度大于min_sup的1-序列表示為候選頻繁序列q,若q為空,則跳到步驟7);反之,p=q。 步驟5 將p進行自連接得到新的候選集并讓其替代U。 步驟6 檢測U是否為空,若U為空,則繼續(xù)步驟7;否則跳到步驟3。 步驟7 輸出最終的頻繁序列p。 該方法結(jié)合了時間序列的頻繁序列挖掘和數(shù)據(jù)挖掘中頻繁項集的挖掘思想,不同于這兩種思想的是該方法對時間序列不需要進行分段,沒有數(shù)據(jù)項,僅僅用字符序列進行挖掘,省去了序列劃分的繁雜過程,也避免了因序列劃分不當(dāng)而引起的某些模式被忽略的情況。方法過程中的支持度是序列模式的個數(shù)。該方法至少要遍歷序列S一遍,但時間復(fù)雜度不高,當(dāng)min_sup為1且S中所有字符不同時,時間復(fù)雜度最高為n2,但這樣的挖掘是沒有意義的,所以在一般情況下,時間復(fù)雜度都會比這個小很多。 目前,時間序列的異常還沒有一個公認(rèn)的定義,普遍采用Hawkin給出的定義[11]:異常是在數(shù)據(jù)集中偏離大部分?jǐn)?shù)據(jù)的數(shù)據(jù),使人懷疑這些數(shù)據(jù)是由不同的機制產(chǎn)生的,而非隨機偏差。由此可以想到異常所偏離的大部分?jǐn)?shù)據(jù)一定存在一個共同的模式,所以本文要用挖掘出的這一模式作異常檢測,便會省去許多繁雜的過程。 同時,為了檢測出所測序列的片段異常,本文需要對序列進行分段?;瑒哟翱诜侄螇嚎s算法[12]是通過不斷利用最小二乘法去擬合當(dāng)前窗口所有樣本點組成的子序列,若擬合誤差沒有超過預(yù)先設(shè)置好的閾值,則擴大窗口加入新的樣本點到子序列直到窗口到達終點。若子序列的擬合誤差超過閾值,則從下一個樣本點開始重新劃分窗口繼續(xù)擬合直線。 結(jié)合上述方法思想,本文提出的異常檢測方法步驟如下: 輸入 需檢測的時間序列L,滑動窗口分段的擬合誤差maxError,頻繁模式序列p; 輸出 序列L的異常片段G。 步驟1 用滑動窗口對序列L進行分段: 1)初始化第一段子序列的分段點index=1; 2)i=index,判斷滑動窗口是否到達終點,如果到達終點,則跳到5); 3)往滑動窗口中加入新的序列點Li,利用最小二乘法去擬合當(dāng)前窗口所有樣本點組成的子序列; 4)判斷擬合誤差是否大于閾值maxError,如果小于maxError,則令i=i+1跳到3); 5)合并該子序列到F,如果滑動窗口沒有到達終點,則跳到2),反之執(zhí)行步驟2。 步驟2 用SAX將子序列集F符號化,生成符號表示的子序列集H。 步驟3 用最長公共子序列對頻繁模式序列p與H作相似性度量,找出H中相似度低的子序列,并將其存入異常序列候選集G。 步驟4 計算異常序列候選集G占序列L的比例,如果比例超過0.5,提示頻繁序列已經(jīng)過期,需挖掘新的頻繁模式;否則輸出G。 待測序列L的長度為m時,該方法中滑動窗口分段的時間復(fù)雜度為m。當(dāng)maxError最小,即分段結(jié)果為每個數(shù)據(jù)自成一段時,相似性度量的時間復(fù)雜度為m,所以該方法的時間復(fù)雜度最大為2m。 3.1.1 實驗數(shù)據(jù) 對心電圖時間序列的異常檢測具有重要的醫(yī)學(xué)價值,對于重癥患者實行實時的心臟監(jiān)控也是必要的。本文實驗所采用的數(shù)據(jù)集從 MIT-BIH ECG 數(shù)據(jù)庫[13]中下載。 MIT-BIH 數(shù)據(jù)庫共包含 48 條超過30 min的心電圖數(shù)據(jù)。 圖3實驗結(jié)果所使用的數(shù)據(jù)是編號為104的時間序列,該序列為一個66歲女性30 min的心電圖數(shù)據(jù),實驗選取了前5 000個數(shù)據(jù)點做實驗。表2給出了該序列的特征點以及相應(yīng)發(fā)生時刻, 其中室性早搏(Premature Ventricular Contractions, PVC)是多樣的,幾次爆發(fā)的肌肉噪聲。 表2 實驗數(shù)據(jù)基本信息 3.1.2 實驗準(zhǔn)備 參數(shù)maxError,選擇該參數(shù)時可觀察序列的波形,盡可能地使分段能包含一個周期序列(如圖2),該實驗選擇的maxError=170;參數(shù)min_sup,選擇該參數(shù)時觀察訓(xùn)練序列的波形,大概有幾個完整的正常周期就擬訂為幾,該示例實驗選擇的min_sup=5(如圖2);w主要是符號化時對序列的壓縮,該參數(shù)的選擇表現(xiàn)的是序列的走向,所以可根據(jù)時間序列的具體情況而定,如果序列驟變性較強則不應(yīng)該選擇過大,視具體序列而定,該實驗示例選擇的w=50;a為字母集大小,該實驗示例選擇的a=3。 圖2 訓(xùn)練數(shù)據(jù)集 3.1.3 實驗過程 用SAX方法把序列R進行符號化得到S={acaabbbcbabbbcabbbcbabbbcbabba},用時間序列的頻繁模式挖掘算法尋找符號序列S中的頻繁序列,獲得頻繁序列p={ab,bb},用滑動窗口分段對序列L進行分段,得到的子序列在L中的位置為F={1~232,233~539,540~805,806~1 118, 1 119~1 442,1 443~1 645,1 646~2 067,2 068~2 361,2 362~2 651,2 652~2 941,2 942~3 231,3 232~3 513,3 514~3 715,3 716~4 142,4 143~4 423,4 424~4 708,4 709~4 997,4 998~5 000},再次用SAX方法將子序列集F符號化,生成符號表示的子序列集H={cbaaba}{a} {acaab}{bacbabb}{bbcaab}{bbcbabb}{bbcaabb}{accbb} {bbbbaabba}{cbabbb}{cbabbb}{ccabcb}{ccabbb}{ccabbb} {accbb}{babbabbab}{caabba}{caabba},再用p與H進行相似性度量,找出相似度低的子序列,并將其存入異常序列候選集G={1 442~1 645,3 513~3 715,4 997~5 000},最后計算異常序列候選集G占序列L的比例為0.166 7,小于0.5,所以輸出G。 3.1.4 實驗結(jié)果及分析 實驗結(jié)果如圖3所示,結(jié)合表1對數(shù)據(jù)的描述可發(fā)現(xiàn),該異常片段為該數(shù)據(jù)產(chǎn)生者爆發(fā)的肌肉噪聲,實驗結(jié)果與數(shù)據(jù)的描述相符。 圖3 異常檢測實驗結(jié)果 為檢驗基于頻繁模式的時間序列異常檢測方法的可行性和優(yōu)越性,在此選擇3種性質(zhì)不同的數(shù)據(jù)進行異常檢測實驗,采用余宇峰等[6]提出的基于滑動窗口預(yù)測的水文時間序列異 常檢測(TSOD)和劉千等[4]提出的基于擴展符號聚集近似的水文時間序列異常挖掘(ESAA)兩種方法與本文方法作比較。 3種數(shù)據(jù)各具代表性:第1種數(shù)據(jù)MRN_measles數(shù)據(jù)是真實數(shù)據(jù),其中異常的數(shù)據(jù)明顯高于其他數(shù)據(jù)點; 第2種數(shù)據(jù)Keogh_Data是仿真數(shù)據(jù),其中加入了較多干擾; 第3種數(shù)據(jù)Aritificial_Data是比較規(guī)則的周期數(shù)據(jù)異常。下面是三種數(shù)據(jù)的實驗結(jié)果及分析。 3.2.1 實驗結(jié)果及分析 實驗1 真實數(shù)據(jù)MRN_measles[14]。該數(shù)據(jù)是長度為534的時間序列,在區(qū)間[150,170]和[420,534]存在異常情況,如圖4(a)所示。通過TSAD方法對該序列進行異常檢測,實驗的相關(guān)參數(shù)分別設(shè)置為滑動窗口最大誤差maxError=25,符號化壓縮閾值w=10,最小支持度min_sup=15。檢測出的異常片段為[152,166]、[417,534],實驗結(jié)果如圖4(b)所示;通過ESAA方法對該序列進行異常檢測,檢測出的異常片段為 [151,165]、[181,195],實驗結(jié)果如圖4(c)所示。通過TSOD方法對該序列進行異常檢測,檢測出的異常片段為[158,162]、[195,196],實驗結(jié)果如圖4(d)所示。 圖4 三種方法對MRN_measles數(shù)據(jù)實驗結(jié)果 圖4中虛線畫出的序列為檢測出的異常片段,可以看出,TSAD能很好地檢測出原序列的兩個異常片段;ESAA只能較好的檢測原序列中凸起的一個片段異常,而未能檢測出序列中平滑的片段異常,同時還誤將片段[181,195]認(rèn)為異常;TSOD方法雖然也檢測出來凸起的片段異常,但沒能準(zhǔn)確地測出該段的所有異常,同時也誤將一個正常片段當(dāng)作異常。比較三種方法對數(shù)據(jù)MRN_measles的檢測效果可以看出,TSAD方法檢測效果最好,其次是ESAA方法,TSOD方法檢測效果最差。 實驗2 Keogh_Data數(shù)據(jù)是Keogh等[15]進行時間序列異常檢測時使用的仿真數(shù)據(jù),由以下隨機過程產(chǎn)生: (3) (4) 其中:t=1,2,…,N, 實驗取值為N=800,即實驗仿真得到長度為800的序列;自定義n(t)是均值為0,標(biāo)準(zhǔn)差為1的加性高斯噪聲;e(t)為自定義的異常事件,具體如下: (5) 通過TSAD對序列L2(t)進行異常檢測,實驗的相關(guān)參數(shù)分別設(shè)置為滑動窗口最大誤差maxError=27,符號化壓縮閾值w=3,最小支持度min_sup=35。檢測出的異常片段為[402,448],實驗結(jié)果如圖5(b)所示。通過ESAA方法對該序列進行異常檢測,檢測出的異常片段為[601, 650]、[701,750],實驗結(jié)果如圖5(c)所示。通過TSOD方法對該序列進行異常檢測,檢測出的異常片段為[55,56]、[68,69]、[91,92]、[115,116]、[129,139]、[140,141]、[232,233]、[235,236]、[246,247]、[255,256]、[269,270]、[290,291]、[320,321]、[344,345]、[393,394]、[396,397]、[419,420]、[472,473]、[485,486]、[498,499]、[504,505]、[519,522]、[597,598]、[614,615]、[630,631]、[640,641]、[650,651]、[679,680]、[695,696]、[727,728]、[743,744]、[746,747]、[793,794],實驗結(jié)果圖5(d)所示。 由圖5可以看出:TSAD方法正確地檢測出了原序列中的大部分異常,僅僅漏掉少有的個別異常點;而ESAA方法檢測到兩段異常片段,但沒能檢測出真正的異常片段,該方法對這種數(shù)據(jù)的檢測效果非常不理想;TSOD方法雖然檢測出了真正異常片段中的幾個小片段,但也將一些正常片段看作異常測出,誤報率也是較大,由此可以看出TSOD和ESAA兩種方法對Keogh_Data數(shù)據(jù)的檢測效果非常差。 實驗3 Aritificial_Data數(shù)據(jù)[16],時間序列由如下隨機過程產(chǎn)生: (6) (7) 其中t=1,2,…,N,實驗取值為N=1 200,即實驗仿真得到長度為1 200的序列。序列L1(t)沒有異常,將時間序列L1(t)加上異常事件e(t),即變形為包含異常序列的時間序列L2(t)。異常事件e(t)定義如下: e(t)= (8) 通過TSAD方法對序列L2(t)進行異常檢測,實驗的相關(guān)參數(shù)分別設(shè)置為滑動窗口最大誤差maxError=48,符號化壓縮閾值w=7,最小支持度min_sup=20。檢測出的異常片段為[94,203]、[499,609]、[807,923],實驗結(jié)果如圖6(b)所示。通過ESAA方法對該序列進行異常檢測,檢測出的異常片段為[101,200]、[501,600]、 [801,900],實驗結(jié)果如圖6(c)所示。通過TSOD方法對該序列進行異常檢測,檢測出的異常片段為[100,102]、[115,127]、[139,151]、[161,177]、[185,200]、[500,557]、[569,581]、[594,600]、[800,846]、[857,869]、[881,893],實驗結(jié)果如圖6(d)所示。 由圖6(a)和圖6(b)對比可以看出,TSAD方法能較好地測出原序列中存在的異常;對比圖6(a)和圖6(c)可以看出,ESAA方法能非常準(zhǔn)確地檢測出異常;對比圖6(a)和圖6(d)可以看出,TSOD方法只能檢測出原序列的部分異常,且這部分?jǐn)?shù)據(jù)是凸出正常模式的序列點,而將異常模式中與正常模式序列點數(shù)值相近的點看作正常數(shù)據(jù),由此可以看出TSAD方法和ESAA方法對Aritificial_Data數(shù)據(jù)的檢測效果最好,TSOD方法的檢測效果最差。 圖5 三種方法對Keogh_Data數(shù)據(jù)實驗結(jié)果 圖6 三種方法對Aritificial_Data數(shù)據(jù)實驗結(jié)果 3.2.2 實驗評估 為評價所提出的時間序列異常檢測方法的實驗結(jié)果,采用檢測率(Detecton Rate, DR)、誤報率(False Positive Rate, FPR)和漏報率(False Negative Rate, FNR)作為算法檢測性能的度量指標(biāo)[16]。檢測率是指異常行為被正確檢測出來的比率,如果檢測算法不能精確地描述正常行為,那么就必然會出現(xiàn)各種誤報的情況,如果把正常行為誤報為異常行為,此情況稱為誤報;把這種錯誤情況所占正常行為的比率,稱為誤報率。如果有異常行為不能被識別,無法被檢測出,這種情況被稱為漏報;把漏報的異常行為所占所有異常行為的比率,稱為漏報率[17]: DR=(Y∩Y′)/Y (9) FPR=[Y-(Y∩Y′)]/(X-Y) (10) FNR=[Y-(Y∩Y′)]/Y (11) 其中:X代表數(shù)據(jù)集,Y代表X中的異常數(shù)據(jù)集,Y′代表算法檢測出的異常數(shù)據(jù)集。 表3中給出了基于頻繁模式的時間序列異常檢測方法(TSAD)、基于擴展符號聚集近似的水文時間序列異常挖掘方法(ESAA)和基于滑動窗口預(yù)測的水文時間序列異常檢測方法(TSOD)對MRN_measles、Keogh_Data和Aritificial 三種數(shù)據(jù)的檢測實驗結(jié)果。 由實驗結(jié)果可以看出, MRN_measles和Keogh_Data兩種數(shù)據(jù)用TSAD方法的檢測效果最好,Aritificial_Data數(shù)據(jù)用ESAA方法的檢測效果最好,用TSAD方法的檢測效果也很好,對于這三種不同類型的數(shù)據(jù),TSAD方法的平均檢測效果是最好的,并且比另外兩種方法好很多。同時由表3度量結(jié)果中的方差可以看出, TSAD方法的偏好性最小,對三種數(shù)據(jù)的檢測效果都非常好,ESAA方法對數(shù)據(jù)的偏好性最大,對Aritificial_Data數(shù)據(jù)的檢測率高達0.99,且誤報率為0,但對Keogh_Data數(shù)據(jù)的檢測率為0,分析其原因可以看出該算法對序列的噪聲非常敏感,會將一些噪聲誤認(rèn)為異常, 導(dǎo)致其受噪聲干擾性很嚴(yán)重, TSOD方法是三種方法中檢測效果最差,對三種數(shù)據(jù)的檢測率都很低,對Aritificial_Data數(shù)據(jù)的檢測相對于另外兩種數(shù)據(jù)較好,對數(shù)據(jù)的偏好性較嚴(yán)重,該方法也是受噪聲干擾大,但相對于ESAA方法較好一點。 表3 三種方法對比實驗結(jié)果 由結(jié)果對三種方法進行分析可看出,本文方法主要考慮的是序列整體的趨勢,在符號序列化中平滑了一些噪聲的干擾能很好地檢測出異常。相對于序列整體的異常,而對比方法TSOD更多考慮的是局部特征,該方法的主要思路是通過序列中任意一點的k近鄰點對該點進行預(yù)測,如果預(yù)測值與該點實際值不超過預(yù)設(shè)閾值則可判定該點為正常點,反之為異常,該方法更多受到序列局部特征的影響,而且對序列所有元素值沒有進行其他提取效果,所以受噪聲干擾大;而ESAA太注重最值的影響,因此噪聲干擾性更強。總體來說,三種方法中TSAD最好,其次為ESAA,TSOD最差。 3.2.3 時間復(fù)雜度分析 在此假設(shè)需檢測序列的長度為m,TSAD方法截取前n(n 3.2.4 實驗總結(jié) 比較三種方法對三種不同數(shù)據(jù)的檢測效果和時間復(fù)雜度可以看出,TSAD方法的時間復(fù)雜度比TSOD方法稍大一點,但檢測效果明顯好很多,尤其是對于增量式數(shù)據(jù),當(dāng)增加的數(shù)據(jù) 趨于無窮大時,TSAD方法和TSOD方法的時間復(fù)雜度近似相同,但檢測效果好很多??偟膩碚f,TSAD方法是最好的。 針對傳統(tǒng)方法的復(fù)雜性和高消耗性,本文提出的基于頻繁模式的時間序列異常檢測方法能較好改善這一問題,該方法同時從序列整體形態(tài)和局部特征的角度研究,能較準(zhǔn)確地發(fā)現(xiàn)序列中的異常片段,并且該方法使用的是對同種序列的一次性挖掘,在找出一種序列的頻繁模式后該序列新增加的數(shù)據(jù)便不再作頻繁模式的挖掘,只需執(zhí)行簡單的相似性度量就可以檢測其中的異常片段。 本文方法的優(yōu)點在于能基于正常數(shù)據(jù)的頻繁模式檢測新加入數(shù)據(jù)的異常,實現(xiàn)動態(tài)數(shù)據(jù)的異常檢測,并且對于新加入的數(shù)據(jù)只需與先挖掘的頻繁序列進行簡單的比較實驗,不用耗費太多資源; 但該方法也存在一些缺點,如參數(shù)太多,導(dǎo)致在運行時調(diào)整參數(shù)太過復(fù)雜。進一步的改進方案需對參數(shù)進行優(yōu)化,盡量地減少參數(shù)復(fù)雜性,同時對符號化表示方法進行優(yōu)化,使其能更好地表示序列的形態(tài),對頻繁模式的挖掘起到更普遍的作用,能夠更好地去發(fā)現(xiàn)現(xiàn)實生活中的動態(tài)數(shù)據(jù)異常,免受噪聲數(shù)據(jù)的干擾。2 異常序列檢測
2.1 頻繁模式挖掘
2.2 異常檢測
3 數(shù)值實驗
3.1 仿真實驗



3.2 對比實驗




4 結(jié)語