李春生,鄒林浩,張可佳,高雅田,劉 濤,豆立憲
(東北石油大學(xué) 計算機與信息技術(shù)學(xué)院,黑龍江 大慶 163318)
隨著信息技術(shù)的不斷提升,在生活和生產(chǎn)過程都產(chǎn)生大量的數(shù)據(jù),在大量的數(shù)據(jù)中往往存在異常數(shù)據(jù),這些異常數(shù)據(jù)都或多或少地影響著人們的生產(chǎn)及生活[1]。異常點檢測能夠在大量的數(shù)據(jù)中快速、準(zhǔn)確地找出異常數(shù)據(jù)并進行處理,解決異常數(shù)據(jù)帶來的問題或事故。
目前在錄井物性評價方法中,機械比能比值方法和功交匯方法是評價所依據(jù)的定量化標(biāo)準(zhǔn),但是工程數(shù)據(jù)中有大量異常點數(shù)據(jù),無法判斷其是否準(zhǔn)確,導(dǎo)致在計算物性評價時產(chǎn)生了不理想的結(jié)果,甚至對巖性識別、物性評價、油氣性監(jiān)測等工作也產(chǎn)生了不同程度的影響,因此越來越多的錄井科研人員開始研究處理異常值問題。當(dāng)前處理錄井異常數(shù)據(jù)的方法主要是利用3σ準(zhǔn)則和人工處理方法。3σ準(zhǔn)則的處理原理是把均值±(3*標(biāo)準(zhǔn)差)范圍外的數(shù)據(jù)作為異常值,并計算出相鄰5個數(shù)據(jù)點的平均值作為替代值,該方法誤差較大,且經(jīng)常存在異常值漏檢。還有部分錄井解釋人員使用人工處理方法,解釋人員將錄井?dāng)?shù)據(jù)以折線圖的方式展現(xiàn)出來,并觀察找出偏差較大的異常值剔除,此方法效率低、成本高,極大地耗費了人力物力,因此目前處理錄井異常數(shù)據(jù)的方法不完全合適,需要采用科學(xué)的方法對這些工程數(shù)據(jù)進行異常點處理。
針對“如何更快速、精準(zhǔn)地處理錄井?dāng)?shù)據(jù)中異常數(shù)據(jù)”問題,該文提出了一種基于BP神經(jīng)網(wǎng)絡(luò)的異常值處理方法。通過建立BP神經(jīng)網(wǎng)絡(luò)模型,并將BP神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)樣本的均方根誤差作為閾值判斷數(shù)據(jù)的異常情況。實驗表明,基于BP神經(jīng)網(wǎng)絡(luò)方法處理錄井?dāng)?shù)據(jù)異常值精準(zhǔn)度更高、誤差更小,論證了該方法的有效性和應(yīng)用價值。
由于各種異常值檢測方法針對的測定值都不同,效果也各不相同,所以在測定值和異常值檢測方法不同的情況下得到的結(jié)論和效果也是不同的,很難找出最優(yōu)的異常值檢測方法。根據(jù)錄井中異常數(shù)據(jù)的特點,本節(jié)主要根據(jù)異常數(shù)據(jù)的表征比較不同異常點檢測方法,選擇出可靠的檢測異常值數(shù)據(jù)方法來處理錄井工程數(shù)據(jù)。
在石油鉆井過程中,能導(dǎo)致錄井工程數(shù)據(jù)出現(xiàn)異常值的原因有很多,其中包括鉆具的疲勞可能使扭矩數(shù)值增大;鉆具的折斷可能使扭矩減小,同時鉆速增大;井壁垮塌、井漏可能導(dǎo)致轉(zhuǎn)速加快、扭矩減小,同時鉆壓降低等現(xiàn)象。
錄井異常數(shù)據(jù)的表征主要分為突變值數(shù)據(jù)異常和整體偏差異常兩種情況:(1)突變值數(shù)據(jù)異常,指的是錄井?dāng)?shù)據(jù)在某一井深突然出現(xiàn)較大程度的升高或降低,但是在很短的時間內(nèi)又恢復(fù)到正常數(shù)值的情況。比如操作不當(dāng)導(dǎo)致工具掉落等情況,可能使錄井?dāng)?shù)據(jù)產(chǎn)生突變值異常數(shù)據(jù)。(2)整體偏差異常,指錄井?dāng)?shù)據(jù)普遍整體的升高或降低。比如鉆具的折斷、卡鉆等情況,但是當(dāng)?shù)貙影l(fā)生改變時,也有可能導(dǎo)致錄井?dāng)?shù)據(jù)的整體改變,所以在判斷數(shù)據(jù)異常時應(yīng)該具體情況具體分析。
(1)格魯布斯檢驗法。

(1)
(2)

(2)K-均值聚類。
K-means聚類算法是由J.B.MacQueen在1967年提出的[3]。K-means算法的中心思想是將指定的數(shù)據(jù)集合按照規(guī)定分為K組,數(shù)據(jù)集M由X個a維數(shù)據(jù)所構(gòu)成。每一個類都被當(dāng)作一個分組,其中用Ck來表示每一個類,也叫做簇,并且每個類Ck都有一個中心Oi[4-5]。其中mi-Ok為兩個數(shù)據(jù)點的歐氏距離,計算類中數(shù)據(jù)點到聚類中心Oi的誤差平方和,計算公式如下所示:
(3)
(3)BP神經(jīng)網(wǎng)絡(luò)。
BP神經(jīng)網(wǎng)絡(luò)算法:人工神經(jīng)網(wǎng)絡(luò)(artificial neural network)在能源應(yīng)用、圖像分析、醫(yī)學(xué)工程等領(lǐng)域中有著廣泛的應(yīng)用[6-8]。它是一個由大量節(jié)點(神經(jīng)元)構(gòu)成的非線性系統(tǒng),具有強大的容錯性,并且具有自學(xué)習(xí)、自組織、自適應(yīng)的能力[9]。神經(jīng)網(wǎng)絡(luò)通過網(wǎng)絡(luò)學(xué)習(xí)得到結(jié)果的誤差,反向傳播到隱含層,通過反復(fù)的訓(xùn)練和改變權(quán)值、閾值,最終確定了最小誤差對應(yīng)的系數(shù),完成對目標(biāo)的學(xué)習(xí)。當(dāng)BP神經(jīng)網(wǎng)絡(luò)的層數(shù)和神經(jīng)元數(shù)較多時,會導(dǎo)致程序的循環(huán)嵌套,但是可以利用MATLAB中自帶的工具箱,使建立BP神經(jīng)網(wǎng)絡(luò)模型變得簡單便捷。因此,可直接通過MATLAB完成對BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和學(xué)習(xí)。其偽代碼如算法1所示:
算法1:BP神經(jīng)網(wǎng)絡(luò)(誤差反向傳播算法)。
output:多層前饋神經(jīng)網(wǎng)絡(luò)
1 begin
2 在(0,1)范圍內(nèi)隨機初始化網(wǎng)絡(luò)中的所有連接權(quán)值的閾值;
3 repeat
4 for all(xk,yk)∈Ddo
5 計算當(dāng)前樣本輸出;
6 計算輸出神經(jīng)元的梯度;
7 計算隱層的神經(jīng)元梯度項;
8 更新權(quán)值;
9 更新閾值;
10 end for
11 until達到停止條件。
12 end
綜上所述,當(dāng)在一組測定值中存在一個以上的異常值時,格魯布斯檢驗法檢測異常值不是高效的[2]。K-means聚類算法最大的問題就是K值的選擇問題,當(dāng)某段數(shù)據(jù)整體提升或者下降時,也就無法判別K的取值,嚴(yán)重影響查找異常點的準(zhǔn)確率。
針對以上這些問題,利用BP神經(jīng)網(wǎng)絡(luò)算法可以很好地解決[13],異常點檢測實際上可以看作對未知數(shù)據(jù)的預(yù)測,計算出閾值進行比較,關(guān)鍵在于建立檢測異常點數(shù)據(jù)的模型,根據(jù)建立好的神經(jīng)網(wǎng)絡(luò)模型就可以準(zhǔn)確地判斷數(shù)據(jù)異常情況。
(1)樣本的確定。
選取合適的訓(xùn)練樣本,為解決錄井?dāng)?shù)據(jù)中不同數(shù)據(jù)存在數(shù)量級不同的問題,應(yīng)該首先對錄井?dāng)?shù)據(jù)進行歸一化,保證所有數(shù)據(jù)都在0-1范圍內(nèi)。
[pn,min(p),max(p),tn,min(t),max(t)]=
premnmx(p,t)
(4)
式中,p是輸入數(shù)據(jù);t是目標(biāo)輸出數(shù)據(jù);tn是t歸一化后的數(shù)據(jù);pn是p歸一化后的數(shù)據(jù)。
(2)網(wǎng)絡(luò)層數(shù)的確定。
根據(jù)Kolmogorov定理可知,3層的BP神經(jīng)網(wǎng)絡(luò)可以實現(xiàn)任意非線性映射,所以先確定網(wǎng)絡(luò)層數(shù)為3層[14]。
net=newff(minmax(pn),[n,1],{‘tansig’,
‘purelin’},‘trainlm’)
(5)
式中,net為網(wǎng)絡(luò)建立函數(shù);n為隱含層神經(jīng)元數(shù)目;tansig為正切S型傳遞函數(shù);trainlm為基于L-M規(guī)則的訓(xùn)練前向網(wǎng)絡(luò)函數(shù);purelin為線性傳遞函數(shù);1為隱含層個數(shù)。
(3)隱含層神經(jīng)元數(shù)的確定。
隱含層的神經(jīng)元數(shù)直接影響著網(wǎng)絡(luò)的容量、泛化能力、學(xué)習(xí)速度以及輸出性能等。參考公式[15]:
(6)
式中,a為1~10之間的常數(shù);no為輸出層神經(jīng)元數(shù);ni為輸入層神經(jīng)元數(shù);n為隱含層神經(jīng)元數(shù)。本模型將工程異常數(shù)據(jù)作為輸入,將工程標(biāo)準(zhǔn)數(shù)據(jù)作為輸出,則ni為4,no為4,n為8,初步建立4-8-4的BP神經(jīng)網(wǎng)絡(luò)模型,如圖1所示。

圖1 BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型網(wǎng)絡(luò)
(4)其他網(wǎng)絡(luò)訓(xùn)練指標(biāo)的確定。
本模型2次顯示之間的訓(xùn)練次數(shù)確定為50,學(xué)習(xí)速率確定為0.005,μ的初始值確定為0.9,網(wǎng)絡(luò)目標(biāo)性能確定為0.000 02,訓(xùn)練代數(shù)確定為4 000。在訓(xùn)練過程中,為提高效果可對其各項指標(biāo)進行適當(dāng)修改。
(5)訓(xùn)練網(wǎng)絡(luò)。
本模型只要調(diào)用TRAINGDM算法訓(xùn)練BP網(wǎng)絡(luò)。
[netTR]=train(net,pn,tn)
(7)
式中,net為網(wǎng)絡(luò)建立函數(shù);pn是p歸一化后的數(shù)據(jù);tn是t歸一化后的數(shù)據(jù)。
因為輸入的訓(xùn)練數(shù)據(jù)是歸一化處理后的數(shù)據(jù),所以在模型訓(xùn)練后得出的輸出數(shù)據(jù)應(yīng)該進行數(shù)據(jù)還原。
An=sin(net,pn,tn)
(8)
A=postmnmx(An,min(t),max(t))
(9)
式中,A為An反歸一化后的輸出數(shù)據(jù),其與目標(biāo)輸出數(shù)據(jù)t之間的擬合程度由擬合度R指標(biāo)描述;An為pn的網(wǎng)絡(luò)仿真結(jié)果。
(6)檢驗網(wǎng)絡(luò)。
檢驗網(wǎng)絡(luò)是測試訓(xùn)練網(wǎng)絡(luò)學(xué)習(xí)的結(jié)果,輸入數(shù)據(jù)進行網(wǎng)絡(luò)模型測驗,完成對輸出數(shù)據(jù)的預(yù)測[16]。
p2n=tramnmx(p2,minp,maxp)
(10)
A2n=sim(net,p2n)
(11)
A2=postmnmx(A2n,min(t),max(t))
(12)
式中,p2為檢驗樣本或預(yù)測樣本的輸入數(shù)據(jù);p2n為p2歸一化后的數(shù)據(jù);A2n為網(wǎng)絡(luò)對p2n的仿真結(jié)果;A2為輸出數(shù)據(jù);其他變量意義同前。若為檢驗網(wǎng)絡(luò),則將A2與檢驗樣本的目標(biāo)輸出數(shù)據(jù)t2進行比較,可獲得檢驗誤差;若為預(yù)測網(wǎng)絡(luò),則A2為預(yù)測值。
在傳統(tǒng)的異常點檢測方法中,往往存在選擇閾值的困難,閾值的選擇決定著檢測異常點的準(zhǔn)確性。該文將樣本數(shù)據(jù)的均方根誤差作為閾值,用預(yù)測的誤差平方值與閾值進行比較,如果預(yù)測的誤差平方值大于閾值,即為異常點。詳細(xì)步驟如下:

step3:計算BP神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)樣本的均方根誤差作為閾值,計算公式如下所示:
(13)
step4:計算P=ε(i)2-RMSD(i),如果P大于0則為異常點數(shù)據(jù)。
step5:用BP神經(jīng)網(wǎng)絡(luò)預(yù)測值代替異常點數(shù)據(jù)。
該方法解決了閾值選擇的問題,提高了檢測異常點的準(zhǔn)確性,還為異常數(shù)據(jù)點找到了較好的替換數(shù)據(jù)。經(jīng)過多次實驗,該方法檢測異常點準(zhǔn)確率高,方便靈活。
軟件環(huán)境:在Windows10操作系統(tǒng)下開發(fā)。
硬件環(huán)境:Inter Corei5-7400;4G內(nèi)存;500G硬盤。
開發(fā)工具:Matlab R2014a;Visual Studio 2013。
實驗選取錄井真實數(shù)據(jù)作為實驗訓(xùn)練樣本,收集了8組實驗數(shù)據(jù)。其中包括4組正常數(shù)據(jù)和4組異常數(shù)據(jù),每組數(shù)據(jù)含同一井段鉆壓數(shù)據(jù)、鉆速數(shù)據(jù)、扭矩數(shù)據(jù)、鉆時數(shù)據(jù),其異常數(shù)據(jù)基本信息如表1所示。將8組訓(xùn)練數(shù)據(jù)輸入到建立好的BP神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練,把訓(xùn)練好得到的權(quán)值系數(shù)、誤差值等系數(shù)保存,并用保存的系數(shù)對測試數(shù)據(jù)進行計算判斷。

表1 異常數(shù)據(jù)集基本信息
選取大慶市某油田單井的2 540 m~2 590 m錄井?dāng)?shù)據(jù)進行測試,共選擇鉆壓、鉆速、扭矩、鉆時數(shù)據(jù)各500條。其測試集數(shù)據(jù)基本信息如表2所示。

表2 測試集數(shù)據(jù)
該文采用查全率(Recall)和誤報率(FAR)作為評價指標(biāo)來判斷處理錄井異常數(shù)據(jù)的好壞。查全率可反映查找正確異常點個數(shù)占總異常點個數(shù)的比例,其值越大,證明效果越好。誤報率指正常數(shù)據(jù)被當(dāng)作異常數(shù)據(jù)的比例,其值越小,效果越好。計算公式分別為:

(14)

(15)
式中,TP為被預(yù)測為正的正樣本;FN為被預(yù)測為負(fù)的正樣本;FP為被預(yù)測為正的負(fù)樣本;TN為被模型預(yù)測為負(fù)的負(fù)樣本。
實驗選取井深作為X軸坐標(biāo)繪制圖像,將測試集分別對格魯布斯檢驗法、K-means聚類算法、BP神經(jīng)網(wǎng)絡(luò)進行異常數(shù)據(jù)檢測,并繪制檢測異常點情況圖像,來對比BP神經(jīng)網(wǎng)絡(luò)檢測異常點數(shù)據(jù)的效果。
圖2和圖3分別為格魯布斯檢驗法和K-means聚類算法檢測異常點的效果圖。從圖中可以看出,格魯布斯檢驗法和K-means聚類算法均有異常點漏檢或誤檢等情況。圖4為BP神經(jīng)網(wǎng)絡(luò)模型的預(yù)測數(shù)據(jù)和實際檢測樣本的對比,可以看出異常點數(shù)據(jù)基本找出,并且異常點數(shù)據(jù)的預(yù)測值與實際數(shù)據(jù)更加緊密、精準(zhǔn)。

圖2 格魯布斯檢驗法檢測的異常點數(shù)據(jù)

圖3 K-means聚類算法檢測的異常點數(shù)據(jù)

圖4 BP神經(jīng)網(wǎng)絡(luò)檢測樣本值與預(yù)測值對比
由表3可知,針對錄井異常數(shù)據(jù)情況,比較已有的異常檢測算法,BP神經(jīng)網(wǎng)絡(luò)方法檢測異常點更加準(zhǔn)確、誤差更小。證明BP神經(jīng)網(wǎng)絡(luò)算法優(yōu)于同類算法,可有效地檢測大規(guī)模數(shù)據(jù)、異常聚集數(shù)據(jù)集中的異常樣本,表現(xiàn)出了該算法的準(zhǔn)確性和優(yōu)越性。

表3 查全率和誤報率對比結(jié)果
針對“如何更快速、精準(zhǔn)地處理錄井?dāng)?shù)據(jù)中異常數(shù)據(jù)”的問題,提出了一種基于BP神經(jīng)網(wǎng)絡(luò)的異常值處理方法。通過建立BP神經(jīng)網(wǎng)絡(luò)模型,并計算BP神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)樣本的均方根誤差作為閾值判斷數(shù)據(jù)的異常情況。
由于錄井?dāng)?shù)據(jù)的隨機性,傳統(tǒng)方法檢測錄井異常數(shù)據(jù)準(zhǔn)確度不高,也無法對異常值數(shù)據(jù)實現(xiàn)替補,而基于BP神經(jīng)網(wǎng)絡(luò)的異常點數(shù)據(jù)檢測模型能夠有效檢測異常點數(shù)據(jù)。經(jīng)過異常數(shù)據(jù)處理后,不僅能夠很好地把異常點數(shù)據(jù)處理掉,還能為異常點數(shù)據(jù)填補正常的數(shù)值,說明應(yīng)用BP神經(jīng)網(wǎng)絡(luò)模型對異常點數(shù)據(jù)的處理具有較好的效果,結(jié)果比較可靠。