高雅田, 范雄
(東北石油大學,計算機與信息技術學院,黑龍江,大慶 163318)
巖性識別是儲層評價、油藏描述以及實時鉆井監控等方面的重要內容[1]。傳統巖性識別方法主要包括巖心巖屑和薄片識別法、交會圖法、對應分析法等。這些方法需要較高專業知識,受人為因素影響較大,無法滿足大量數據進行處理和分析的需求。目前,隨著計算機技術的發展,機器學習在實踐應用中取得巨大突破。文獻[2]引入BP神經網絡進行復雜巖性識別,文獻[3]應用支持向量機(SVM)對六種巖性進行分類,文獻[4]提出K-NN模型實現對復雜碳酸鹽巖巖性分類。上述研究中的巖性分類方法大都采用了有監督的機器學習算法,雖然這類型算法很多且識別精度較高,但是基于機器學習的分類算法需要提前訓練大量數據集,且訓練消耗時間過長、算力較大。在對大量巖性數據進行預測時,這些分類方法并不是最高效的。
本文提出使用無監督的k-means算法實現巖性識別,該方法對大量數據的巖性分類有更高的性價比和更有可行性。目前國內外對以聚類算法實現巖性分類的研究較少,并且聚類算法有分類算法所不能比擬的優勢,即不需提前訓練便可完成巖性預測工作。
k-means算法屬于無監督學習,同時也是基于劃分的聚類算法[5],k-means聚類算法一般采用歐式距離作為度量樣本之間相似度的指標,相似度與樣本間的距離成反比,相似度越大,距離越小[6]。根據k-means聚類算法的原理,要實現最終的聚類效果:首先,需要給定初始聚類數目K值;然后,根據相似度計算原理不斷迭代更新聚類中心,直到聚類中心穩定生成最終結果。相較于其他的聚類算法,k-means算法以效果較好、思想簡單的優點在聚類算法中得到了廣泛的應用,包括市場研究、模式識別、數據分析和圖像處理。
k-means算法的核心思想是:給定m個n維數據集以及k值作為輸入參數,隨機選取k個聚類中心Ci(1≤i≤k),利用歐式距離計算得到剩余數據到每個聚類中心Ci的值,找出數據集中與每個聚類中心距離最小的數據對象,將數據對象匹配到聚類中心Ci所對應的集群中。然后,求出每個集群中數據的均值從而生成新的聚類中心,重復迭代這個過程,最終得到穩定的聚類中心或者達到達到迭代次數。
計算數據與聚類中心歐式距離的公式為
其中,m為數據集,Ci表示第i個聚類中心,n表示數據維度,mj、Cij表示m和Ci的第j個屬性值。
k-means算法的流程圖如圖1所示。

圖1 k-means算法流程圖
k-means算法可以對大規模的數據集進行分類,其算法復雜度為O(mnkT)。其中,m表示數據集數量,n表示數據集的維度,k表示聚類數目,T表示總循環次數。
針對現階段錄井巖性識別算法的缺陷,本文結合聚類算法的特點構建巖性識別模型。與傳統以機器學習算法構建的巖性分類模型相比,本模型可實現在不影響精度的前提下對大規模數據的快速分類。在本模型中,首先需要對初始測井曲線數據集進行預處理,篩選出完整的共計7種屬性的特征值作為模型輸入,然后采用k-means算法構建分類模型對實驗數據進行聚類,將模型輸出結果進行標注,生成帶有巖性標簽的結果,實現巖性的分類。用巖性剖面數據來驗證模型的精度。巖性分類模型的系統流程圖如圖2所示:

圖2 系統流程圖
本實驗所采用的數據集來源于松遼盆地構造區某井的測井數據。根據巖性解釋結果分析,該區地層的巖石類型主要包括泥巖、粉砂巖和油頁巖三種巖性。
原始的測井數據采集過程中可能會受到人為因素的干擾,在生成的后現數據集中可能出現重復、不完整、不相關或者變異的數據,嚴重影響模型分類結果。因此,在進行分析之前需要進行數據清洗。原始數據中主要存在缺失值、無關數據、重復數據和異常數據。(1)無關數據和重復數據,根據現場調研,刪除同類信息和無關信息數據;(2)異常數據,原始數據中存在大量屬性值為”-999.25”的數據,這類數據影響占比不大,對巖性分類干擾較大,選擇刪除異常值對應的元組;(3)缺失值在數據中占比很少,采用拉格朗日插值法,確保數據的完整性。數據處理后得到一組具有七個屬性的測井數據,分別是自然伽瑪(GR)、自然電位(SP)、深側向(RD)、淺側向(RS)、聲波時差(DT24)、井徑(CAL)、井深(DETT)。
拉格朗日插值法公式為
數據標準化處理的目的是降低不用特征值的量綱和取值范圍差異造成的影響,本文采用零——均值規范化方法將特征值映射到[-1,1]:
其中,x*為歸一化后的值,xmean為數據集中特征值的均值,xstd為數據集中特征值的標準差。
本實驗選取的數據包括:(1)測井曲線數據從284 m到1 185 m,間隔為1 m,共902組測井曲線作為實驗數據集。(2)錄井巖性剖面解釋數據,數據主要有頂部深度、底部深度和巖性。
操作系統為Windows 10,軟件環境為Python 3,Jupyter Notebook。
讀取處理后的數據,作為訓練數據。用k-means聚類算法訓練數據。對k-means算法的參數進行初始化設置,如表所示。
本文用錄井巖性剖面解釋對聚類效果進行驗證。錄井巖性剖面解釋結果是人工校正的巖性剖面結果。基于k-means算法的巖性分類模型可實現對巖性的訓練、分類、評價等功能。本文借助purity評價法、召回率和準確率、F-Measure值評價法三種方法評價模型分類結果。

表1 k-means參數初始化
(1)purity評價法
purity評價法,即計算正確聚類數占總數的比例。purity評價公式如下:
其中,x={x1,x2,…,xi}表示類簇的集合,xi表示第i個聚類的集合;y={y1,y2,…,yk}表示需要被聚類的集合,yi表示第i個聚類對象;n表示被聚類對象集合的總數。
(2)召回率和準確率
召回率的定義為r=R/(R+M),準確率的定義為p=R/(R+D)。其中R指真實巖性類別與聚類類別一致;M指真實巖性類別本不屬于該類,但模型預測屬于該類;D指真實巖性類別本不屬于該類,但模型預測屬于該類。
(3)F-Measure值評價法
F-Measure值評價法結合召回率r和準確率p對模型預測結果作出評價。公式如下:
本文采用最常用的F1評價法,即選取α的值為1。
聚類算法的結果只能說明相同標簽的數據屬于同一類,并不代表對數據的最終預測。因此本實驗需要對聚類結果添加標簽屬性。通過對標簽的轉換,才能將聚類結果與巖性剖面數據中的巖性進行類別匹配。
表2統計了最終聚類中心和每個類的數目,通過對聚類結果進行標簽轉換可知,類型0為泥巖,該井段中泥巖共有659項,占總比的73%。類型1為粉砂巖,共有236項,占總比26%;類型2為油頁巖,共有7項,占總比不到1%。泥巖在深側向(RD)、淺側向(RS)屬性上的值最小,在聲波時差(DT24)、自然電位(SP)和井徑(CAL)屬性上的值最大;粉砂巖在自然伽瑪(GR)、自然電位(SP)屬性上的值最小;油頁巖在聲波時差(DT24)屬性上的值最小,在自然伽瑪(GR)、深側向(RD)和淺側向(RS)屬性上的值最大。由上述圖表分析可知,每種巖性都有不同的屬性特征值。

表2 聚類中心及聚類數目
表3為k-means聚類算法的巖性識別效果表。表3中YXDH表示巖性、recall表示召回率、accuracy_rate表示準確率、YX_counts表示樣品數量,該井段共有三類數據,n00為泥巖共718項數據,s05為粉砂巖共170項數據,y01為油頁巖共14項數據。由表3可以看出,k-means算法對泥巖(n00)識別率達到96.22%,召回率為0.883,F-measure值為0.921;對粉砂巖(s05)的識別率達到63.56%,召回率為0.882 3,F-measure值為0.738 9;對油頁巖的識別率達到57.14%,召回率為0.285 7,F-measure值為0.380 9以及purity評價法的準確率為87.3%。結合三種評價方法可知,k-means算法巖性分類模型對泥巖和粉砂巖的識別效果較好,對油頁巖的識別效果較差。以上結果表明,本文采用基于k-means算法的分類模型可取得較好的效果。

表3 k-means聚類模型識別效果
本文提出采用k-means聚類算法進行巖性分類,識別平均準確率達到87.3%,對個別巖性的識別效果達到96.22%,分類結果與錄井剖面解釋結果基本吻合。證明了該方法在松遼盆地巖性性識別方面的可行性與有效性。