鐘 原,張 泰,李 平,楊緒華
西南石油大學計算機科學學院,四川 成都 610500
井控技術是石油鉆井過程中防止溢流、井涌、井噴、著火等事件發(fā)生的重要安全技術之一。井口壓力控制的核心是及時發(fā)現(xiàn)溢流,并在井底壓力和地層壓力維持相對穩(wěn)定的條件下有效地控制和排除溢流險情。當溢流發(fā)生時,傳統(tǒng)作業(yè)方法需要現(xiàn)場施工人員在較短時間內,根據(jù)不同的井下狀況,如井底壓力、地層環(huán)境以及硫化氫含量等因素,及時判斷使用何種壓井方法進行作業(yè),控制住溢流的趨勢,排除安全風險,使得井底壓力處于微平衡狀態(tài),確保安全生產(chǎn)。
實際作業(yè)過程中,存在多種壓井方法,根據(jù)不同的井況和工況,使用合適的壓井方法可以更好地應對溢流的險情,及時解決井口作業(yè)風險。針對常規(guī)井況而言,普通的壓井方法主要是循環(huán)法,如工程師法、司鉆法等。在特殊井況下可采用的壓井方法,如壓回法,根據(jù)壓力倍數(shù)不同,壓回法又可分為全壓回法和部分壓回法。
在傳統(tǒng)的作業(yè)方法中,井口壓力控制需要結合專家經(jīng)驗和根據(jù)電液比建模的數(shù)學模型實施[1-3],這種方法運算復雜,需要考慮多種因素,往往效率較低。因此,本文使用集成了隨機森林算法[4-5]的融合模型對壓井方法進行分類判斷。
本文將隨機森林算法作為主要模型,同時加入多個其他模型進行層次組合,通過Stacking 集成方式得到最終的融合模型。經(jīng)實驗驗證,該方法可以在使用少量運算資源的同時,快速獲得準確率較高的判斷結果,其預測結果相較于其他單一模型而言,具有更高準確率。本文的貢獻主要包含以下幾點:(1)將壓井方法的專家經(jīng)驗和油氣井相關參數(shù)進行歸納總結,將其轉化為符合機器學習算法需要的數(shù)據(jù)格式,并通過特征工程進行了特征處理;(2)使用隨機森林和Stacking 集成方式提升了壓井方法分類預測的性能。
決策樹[6]方法是一種重要的數(shù)據(jù)分類技術,在分類任務中,通過學習訓練集中的訓練數(shù)據(jù)構造一個分類函數(shù)或分類模型,該函數(shù)或模型能夠把數(shù)據(jù)記錄映射成某一個指定類別,實現(xiàn)未標注數(shù)據(jù)的類別預測[6]。決策樹的基本結構如圖1所示。
圖1 決策樹基本結構Fig.1 Decision tree structure
例如針對一個混合顏色的色塊,可以使用決策樹劃分為4 種純粹的顏色。目前,決策樹具有多種形式,從Quinlan[7]在1986 年提出了ID3 決策樹算法時開始統(tǒng)計,決策樹算法提出了至少7 種以上的衍生算法[6],如ID3、C4.5、EC4.5、CART、SLIQ、SPRINT 和PUBULIC。其中,分類與回歸樹(Classification and Regression Tree,CART)[8-9]是一種常用的構建決策樹的算法,常使用代表信息復雜程度的Gini 指數(shù)[10]進行節(jié)點劃分。該決策樹算法適用于樣本數(shù)據(jù)量大且特征之間關系較復雜的情況,并且在實際操作中,數(shù)據(jù)的分布往往呈現(xiàn)非線性的形態(tài),難以使用全局線性模型來擬合。但通過決策樹模型,可以很好地區(qū)分特征間的差異性,將數(shù)據(jù)分割成多個易于擬合線性模型的數(shù)據(jù)子集合。但當數(shù)據(jù)分布發(fā)生變化時,以單棵決策樹很難構建全局模型,因此,可考慮包含多棵決策樹作為基學習器的隨機森林模型。
隨機森林是通過Bagging(Bootstrap aggregating)有放回抽樣方法[11],從初始樣本中抽取不同樣本組合,并對每組樣本構建不同的決策樹形成的一種集成模型。由于有放回采樣機制對產(chǎn)生決策樹的數(shù)據(jù)進行擾動,使構建的決策樹各不相同,具有較大差異性,提高了整體模型的泛化性。在分類任務中,通常通過投票法(Voting)[12]對多個基模型的預測結果進行投票決策,確定最后的預測結果。其中,投票法可以根據(jù)投票方式分為3 類:(1)限制標簽得票數(shù)必須大于半數(shù)的絕對多數(shù)投票法;(2)簡單根據(jù)得票多少決定取值的相對多數(shù)投票法;(3)類似于加權平均法的加權投票法。合適的投票機制可使預測結果更為準確。
隨機森林綜合了多棵差異較大的決策樹預測結果,使其具有預測精度高,收斂速度快,調節(jié)參數(shù)少的優(yōu)點。經(jīng)過Sridhar 等[13]的研究,隨機森林方法在當前主流的分類器和集成器中是最為優(yōu)秀的模型之一。
結合本文應用場景,隨機森林算法的運作流程如圖2 所示。
圖2 隨機森林運作流程Fig.2 Random forest operation process
Stacking[14-15]是一種用于組合多種基學習器的疊加方法,意在從眾多結果中挑選精度更高的結果進行再組合,從而產(chǎn)生更好結果。構造基于多學習器的組合模型有許多方法,常用的包括投票法、混合法和Stacking??傮w而言,Stacking 可以使融合模型的預測結果得到進一步提升[16],此方法是一種表示學習計算方法,也是一種可擴展和分析性框架。類似于前饋神經(jīng)網(wǎng)絡的多層結構,可在多個級別上使用Wolpert[17]的堆疊泛化來提高預測準確性。與前饋神經(jīng)網(wǎng)絡相反的是,Stacking 不通過反向傳播對其進行訓練,而是通過一次次迭代來構建多層結構。
在鉆井作業(yè)時,通常由經(jīng)驗豐富的現(xiàn)場工程師根據(jù)現(xiàn)場所采集到的相關數(shù)據(jù),結合數(shù)學方法構建模型指導作業(yè)過程,并計算具體操作數(shù)值來確定壓井方法。時效上有一定滯后性,準確性上也有一定風險。因此,需要一種快速而精確的方式來協(xié)助甚至替代專家進行決策?;谏鲜鲂枨?,本文提出將隨機森林算法和Stacking 疊加方法應用于壓井方法的分類判斷中,能夠快速準確地判斷出在特定井況和工況條件下所采取的壓井作業(yè)方法。
采用Stacking 疊加方法將融合模型分為兩層結構:第一層是包含多個分類器的基模型層。在該層中,特征數(shù)據(jù)會在進行交叉驗證之后進入不同的分類器訓練。第二層是僅包含一個分類器的次模型層,在該層中,挑選一個精度較高的分類器來進行最終訓練。構建的Stacking 兩層融合模型總體結構如圖3 所示。
圖3 Stacking 兩層模型總體結構Fig.3 The overall structure of Stacking two-tier model
Stacking 具體操作時,首先,將數(shù)據(jù)集合進行隨機分割,將80% 數(shù)據(jù)劃為訓練數(shù)據(jù)集,20% 數(shù)據(jù)劃為測試數(shù)據(jù)集;然后,將訓練數(shù)據(jù)通過交叉驗證[11],將訓練數(shù)據(jù)分割后每一折中的部分數(shù)據(jù)進行矩陣堆疊,構成新的訓練數(shù)據(jù)集合;最后,使用整合后數(shù)據(jù)進行模型訓練與預測。具體的操作示意如圖4所示。
圖4 Stacking 數(shù)據(jù)流向圖Fig.4 Data stream of Stacking
設計融合模型的過程包含兩部分:首先,特征工程進行特征數(shù)據(jù)處理,然后,進行融合模型訓練。
如圖5 所示,油井相關的參數(shù)和工況等原始數(shù)據(jù)在進行特征工程處理后,進入基模型層。本文在該層使用了在結構和算法流程上具有較大的差異5 種基學習器,分別是支持向量機分類算法[18]、隨機森林算法、自適應增強算法[19]、嶺回歸分類算法以及隨機梯度下降分類算法。這些模型分別根據(jù)訓練樣本進行訓練,再將其預測結果構造成新的訓練數(shù)據(jù),交由次模型層的分類器進行訓練。本文在基模型層的預測時,使用了加權平均法,通過經(jīng)驗權重分配,得到更高準確性的預測結果作為次模型層的訓練數(shù)據(jù)。次模型層僅包含一個分類器,由于該分類器會對最終結果產(chǎn)生較大影響。因此,使用了隨機森林集成算法作為次模型層的唯一分類器。
圖5 整體操作流程圖Fig.5 Overall operation flowchart
如2.1 和2.2 節(jié)所述,本文在Stacking 兩層模型中都使用了隨機森林,兩者的運行流程相同,但在使用時存在不同。不同之處在于輸入數(shù)據(jù)和權重的分配,嵌入Stacking 基模型層中的隨機森林的輸入數(shù)據(jù)是通過Bagging 方式采樣得到的特征數(shù)據(jù),而次模型層中隨機森林的輸入數(shù)據(jù)是將基模型層中的輸出結果作為輸入數(shù)據(jù)。
由于Stacking 方式和隨機森林在運算過程中會產(chǎn)生不小的消耗[20],因此,再進行組合時,運算量可能會增大。但本文構建的模型主要是針對壓井方法分類的特定場景,其特征數(shù)據(jù)來自于3 部分:歸納總結的經(jīng)驗數(shù)據(jù)、井相關的重要參數(shù)以及部分工況參數(shù),經(jīng)過特征工程處理后再用于融合模型訓練和預測,因此,整體上而言,由于限制了特征空間維度和范圍,融合模型的運算量相對于單模型而言,不會存在較明顯的差異。
在基模型層中完成初次訓練后,會將單個分類器的輸出結果進行加權平均預測得到次模型層的訓練數(shù)據(jù)。每個分類器具有一個經(jīng)驗權重,該權重是根據(jù)單個分類器針對相同測試數(shù)據(jù)的預測準確率進行歸一化處理得到,準確率越高的模型所設經(jīng)驗權重越大。通過實驗測試和分析,經(jīng)驗權重如表1 所示。
表1 基模型層中單個分類器的經(jīng)驗權重值Tab.1 Empirical weight value of a single classifier in base model layer
根據(jù)前文介紹的隨機森林和Stacking 模型融合方法,結合壓井方法分類預測的目標,對采集的原始數(shù)據(jù)進行特征工程,包括特征篩選、特征編碼和特征選擇3 個流程。
3.1.1 特征篩選
在壓井作業(yè)過程中,通過對井相關數(shù)據(jù)進行總結,得到與井控施工方法相關的影響因素,即信息含量(影響程度)較高的多項指標,從而構建了壓井控制的特征表達,其中主要影響因素如表2所示。
表2 壓井方法判斷的主要影響因素Tab.2 Main factors to consider in determining the killing method
根據(jù)已有工程經(jīng)驗[21],在常規(guī)的油氣井鉆井過程中,地層壓力可能不高,需要在井涌發(fā)生之前或井涌前期及時檢測,可采用工程師法(一次循環(huán)法)和司鉆法(二次循環(huán)法)等常規(guī)壓井方法。而在高壓井等非常規(guī)井作業(yè)中,可采用置換法,壓回法等相對特殊的壓井方法,在保證安全的前提下進行壓井操作。
結合表1 中描述的相關信息和現(xiàn)場工程經(jīng)驗,本文選擇了4 種適用面較為廣泛的壓井方法作為壓井施工方法,即壓井方法分類的目標對象,分別為工程師法、2~3 倍壓回法、全壓回法、置換法。
3.1.2 特征編碼
由于原始數(shù)據(jù)基本都是文本型數(shù)據(jù),本文將原始數(shù)據(jù)編碼為數(shù)值型數(shù)據(jù),以便模型訓練和預測。在這一步中,為了減少數(shù)據(jù)中的噪聲干擾,同時對數(shù)據(jù)進行了去空,去重和標準化等操作。
首先,將壓井施工方法按照工程師法、2~3 倍壓回法、全壓回法、置換法順序依次編碼為0、1、2、3 的數(shù)字格式。然后,針對特征數(shù)據(jù)中的離散值與連續(xù)值的差異問題,采用了獨熱編碼(One-hot)[22]的方法進行轉換,這是一種常見的文本表示方法,比如存在特征集合SSS={“蘋果”,“西瓜”,“葡萄”},則獨熱編碼形式集合SSS′={{1,0,0},{0,1,0},{0,0,1}}。如表3 顯示了“能否配置鉆進液”、“是否會壓破套管鞋”兩項特征的轉換結果。
表3 特征獨熱編碼轉換形式Tab.3 Feature one-hot encoding conversion form
經(jīng)轉換過后的數(shù)據(jù)將文字信息轉化為數(shù)字形式的多個特征相結合的形式。這種形式使得類別之間的距離是相同的,可有效避免人工導致的類別差異化[23]。
3.1.3 特征選擇
上述編碼操作增加信息量,但也增加了信息維度,增大了運算量。在保證預測精度的前提下,為了提高運算效率,本文對原始特征進行了特征選擇。使用了決策樹算法中計算最優(yōu)分割點的方式來實現(xiàn)[24],這是一種集合封裝式和過濾式[25]混合評價策略的特征選擇方法,其工作原理是決策樹構建過程中,即節(jié)點分裂時會對信息熵增益最大的特征進行優(yōu)先分割[26],即表示這些特征是更重要的特征表達。本文統(tǒng)計了多棵決策樹構建過程中,節(jié)點分裂使用頻率最高的前6 項特征作為融合模型的訓練特征,并根據(jù)實際情況和經(jīng)驗值確定了其取值范圍,最終選擇的特征如表4 所示。
表4 選擇的特征信息Tab.4 Extracted feature information
進行特征工程后的特征數(shù)據(jù)首先投入基模型層作為輸入特征,得到輸出結果為壓井方法;多個輸出結果進行加權構造后,再投入次模型層作為輸入數(shù)據(jù)。基模型層所使用的部分輸入特征和輸出結果如表5 所示。
表5 基模型層的輸入特征和輸出結果Tab.5 Input characteristics and output results of base model layer
表6 為次模型層所使用的部分輸入數(shù)據(jù)和輸出結果。分類結果1 表示基模型層的分類器1 所產(chǎn)生的分類結果,由于本文使用了5 種基分類器,因此,共包含5 種分類結果作為次分類器的輸入數(shù)據(jù),最后的輸出結果為最終選擇的壓井方法。在對5 種分類結果進行加權平均操作時,使用分類概率和權重相乘的結合策略,這樣可以避免因人為編碼導致的各種分類距離不合理的問題。
表6 次模型層的預輸入數(shù)據(jù)和分類結果(無權重)Tab.6 Input data and prediction results of sub-model layer(without weighting)
由于目前沒有開放的井控作業(yè)數(shù)據(jù)集,本文通過人工方式構建了井控作業(yè)數(shù)據(jù)集,并選用80%樣本的數(shù)據(jù)作為訓練集,20%作為測試集。
同時,本文在訓練模型過程中,在保持所有模型同類參數(shù)一致的前提下,盡量通過參數(shù)調整將每個模型的性能最優(yōu)化。并通過3 種量化指標對融合模型進行調參指導和性能評估。這3 個指標分別是準確率(A)、召回率(R)、F-Score(F)[23,27-29]。其中,準確率計算方式為[23]
而召回率則是根據(jù)分類的4 種情況進行的第二步運算。具體分類情況如表7 所示。
表7 類別預測情況解釋Tab.7 Category predictions explained
召回率的定義為[23]
F值定義為[23]
本文將所構建的融合模型與其他常用分類模型進行了對比,實驗結果如表8 所示。
表8 多種方法的對比實驗結果Tab.8 Comparative experimental results of various methods
由表8 可以看出,本文構建的融合模型相較于原始隨機森林算法在A指標上高出約2%,在F和R值上分別有約4%和8%的提升,相比于其他單個模型具有最高約30%的提升。綜上,在壓井方法分類預測的場景下,本文構建的融合模型方法相比于其他方法,具有更好的預測性能。
(1)結合壓井作業(yè)現(xiàn)場工程經(jīng)驗,井的基礎數(shù)據(jù)以及工況數(shù)據(jù),采用特征工程篩選出更重要的特征數(shù)據(jù),簡化了壓井方法分類預測的特征維度,適度壓縮了特征空間。從而構建了基于隨機森林的Stacking 兩層融合模型,基模型層中挑選了多種分類器做基學習器,次模型層中采用了隨機森林集成算法。由于重要特征的篩選壓縮了特征空間,相對于傳統(tǒng)的專家系統(tǒng)和單模型預測,本文構建的兩層融合模型可獲得更高的預測準確率,同時,也能實現(xiàn)對壓井方法的快速分類預測。
(2)由于數(shù)據(jù)采集上的限制,沒有實現(xiàn)對壓井方法中某些重要的壓力數(shù)值(如套管壓力)的預測,下一步的研究將進一步完善井控作業(yè)數(shù)據(jù)集,實現(xiàn)壓井方法對應的壓力曲線的回歸預測。