• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于SparkR的水文傳感器數(shù)據(jù)的異常檢測(cè)方法

      2019-08-01 01:57劉子豪李凌葉楓
      計(jì)算機(jī)應(yīng)用 2019年2期

      劉子豪 李凌 葉楓

      摘 要:為了高效地從海量的水文傳感器數(shù)據(jù)中檢測(cè)出異常值,提出一種基于SparkR的水文時(shí)間序列異常檢測(cè)方法。首先,對(duì)數(shù)據(jù)進(jìn)行清洗后,采用滑動(dòng)窗口配合自回歸積分滑動(dòng)平均模型(ARIMA)在SparkR平臺(tái)上進(jìn)行預(yù)測(cè);然后,對(duì)預(yù)測(cè)的結(jié)果計(jì)算置信區(qū)間,將在區(qū)間范圍以外的判定為異常值;最后,基于檢測(cè)結(jié)果,利用K均值算法對(duì)原數(shù)據(jù)進(jìn)行聚類(lèi),同時(shí)計(jì)算其狀態(tài)轉(zhuǎn)移概率,對(duì)檢測(cè)出的異常值進(jìn)行質(zhì)量評(píng)估。以在滁河獲取的水文傳感器數(shù)據(jù)為實(shí)驗(yàn)數(shù)據(jù),分別在運(yùn)行時(shí)間和異常值檢測(cè)效果這兩個(gè)方面進(jìn)行了實(shí)驗(yàn)。結(jié)果顯示:利用SparkR對(duì)百萬(wàn)級(jí)數(shù)據(jù)進(jìn)行計(jì)算時(shí),利用雙節(jié)點(diǎn)計(jì)算的時(shí)間要長(zhǎng)于單節(jié)點(diǎn);但是對(duì)千萬(wàn)級(jí)數(shù)據(jù)進(jìn)行計(jì)算時(shí),雙節(jié)點(diǎn)比單節(jié)點(diǎn)計(jì)算時(shí)間上更少,最多減少了16.21%,且評(píng)估過(guò)后的靈敏度由之前的5.24%提高到了92.98%。實(shí)驗(yàn)結(jié)果表明,在SparkR下,根據(jù)水文數(shù)據(jù)的特點(diǎn)并結(jié)合預(yù)測(cè)檢驗(yàn)和聚類(lèi)校驗(yàn)的方法對(duì)千萬(wàn)級(jí)水文時(shí)間序列進(jìn)行檢測(cè)時(shí),能有效提高傳統(tǒng)方法的計(jì)算效率,并且在靈敏度方面相比傳統(tǒng)方法也有顯著提升。

      關(guān)鍵詞:SparkR;自回歸積分滑動(dòng)平均模型;異常檢測(cè);水文時(shí)間序列;K均值

      中圖分類(lèi)號(hào): TP391

      文獻(xiàn)標(biāo)志碼:A

      Abstract: To efficiently detect outliers in massive hydrologic sensor data, an anomaly detection method for hydrological time series based on SparkR was proposed. Firstly, a sliding window and Autoregressive Integrated Moving Average (ARIMA) model were used to forecast the cleaned data on SparkR platform. Then, the confidence interval was calculated for the prediction results, and the results outside the interval range were judged as anomaly data. Finally, based on the detection results, K-Means algorithm was used to cluster the original data, the state transition probability was calculated, and the anomaly data were evaluated in quality. Taking the data of hydrologic sensor obtained from the Chu River as experimental data, experiments on the detection time and outlier detection performance were carried out respectively. The results show that the millions of data calculation by two slaves costs more time than that by one slave, but when calculating the tens of milllions of data, the time costed by two slaves is less than that by one slave, and the maximum reduction is 16.21%. The sensitivity of the evaluation is increased from 5.24% to 92.98%. It shows that under big data platform, the proposed algorithm which is based on the characteristics of hydrological data and combines forecast test and cluster test can effectively improve the computational efficiency of hydrologic time series detection for tens of millions data and has a significant improvement in sensitivity.

      Key words: SparkR; AutoRegressive Integrated Moving Average (ARIMA) model; anomaly detection; hydrologic time series; K-Means

      0 引言

      水文數(shù)據(jù)是按其物理量分為各種類(lèi)型的水文時(shí)間序列。目前許多專(zhuān)家認(rèn)為,水文時(shí)間序列一般由確定分量和隨機(jī)分量組成。確定分量具有一定的物理概念,隨機(jī)分量則由不規(guī)則的震蕩和隨機(jī)影響產(chǎn)生[1]。水文時(shí)間序列主要表現(xiàn)出隨機(jī)性、模糊性、非線性、非平穩(wěn)性和多時(shí)間尺度變化等復(fù)雜特性[2]。隨著物聯(lián)網(wǎng)、傳感器技術(shù)的迅猛發(fā)展,水利信息化部門(mén)越來(lái)越多地采用傳感器技術(shù)來(lái)獲取水文數(shù)據(jù),這里面往往也包含許多異常值。對(duì)于水文時(shí)間序列來(lái)說(shuō),與一般規(guī)律相差較大的數(shù)值, 便可以將其判定為異常數(shù)據(jù)[3]。異常值往往包含著重要的信息,通過(guò)精確找到隱藏在數(shù)據(jù)背后的隱藏值,對(duì)之后的分析決策意義重大。目前,對(duì)于水文時(shí)間序列,傳統(tǒng)的方法只適用于小數(shù)據(jù)集,不適用于現(xiàn)在的大數(shù)據(jù)環(huán)境,且精度僅在特異度方面達(dá)到了99%[4]的水準(zhǔn),靈敏度仍有提升空間。以滑動(dòng)窗口算法為例,雖然理論上它可以作用于任意長(zhǎng)度的數(shù)據(jù)集,但是對(duì)于海量數(shù)據(jù),它的計(jì)算復(fù)雜度較高且靈敏度低。

      本文提出了一種基于SparkR的海量水文時(shí)間序列異常檢測(cè)方法,將預(yù)測(cè)檢驗(yàn)和聚類(lèi)檢測(cè)進(jìn)行結(jié)合。首先,對(duì)得到數(shù)據(jù)進(jìn)行清洗、降維、去重、篩選和排序;之后,采用滑動(dòng)窗口配合自回歸積分滑動(dòng)平均模型(AutoRegressive Integrated Moving Average, ARIMA)進(jìn)行預(yù)測(cè),并對(duì)預(yù)測(cè)的結(jié)果計(jì)算置信區(qū)間,在區(qū)間范圍以外的,將其判定為異常值。針對(duì)海量水文數(shù)據(jù)的特點(diǎn),在檢測(cè)完成后利用K均值(K-Means)對(duì)原數(shù)據(jù)進(jìn)行聚類(lèi),同時(shí)計(jì)算其狀態(tài)轉(zhuǎn)移概率,對(duì)檢測(cè)出的異常值進(jìn)行質(zhì)量評(píng)估,提高靈敏度。該方法可以在海量水文時(shí)間序列中有效提高滑動(dòng)窗口法的計(jì)算效率,同時(shí)還給出了可靠的置信度來(lái)提升整體的靈敏度,能快速準(zhǔn)確地在海量水文時(shí)間序列中檢測(cè)出異常值。相比傳統(tǒng)的滑動(dòng)窗口檢測(cè)算法,本文利用大數(shù)據(jù)處理平臺(tái)SparkR提高了算法的計(jì)算效率;同時(shí)還提出了一種結(jié)合預(yù)測(cè)檢驗(yàn)和聚類(lèi)校驗(yàn)的異常檢測(cè)方法,通過(guò)對(duì)傳統(tǒng)的滑動(dòng)窗口算法進(jìn)行校驗(yàn),保留了滑動(dòng)窗口算法特異度高的優(yōu)勢(shì),并解決了該算法靈敏度過(guò)低的問(wèn)題。

      1 相關(guān)工作

      1.1 異常檢測(cè)

      異常值[5]是在數(shù)據(jù)集中偏離大部分?jǐn)?shù)據(jù)的數(shù)據(jù),這些數(shù)據(jù)疑似并非為隨機(jī)誤差所致,而是產(chǎn)生于完全不同的機(jī)制。對(duì)于異常檢測(cè),一些有代表性的方法包括:牛麗肖等[6]提出的一種基于小波變換和ARIMA的短期電價(jià)混合預(yù)測(cè)模型, 該模型確實(shí)可以檢測(cè)到突變點(diǎn)的情況,但對(duì)非線性的部分或者時(shí)間序列過(guò)長(zhǎng)的數(shù)據(jù)則存在著不足。任勛益等[7]提出了一種基于向量機(jī)和主元分析的異常檢測(cè),先用主元分析法降低維度,再用支持向量機(jī)(Support Vector Machine, SVM)建模并檢驗(yàn)異常數(shù)據(jù);但當(dāng)數(shù)據(jù)中存在較多種類(lèi)異常值時(shí),該方法的檢測(cè)精確度不高且計(jì)算復(fù)雜度高。孫建樹(shù)等[3]提出了基于ARIMA-SVM的水文時(shí)間序列異常值檢測(cè),該方法使用ARIMA預(yù)測(cè)線性部分,使用SVM預(yù)測(cè)非線性部分,將兩部分的值相加得到最終預(yù)測(cè)的結(jié)果并將不在置信區(qū)間的值判定為異常值。這類(lèi)算法在處理小規(guī)模數(shù)據(jù)集時(shí)效果較好,但是無(wú)法處理多元和大規(guī)模的數(shù)據(jù),而且閾值的確定也較為困難。

      基于距離檢測(cè)的方法是設(shè)定某種距離函數(shù)對(duì)數(shù)據(jù)點(diǎn)進(jìn)行距離計(jì)算,當(dāng)一個(gè)點(diǎn)與其余點(diǎn)距離過(guò)大時(shí),將其視為異常點(diǎn)。Vy等[8]提出了針對(duì)時(shí)間序列可變長(zhǎng)度的異常檢測(cè)算法:先對(duì)時(shí)間序列分段;然后對(duì)每種模式的異常因子進(jìn)行計(jì)算,計(jì)算出異常因子之間的距離;最后根據(jù)該異常因子距離判斷是否為異常。該方法的優(yōu)點(diǎn)是便于用戶(hù)使用,時(shí)間復(fù)雜度相對(duì)較小,不足在于對(duì)局部異常點(diǎn)不敏感。

      Breunig等[9]提出了局部異常因子(Local Outlier Factor,LOF)的概念來(lái)計(jì)算數(shù)據(jù)集密度。LOF越大,意味著對(duì)象離群程度越高,是異常值可能性就越高;但是不同密度的子集混合會(huì)造成檢測(cè)錯(cuò)誤,雖然后續(xù)又有人提出了相關(guān)改進(jìn)方案,但是總體時(shí)間復(fù)雜度較高。

      1.2 SparkR

      SparkR[14]是一個(gè)提供輕量級(jí)前端用于在R中使用Apache Spark的R包,它提供了分布式數(shù)據(jù)框架接口,可以支持選擇、過(guò)濾、聚集等操作。到Spark2.3.0,SparkR可以用來(lái)操作數(shù)據(jù)框,而且可以通過(guò)MLlib使用分布式的機(jī)器學(xué)習(xí)。彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset, RDD)是Spark的基礎(chǔ)數(shù)據(jù)模型[15],是容錯(cuò)、并行、只讀的數(shù)據(jù)結(jié)構(gòu),它允許用戶(hù)存儲(chǔ)數(shù)據(jù)在磁盤(pán)和內(nèi)存中,并且控制數(shù)據(jù)分區(qū);同時(shí),它也是一個(gè)分布式的內(nèi)存抽象,代表一個(gè)只讀部分記錄的集合,并且只能被存儲(chǔ)在穩(wěn)定的物理存儲(chǔ)或者其他現(xiàn)有的RDD中;它只能通過(guò)對(duì)數(shù)據(jù)集執(zhí)行某些確定性的操作來(lái)創(chuàng)建;而且它只支持粗粒度轉(zhuǎn)換,也就是說(shuō)在許多記錄上執(zhí)行單個(gè)操作。DataFrame是Spark推出的應(yīng)用程序編程接口(Application Programming Interface, API),主要應(yīng)用于大數(shù)據(jù)處理方面,基于DataFrame,所有主要的數(shù)據(jù)源會(huì)被連接并自動(dòng)轉(zhuǎn)換為并行處理形式。DataFrame是Spark SQL、Streaming和MLlib的基礎(chǔ)。SparkR支持常見(jiàn)的閉包功能,用戶(hù)定義函數(shù)中引用的變量會(huì)自動(dòng)發(fā)送到群集中的其他計(jì)算機(jī)。SparkR的運(yùn)行原理如圖1所示。

      2 關(guān)鍵實(shí)現(xiàn)

      2.1 算法描述

      本文基于SparkR的水文時(shí)間序列異常檢測(cè)算法結(jié)合了預(yù)測(cè)檢驗(yàn)和聚類(lèi)檢測(cè)兩個(gè)過(guò)程。首先,采用預(yù)測(cè)檢驗(yàn)的思想對(duì)時(shí)間序列{x1,x2,…,xn}建立ARIMA模型,采用滑動(dòng)窗口的方式得到預(yù)測(cè)出的置信區(qū)間,并與原數(shù)據(jù)進(jìn)行對(duì)比,識(shí)別出異常值;在檢測(cè)出異常值之后,采用K-Means算法對(duì)原始的數(shù)據(jù)進(jìn)行聚類(lèi),聚類(lèi)出結(jié)果之后計(jì)算出其狀態(tài)轉(zhuǎn)移矩陣,用狀態(tài)轉(zhuǎn)移矩陣對(duì)之前得到的異常值進(jìn)行異常評(píng)估,最后確定異常值。

      2.2 基于滑動(dòng)窗口的異常值檢測(cè)

      定義水文時(shí)間序列X中待檢測(cè)點(diǎn)Xi的滑動(dòng)鄰居窗口Li,為了降低算法復(fù)雜性,采用該點(diǎn)的前L個(gè)點(diǎn)作為預(yù)測(cè)模型輸入?yún)?shù)進(jìn)行計(jì)算。本算法選擇預(yù)測(cè)節(jié)點(diǎn)的左鄰居窗口作為算法輸入,單邊定義如下:

      基于滑動(dòng)窗口的異常檢測(cè),核心是建立ARIMA模型[16],通過(guò)滑動(dòng)窗口的輸入來(lái)預(yù)測(cè)觀測(cè)點(diǎn)的值,得到一系列預(yù)測(cè)值。首先要對(duì)時(shí)間序列進(jìn)行單位根檢驗(yàn),如果是非平穩(wěn)序列,就要通過(guò)差分來(lái)轉(zhuǎn)化為平穩(wěn)序列。以AIC(Akaike Information Criterion)為準(zhǔn),需要確定自回歸階數(shù)p和移動(dòng)平均階數(shù)q,找出具有最小ACI值的p、q組合。ARIMA模型是針對(duì)非平穩(wěn)時(shí)間序列建模,適用于水文時(shí)間序列。本文取置信區(qū)間為95%。將ARIMA模型計(jì)算出的置信區(qū)間與原始序列進(jìn)行比較,不在置信區(qū)間內(nèi)的即判定為異常值。

      2.3 基于K-Means模型的異常值校驗(yàn)

      2.3.1 狀態(tài)轉(zhuǎn)移概率矩陣

      通過(guò)滑動(dòng)窗口配合ARIMA識(shí)別出異常值之后,還要計(jì)算出異常點(diǎn)的置信度,用來(lái)判定該點(diǎn)是否確實(shí)為異常點(diǎn),以減少誤判,降低人工工作量。

      K-Means算法屬于聚類(lèi)算法中的一種,其原理是:給定K(K代表要將數(shù)據(jù)分成的類(lèi)別數(shù))的值,然后根據(jù)數(shù)據(jù)間的相似度將數(shù)據(jù)分成K個(gè)類(lèi),也稱(chēng)為K個(gè)簇(cluster)。度量數(shù)據(jù)相似度的方法一般是用數(shù)據(jù)點(diǎn)間的距離來(lái)衡量,比如歐氏距離、漢明距離、曼哈頓距離等。一般來(lái)說(shuō),可使用歐氏距離來(lái)度量數(shù)據(jù)間的相似性。比如,對(duì)于二維平面上的兩個(gè)點(diǎn)A(x1,y2)和B(x2,y2),兩者間的歐氏距離為:(x1-x2)2+(y1-y2)2。

      而對(duì)于每一個(gè)簇,用簇中所有點(diǎn)的中心來(lái)描述,該中心也稱(chēng)為質(zhì)心(centroid)。通過(guò)對(duì)簇中的所有數(shù)據(jù)點(diǎn)取均值(mean)的方法來(lái)計(jì)算質(zhì)心。具體來(lái)說(shuō),K-Means將整個(gè)時(shí)間序列{x1,x2,…}作為輸入,序列T={T1,T2,…}作為輸出,將時(shí)間序列上的點(diǎn)轉(zhuǎn)換為各個(gè)聚類(lèi)點(diǎn),{T1,T2,…}表示這一時(shí)間點(diǎn)上屬于哪一個(gè)中心,對(duì)時(shí)間序列進(jìn)行了狀態(tài)分類(lèi)。之后用前面獲得的異常值和其前一時(shí)刻值當(dāng)作輸入,提供給K-means模型后,計(jì)算每個(gè)樣本與聚類(lèi)中心的距離,即計(jì)算樣本與狀態(tài)向量的相似度,然后把聚類(lèi)中心分配給每一個(gè)樣本。

      K-Means模型訓(xùn)練結(jié)束后,可以得到狀態(tài)序列T,通過(guò)計(jì)算可以得到一個(gè)狀態(tài)轉(zhuǎn)移矩陣,為了便于之后的計(jì)算,將矩陣轉(zhuǎn)換為數(shù)據(jù)框。該數(shù)據(jù)框有三列,第一列代表狀態(tài)i,第二列代表狀態(tài)j,第三列表示狀態(tài)i轉(zhuǎn)移到j(luò)的概率。假設(shè)某時(shí)間序列{xi,xi+1}通過(guò) K-Means模型轉(zhuǎn)換得到對(duì)應(yīng)的狀態(tài)序列為prob,Xi+1出現(xiàn)在Xi之后,換言之相當(dāng)于發(fā)生了一次從狀態(tài)Ti到Tj的轉(zhuǎn)移,轉(zhuǎn)移概率為:

      pij=狀態(tài)Ti轉(zhuǎn)移到狀態(tài)Tj的次數(shù)狀態(tài)Ti轉(zhuǎn)移到所有其他狀態(tài)的次數(shù)

      2.3.2 異常值校驗(yàn)

      本文采用發(fā)生轉(zhuǎn)移的概率與由前一時(shí)刻的狀態(tài)轉(zhuǎn)移到下一個(gè)最有可能的狀態(tài)的概率相比,作為評(píng)價(jià)標(biāo)準(zhǔn)。假設(shè)Xi為待檢驗(yàn)異常點(diǎn),前一時(shí)刻的值為Xi-1,轉(zhuǎn)換后得到的狀態(tài)為T(mén)i和Ti-1,Ti-1最有可能轉(zhuǎn)移到的狀態(tài)記為T(mén)m,由此定義一個(gè)異常值概率:

      pi=1-狀態(tài)Ti-1轉(zhuǎn)移到狀態(tài)Ti的概率狀態(tài)Ti-1轉(zhuǎn)移到Tm的概率由上式可知,狀態(tài)Ti-1轉(zhuǎn)移到Tm的概率為定值,狀態(tài)Ti-1轉(zhuǎn)移到狀態(tài)Ti的概率越小,pi越大,則Xi為異常值的概率越大。

      由于現(xiàn)實(shí)中水文數(shù)據(jù)的異常判定往往以變化量大于2cm作為異常值的判定,利用K-Means作聚類(lèi)可能會(huì)出現(xiàn)異常值和其前一時(shí)刻的值處于同一狀態(tài)下而導(dǎo)致漏判的情況,故在判定異常值后需要將異常值概率為0但是相差大于2cm的值也判定為異常值。

      2.3.3 SparkR

      本次實(shí)驗(yàn)基于Spark RDD/DataFrame 形成數(shù)據(jù)模型,并將所有的數(shù)據(jù)通過(guò)相應(yīng)的數(shù)據(jù)源輸入并轉(zhuǎn)換成RDD/DataFrame 模式。應(yīng)用gapply函數(shù)可以實(shí)現(xiàn)在SparkR上運(yùn)行R程序。

      3 實(shí)驗(yàn)與討論

      3.1 實(shí)驗(yàn)環(huán)境和配置

      本次仿真使用雙節(jié)點(diǎn):一臺(tái)PC為8核,8GB內(nèi)存;另一臺(tái)PC為16核,8GB內(nèi)存。相關(guān)軟件版本如下:Java 1.8,Spark 2.3,Hadoop 2.7,R 3.4.4和SparkR 2.3。實(shí)驗(yàn)數(shù)據(jù)來(lái)自江蘇省各個(gè)水文站從2016年到2017年的數(shù)據(jù),共18910864條數(shù)據(jù)。

      3.2 實(shí)驗(yàn)結(jié)果與分析

      3.2.1 數(shù)據(jù)清洗

      在進(jìn)行異常檢測(cè)之前,需要對(duì)取得的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗,清洗前部分?jǐn)?shù)據(jù)如表1所示。從表1可以看到,原始數(shù)據(jù)存在諸多問(wèn)題,如重復(fù)、排序混亂、時(shí)刻格式不符合數(shù)據(jù)挖掘要求、存在無(wú)關(guān)數(shù)列等。針對(duì)以上問(wèn)題,本文基于SparkR對(duì)初始的18910864條水文數(shù)據(jù)進(jìn)行了清洗,并比較了計(jì)算資源和數(shù)據(jù)量的關(guān)系,結(jié)果如表2所示。

      如表2所示,當(dāng)選取15個(gè)站點(diǎn)時(shí),雙節(jié)點(diǎn)的運(yùn)行速度慢于單個(gè)節(jié)點(diǎn),但隨著數(shù)據(jù)量的增加,用雙節(jié)點(diǎn)計(jì)算的結(jié)果變化浮動(dòng)較小,而只用單節(jié)點(diǎn)時(shí)間有著明顯上升。SparkR在數(shù)據(jù)清洗后的部分?jǐn)?shù)據(jù)如表3所示??梢钥吹?,數(shù)據(jù)按照水文站編號(hào)進(jìn)行了分組并按時(shí)間順序排列,同時(shí)刪除了跟結(jié)果無(wú)關(guān)的記錄格式列,降低了計(jì)算量。經(jīng)清洗后,數(shù)據(jù)只剩下水文站編號(hào)、時(shí)間以及水位值,符合數(shù)據(jù)挖掘要求。

      3.2.2 檢測(cè)時(shí)間

      本節(jié)實(shí)驗(yàn)主要針對(duì)基于滑動(dòng)窗口進(jìn)行時(shí)間序列預(yù)測(cè)時(shí)計(jì)算復(fù)雜度高、運(yùn)行計(jì)算時(shí)間過(guò)長(zhǎng)的問(wèn)題,采用SparkR進(jìn)行計(jì)算,比較不同的計(jì)算資源下利用SparkR執(zhí)行該算法的時(shí)間,結(jié)果如表4所示??梢钥吹?,在選擇的15個(gè)和35個(gè)水文站點(diǎn)數(shù)據(jù)下,雙節(jié)點(diǎn)運(yùn)行速度并不理想,但當(dāng)數(shù)據(jù)量上升到千萬(wàn)級(jí)別時(shí),雙節(jié)點(diǎn)的優(yōu)勢(shì)就可以體現(xiàn)出來(lái),時(shí)間增長(zhǎng)速度以及計(jì)算時(shí)間都占據(jù)優(yōu)勢(shì)??梢?jiàn),在更大的數(shù)據(jù)集下,雙節(jié)點(diǎn)下運(yùn)行速度更快,最快情況下檢測(cè)時(shí)間減少了16.21%。

      3.2.5 有效性與準(zhǔn)確性

      為了驗(yàn)證本文算法的有效性和準(zhǔn)確性,本文將實(shí)驗(yàn)結(jié)果分為4類(lèi):第一類(lèi)為T(mén)P(True Positive),表示實(shí)際為異常被判定為異常;第二類(lèi)為FN(False Negative),表示實(shí)際為異常被判定為正常;第三類(lèi)為FP(False Positive),表示實(shí)際為正常被判定為異常;第四類(lèi)為T(mén)N(True Negative),表示實(shí)際為正常被判定為正常。TP和TN是最理想的情況,F(xiàn)N和FP是不希望出現(xiàn)的情況。本文定義了算法的靈敏度Sensitive=TP/(TP+FP)和特異度Specificity=TN/(TN+FN)作為評(píng)價(jià)指標(biāo)。

      本文采用的數(shù)據(jù)集為編號(hào)12910280水文站2016—2017年的數(shù)據(jù),共計(jì)155464條,將傳統(tǒng)滑動(dòng)窗口算法和本文算法用于同一水文時(shí)間序列進(jìn)行了對(duì)比,結(jié)果如表7所示。由表7可以看到,改進(jìn)后的模型保留了滑動(dòng)窗口檢測(cè)的優(yōu)勢(shì),在FN和TP方面保持不變,保留了傳統(tǒng)方法在特異度方面的優(yōu)勢(shì),但在FP方面,因?yàn)橄惹敖o予滑動(dòng)窗口預(yù)測(cè)的方法在判斷異常值方面界限比較模糊,對(duì)于日均水文數(shù)據(jù),由于數(shù)值間相差較大,所以靈敏度即正確率比較高,但是對(duì)于每隔5min接收一次的水文傳感器數(shù)據(jù)來(lái)說(shuō),水位變化較小,誤檢率就會(huì)變高,因此在檢測(cè)完之后添加了異常值評(píng)估,這樣可以顯著減少錯(cuò)判,提升正確率。

      經(jīng)計(jì)算,在特異度方面二者相差無(wú)幾,改進(jìn)前為99.95%,改進(jìn)后為99.97%,但靈敏度由改進(jìn)前的5.24%提高到了92.15%,得到了顯著的提高。這表明本文算法在傳統(tǒng)算法的基礎(chǔ)上引入SparkR后解決了傳統(tǒng)滑動(dòng)窗口算法計(jì)算復(fù)雜度高的問(wèn)題,同時(shí)通過(guò)增加聚類(lèi)校驗(yàn)?zāi)軌蛴行У貦z測(cè)出水文時(shí)間序列中的異常值,且正確率也比較高。

      4 結(jié)語(yǔ)

      在大數(shù)據(jù)背景下,傳統(tǒng)的檢測(cè)算法已經(jīng)不能夠適應(yīng)當(dāng)今的需求。本文利用滑動(dòng)窗口的特點(diǎn),同時(shí)針對(duì)傳統(tǒng)滑動(dòng)窗口檢驗(yàn)的缺陷,如時(shí)間復(fù)雜度高、誤檢率高等缺點(diǎn),提出了一種基于SparkR的水文時(shí)間序列異常檢測(cè)方法。該方法使用SparkR進(jìn)行計(jì)算,減少了計(jì)算時(shí)間;而且結(jié)合了預(yù)測(cè)檢驗(yàn)和聚類(lèi)檢測(cè)兩個(gè)過(guò)程,利用ARIMA模型對(duì)時(shí)間序列的水文數(shù)據(jù)進(jìn)行建模來(lái)預(yù)測(cè)可能的異常點(diǎn),再利用K-means聚類(lèi)后計(jì)算狀態(tài)轉(zhuǎn)移矩陣,根據(jù)水文數(shù)據(jù)的特點(diǎn)對(duì)異常點(diǎn)進(jìn)行判定。結(jié)果表明:基于SparkR對(duì)百萬(wàn)級(jí)數(shù)據(jù)進(jìn)行計(jì)算時(shí),利用雙節(jié)點(diǎn)計(jì)算的時(shí)間要長(zhǎng)于單節(jié)點(diǎn);但是對(duì)千萬(wàn)級(jí)數(shù)據(jù)進(jìn)行計(jì)算時(shí),雙節(jié)點(diǎn)比單節(jié)點(diǎn)計(jì)算時(shí)間少,時(shí)間最多能減少1621%;且評(píng)估過(guò)后的靈敏度由之前的5.24%提高到了9298%。這表明本文算方法在對(duì)千萬(wàn)級(jí)水文數(shù)據(jù)進(jìn)行檢測(cè)時(shí),利用SparkR通過(guò)增加節(jié)點(diǎn)的方式可以有效提高滑動(dòng)窗口法的計(jì)算效率,而且在靈敏度方面相比傳統(tǒng)滑動(dòng)窗口檢測(cè)方法也有顯著提升。但是,本文算法在檢測(cè)正確率上仍有進(jìn)一步完善的空間,后續(xù)工作將聚焦于更加精確地辨識(shí)出哪些為異常值、哪些為由自然因素引起的正常波動(dòng)。

      參考文獻(xiàn):

      [1] 吳德.水文時(shí)間序列相似模式挖掘的研究與應(yīng)用[D].南京:河海大學(xué),2007.(WU D. Research and application of hydrological time series similarity pattern[D]. Nanjing: Hohai University, 2007.)

      [2] 桑燕芳,王中根,劉昌明.水文時(shí)間序列分析方法研究進(jìn)展[J].地理科學(xué)進(jìn)展,2013,32(1):20-30. (SANG Y F, WANG Z G, LIU C M. Research progress on the time series analysis methods in hydrology[J]. Progress in Geography, 2013, 32(1): 20-30.)

      [3] 孫建樹(shù),婁淵勝,陳???基于ARIMA-SVR的水文時(shí)間序列異常值檢測(cè)[J].計(jì)算機(jī)與數(shù)字工程,2018,46(2):225-230. (SUN J S, LOU Y S, CHEN Y J. Outlier detection of hydrological time series based on ARIMA-SVR model[J]. Computer & Digital Engineering, 2018, 46(2):225-230.)

      [4] 余宇峰,朱躍龍,萬(wàn)定生,等.基于滑動(dòng)窗口預(yù)測(cè)的水文時(shí)間序列異常檢測(cè)[J].計(jì)算機(jī)應(yīng)用,2014,34(8):2217-2220,2226. (YU Y F, ZHU Y L, WAN D S, et al. Time series outlier detection based on sliding window prediction[J]. Journal of Computer Applications,2014,34(8):2217-2220,2226.)

      [5] HAWKINS D M. Identification of Outliers[M]. Berlin: Springer, 1980:27-41

      [6] 牛麗肖,王正方,臧傳治,等.一種基于小波變換和ARIMA的短期電價(jià)混合預(yù)測(cè)模型[J].計(jì)算機(jī)應(yīng)用研究,2014,31(3):688-691. (NIU L X, WANG Z F, ZANG C Z, et al. Hybrid model based on wavelet and ARIMA for short-term electricity price forecasting[J]. Application Research of Computers,2014,31(3):688-691.)

      [7] 任勛益,王汝傳,孔強(qiáng).基于主元分析和支持向量機(jī)的異常檢測(cè)[J].計(jì)算機(jī)應(yīng)用研究,2009,26(7):2719-2721. (REN X Y, WANG R C, KONG Q. Principal component analysis and support vector machine based anomaly detection[J]. Application Research of Computers,2009,26(7):2719-2721.)

      [8] VY N D K, ANH D T. Detecting variable length anomaly patterns in time series data[C]// Proceedings of the 2016 International Conference on Data Mining and Big Data, LNCS 9714. Berlin:Springer, 2016: 279-287.

      [9] BREUNIG M M, KRIEGEL H-P, NG R T, et al. LOF: Identifying density-based local outliers[C]// Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data. New York: ACM, 2000:93-104.

      [10] 潘淵洋,李光輝,徐勇軍.基于DBSCAN的環(huán)境傳感器網(wǎng)絡(luò)異常數(shù)據(jù)檢測(cè)方法[J].計(jì)算機(jī)應(yīng)用與軟件,2012,29(11):69-72. (PAN Y Y, LI G H, XU Y J. Abnormal data detection method for environment wireless sensor networks based on DBSCAN[J]. Computer Applications and Software, 2012, 29(11): 69-72.)

      [11] twitter/AnomalyDEtection [EB/OL]. [2015-09-01]. https://github.com/twitter/AnomalyDetection.

      [12] 楊志勇,朱躍龍,萬(wàn)定生.基于知識(shí)粒度的時(shí)間序列異常檢測(cè)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(7):51-54. (YANG Z Y, ZHU Y L, WAN D S. Research on time series anomaly detection based on knowledge granularity[J]. Computer Technology and Development, 2016, 26(7):51-54.)

      [13] 劉雪梅,王亞茹.基于異常因子的時(shí)間序列異常模式檢測(cè)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2018,28(3):93-96. (LIU X M, WANG Y R. Anomaly pattern detection in time series based on outlier factor[J]. Computer Technology and Development, 2018, 28(3):93-96.)

      [14] Spark R (R frontend for Spark) [EB/OL]. [2016-06-11]. https://github.com/amplab-extras/SparkR.pkg.

      [15] 譚旭杰,鄧長(zhǎng)壽,董小剛,等.SparkDE:一種基于RDD云計(jì)算模型的并行差分進(jìn)化算法[J].計(jì)算機(jī)科學(xué),2016,43(9):116-119,139. (TAN X J, DENG C S, DONG X G, et al. SparkDE: a parallel version of differential evolution based on resilient distributed datasets model in cloud computing[J]. Computer Science, 2016, 43(9):116-119,139.)

      [16] CONTRERAS J, ESPINOLA R, NOGALES F J, et al. ARIMA models to predict next-day electricity prices[J]. IEEE Transactions on Power Systems,2003,18(3):1014-1020.

      旬阳县| 邹城市| 铜梁县| 新干县| 德江县| 阳春市| 略阳县| 常德市| 长岛县| 高平市| 湖北省| 北流市| 永兴县| 临江市| 北碚区| 昆明市| 西青区| 卢龙县| 霍林郭勒市| 新密市| 广丰县| 郓城县| 利川市| 灵宝市| 汝城县| 临邑县| 万安县| 万年县| 东辽县| 五峰| 稻城县| 焦作市| 晋中市| 舟曲县| 称多县| 和田县| 会宁县| 滨海县| 武功县| 武夷山市| 昭苏县|