本發(fā)明屬于數(shù)據(jù)處理領(lǐng)域,特別涉及一種水文時間序列異常模式檢測方法。
背景技術(shù):
水文是指自然界中水的變化、運動等的各種現(xiàn)象,對水文進行研究在水資源開發(fā)利用、工程建設管理、農(nóng)業(yè)灌溉、城市用水、航運等方面發(fā)揮了重要作用。在對水文進行研究時可以通過發(fā)現(xiàn)站點監(jiān)測的歷年水位數(shù)據(jù)中的異常變化,從而發(fā)現(xiàn)水文過程變化規(guī)律。對于歷年水位數(shù)據(jù)中的異常變化的檢測主要是水文時間序列異常檢測。
時間序列異常檢測主要分成針對時間序列中異常點的檢測和異常模式的檢測。從一般意義上來說,時間序列中一個點的異常,是指在一條時間序列上與其它序列點存在顯著差異的、具有異常特征的序列點;而模式異常是指在這條時間序列上與其它模式存在顯著差異的、具有異常行為的模式。時間序列中的模式一般是指一段具有某種特殊變化過程的子序列。目前已有的各種時間序列異常檢測的方法,包括生物學方法、基于頻率的方法、機器學習方法、基于特征空間的方法等。生物學方法從生物的免疫系統(tǒng)的機制中獲得靈感的將該思想映射到異常檢測上來,這種基于生物學的時間序列異常模式檢測方法的主要缺陷是,當正常的數(shù)據(jù)變得多種多樣,那么可能產(chǎn)生的正常模式的數(shù)目也同樣增加,這會導致產(chǎn)生不出任何用于負選擇過程的異己,最終會使得選擇過程失敗,檢測不出任何異常模式?;陬l率的方法采用后綴樹來編碼時間序列中所有出現(xiàn)的模式,用馬爾科夫模型(markovmodel)預測沒有被觀測到的模式期望發(fā)生的概率,然后根據(jù)用戶給定的閾值來判斷模式的奇異性,即檢測出異常的模式,這樣的方法檢測出的結(jié)果不準確。機器學習的方法目前相關(guān)研究方法主要包括兩大類:人工神經(jīng)網(wǎng)絡和支持向量機。基于特征空間的方法一般又分成兩種:(1)一種方法是將時間序列分成等長的子序列,然后將子序列映射為n維空間中的點,然后采用普通數(shù)據(jù)集合中的異常點檢測方法發(fā)現(xiàn)異常。這種方法的一個缺點是序列中的點一般較多,距離的計算和檢測的時間消耗是相當可觀的。(2)另一種方法是從時間序列中抽取特征,然后在特征空間中應用普通數(shù)據(jù)集合中的異常點檢測方法來發(fā)現(xiàn)異常。
技術(shù)實現(xiàn)要素:
發(fā)明目的:為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供了一種準確性高,檢測速度快,運算量小的水文時間序列異常模式檢測方法。
發(fā)明內(nèi)容:為解決上述技術(shù)問題,本發(fā)明提出一種水文時間序列異常模式檢測方法,包括以下步驟:
步驟1:采集歷年的水位數(shù)據(jù),根據(jù)時間的順序,以年為單位組成每年的水位時間序列;
步驟2:對每年水位時間序列進行分割,產(chǎn)生水位子序列;
步驟3:水位子序列進行線性分段,形成維度低的水位子序列;主要通過提取主要特征,從而降低維度;
步驟4:對步驟3中獲得的水位子序列進行分組,將同時間段的子序列劃分為一組;
步驟5:在同一組子序列中結(jié)合平均變化距離和積累變化距離進行異常子序列的檢測。
進一步,所述步驟2中采用滑動窗口機制對每年水位時間序列進行分割,產(chǎn)生水位子序列。這樣劃分出的子序列是等長的,更易于執(zhí)行對應時期相同的子序列之間距離的比較計算。
進一步,所述步驟3中通過分析逐段聚集平均的方法對每年的水位時間序列進行線性分段;這樣更加簡單直觀。
進一步,所述步驟5中對異常子序列檢測的方法為,包括以下步驟:
步驟51:根據(jù)公式
步驟52:確定si鄰近子序列的個數(shù)k,根據(jù)公式
步驟53:判斷ac與mc的大小,若ac>mc,則當前子序列si可能為異常子序列,否則視為正常子序列。
進一步,所述子序列之間的距離度量函數(shù)采用動態(tài)時間序列彎曲距離函數(shù)。
進一步,還包括步驟6:將檢測得到的異常子序列采用曲線方式進行圖形展示并進行評估。這樣得到的檢測結(jié)果更加的準確并且直觀。
進一步,近鄰子序列的總數(shù)k的取值大于3,且小于子序列數(shù)量的一半n/2。這樣檢測出的結(jié)果更加的準確。
工作原理:本發(fā)明結(jié)合水文時間序列的特點,給出水文時間序列異常模式的定義,通過水文時間子序列累積變化距離和平均變化距離的檢測出水文時間序列異常模式。
有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明提供的方法計算量小,有效縮短了檢測的時間;本發(fā)明中的異常閾值根據(jù)已有序列來確定,能夠獲得的結(jié)果的準確性更高,有效的避免了檢測失敗的可能。在水文領(lǐng)域,不同流域受地理位置和環(huán)境影響,其異常的閾值是不同的,本發(fā)明的閾值根據(jù)采集的數(shù)據(jù)自身確定,能夠滿足不同流域的異常模式檢測,因此,采用本發(fā)明提供方法能夠更好的對水文進行研究和觀察。
附圖說明
圖1為水位時間序列異常子序列檢測總體流程圖;
圖2為檢測一組內(nèi)的異常水位時間子序列流程圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明的技術(shù)方案作進一步解釋。
如圖1所示,本發(fā)明提供了一種水文時間序列異常模式檢測方法,主要包括以下步驟:
步驟11:水位時間序列。首先以年為單位,讀取原始水位數(shù)據(jù),構(gòu)造水位時間序列。將采集的1年水位數(shù)據(jù)按照時間等間隔(如,天,小時等)排列,構(gòu)成水位時間序列。
步驟12:構(gòu)造水位時間序列的子序列。對逐年的水位時間序列使用長度為w的滑動窗口,構(gòu)造子序列,其中,每年的水位時間序列的長度為l。這樣形成的子序列是等長的。使用滑動窗口時,每次向前移動一個單位,因此,各個相鄰子序列間大部分是重疊的,這樣長度為l的時間序列,會產(chǎn)生l-w+1個子序列。分析人員根據(jù)需要研究的模式長度,來確定子序列的長度,如需要研究一個汛期的異常變動,可以選擇w為60,或者如需要研究太湖水位7月份的波動情況,可選擇w為31。
步驟13:線性分段。對步驟12中的子序列進行線性分段,實現(xiàn)降維。采用paa(piecewiseaggregateapproximation,通過分析逐段聚集平均,簡稱paa)進行線性分段,長度為w的水位子序列q轉(zhuǎn)換成長度為m的子序列s,每個點的值為原始序列中連續(xù)的p個點均值,s[j]=(q[(j-1)*p+1]+…+q[j*p])/p,j=1,2,…,w/p,s[j]為子序列s的第j個點的值,q[j]為子序列q的第j個點的值。使用paa方法分段的原因是簡單直觀,且劃分出的子序列是等長的,這樣易于執(zhí)行對應時期相同的子序列之間距離的比較計算。p取值由分析人員確定,一般w為p的整數(shù)倍。這樣可以提高計算速度,同時保留了原始序列的主要信息。
步驟14:對步驟13產(chǎn)生的所有年份時間序列的子序列進行分組。構(gòu)造好子序列后,對子序列進行分組,將對應時間相同的,即起始時間相同的子序列分在一組中。如,2015年7月10日-7月20日的子序列和2016年7月10日-7月20日的子序列等分在一組中。
步驟15:檢測同一組內(nèi)的異常子序列。計算組內(nèi)子序列之間的平均變化距離,以此作為異常閾值,針對每個子序列,計算其與鄰近子序列之間的累積變化距離,如果超過平均變化距離,則為異常子序列。如圖2所示,具體包括如下步驟:
步驟151:讀取同組中所有子序列的相關(guān)參數(shù),進入步驟152;
步驟152:根據(jù)公式
步驟153;判斷標號i的值;如果i大于該組內(nèi)子序列的總數(shù)則結(jié)束本組的處理;如果i不小于該組內(nèi)子序列的總數(shù)則結(jié)束本組的處理;則進行步驟154。
步驟154:讀取子序列si的信息。
步驟155:讀取子序列si的鄰近子序列。設置鄰近子序列的個數(shù)k,一般取k為偶數(shù)。讀取si-k/2,…,si-1,si+1,…,si+k/2作為鄰近子序列。水文規(guī)律變化一般相對較緩,因此k取值可以大于3,但是小于子序列數(shù)量的一半,即n/2,取值太大距離值將被太多的鄰近子序列平滑,不能體現(xiàn)出異常。
步驟156:根據(jù)公式
步驟157:ac>mc。判斷累積變化距離ac是否大于平均變化距離mc,如果大于,則si識別為異常子序列,直接進行步驟157;否則si為正常子序列,先將i的值加1后重復步驟153~步驟157。
步驟158:將異常子序列進行保存,重復步驟153~步驟157。
步驟16:將檢測得到的異常子序列采用曲線方式進行圖形展示。
步驟17:對檢測得到的異常子序列進行評估,通過專家的人工經(jīng)驗,核查其是否為真正的異常子序列。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出:對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。