楊 勇,張忠政,盧曉輝,楊 震,王衛(wèi)東
(1.鞍鋼集團礦業(yè)公司弓長嶺有限公司 露采分公司,遼寧 遼陽 111008;2.東北大學 巖石破裂與失穩(wěn)研究所,遼寧 沈陽 110819)
鉆爆法施工技術和微震監(jiān)測技術廣泛應用于地下礦山、露天礦山、水電站和隧道等巖石工程的建設。鑿巖爆破作為巖石工程施工中必不可少的關鍵環(huán)節(jié),必然會對基于微震監(jiān)測信號的巖體損傷過程分析產生干擾,嚴重影響分析結果的準確性。因此,在尋找爆破與巖體損傷分別產生的微震信號的區(qū)別的基礎上,對爆破擾動引起的微震信號進行剔除,是準確分析工程巖體損傷過程的基礎和關鍵[1-6]。
在以前研究中,諸多學者基于爆破產生的微震信號或者聲發(fā)射信號特性,對爆破與巖石損傷產生的微震信號或者聲發(fā)射信號進行了區(qū)分。例如:趙國彥等[7]采用頻率切片小波變換技術對典型的礦山巖體微震信號和爆破振動信號的區(qū)別進行了研究;姜鵬等[8]利用S 變換分析地下廠房巖石破裂、爆破振動信號的頻率特征,建立基于遺傳算法優(yōu)化的BP 神經網絡模型,實現(xiàn)信號的準確分類;李賢等[9]對Allen算法進行改進,提出適用于工程尺度的微震信號及P 波初至自動識別的AB(Allen coupled with Bear algorithm)算法;陳炳瑞等[10]對大量微震信號進行分析,發(fā)現(xiàn)STA/LTA 算法在信號實時觸發(fā)后能大致表征波形振幅和頻率的變化,巖石破裂信號和非巖石破裂信號在延遲位置處R 值具有差異性;張法全等[11]針對微震信號難以精確識別的問題,提出一種基于RST-NMF 微震信號時頻分析和分類方法;Liu 等[12]根據爆破產生的聲發(fā)射信號的衰減特征和參數(shù)特征對爆破干擾信號進行了準確剔除。上述信號分析方法,能夠準確區(qū)分巖體損傷與爆破擾動產生的微震或者聲發(fā)射信號;然而巖體失穩(wěn)具有突發(fā)性,這就要求信號鑒別方法能夠對海量的微震信號或者聲發(fā)射信號進行快速、準確區(qū)分。
Spark 平臺作為Apache 項目的頂尖大數(shù)據處理平臺,具有處理速度快、程序編寫簡單等特點,特別是對于海量數(shù)據的處理具有一定的優(yōu)勢。另一方面,在數(shù)據分類算法方面有樸素貝葉斯分類器、基于AdaBoost 分類器、SVM 分類器和基于K 鄰近算法的分類器等。為此,采用識別微震爆破常用的Fisher 分類算法,通過采用Spark RDD 的方式進行實現(xiàn),并將分類結果用于后續(xù)的風險預報預警。
Fisher 線性判別方法由Fisher 于1936 年提出,該算法主要用于數(shù)據分類。Fisher 線性判別方法的本質是將數(shù)據點按照離散程度,尋找在最大程度上能夠區(qū)分數(shù)據點類別的投影方向,從而將高維度的數(shù)據轉換為低維度的數(shù)據,由于判別式是線性的,因此,F(xiàn)isher 算法是一種線性判別方法。Fisher 分類算法示意圖如圖1。
圖1 Fisher 分類算法示意圖
Fisher 判別式的一般形式為:
式中:L 為判別指標;Y1、Y2、Y3、…、Yn為判別參數(shù);b1、b2、b3、…、bn為權重系數(shù)。
以2 個樣本集ω1、ω2的分類為例,介紹Fisher算法的計算過程。
計算各類樣本的均值向量Mi(i=1,2):
式中:Ni為樣本集ωi的樣本個數(shù);X 為樣本集ωi中的元素數(shù)值。
類內離散度表示各類數(shù)據內部點之間的離散程度,總類內離散度表示各類類內離散度的線性代數(shù)和,類內離散度Si和總類內離散度矩陣SW的計算公式如下:
類間離散度矩陣Sb衡量了各類別之間的離散程度相關性,該值越大,說明各類之間的離散程度越大,類間離散度矩陣Sb的計算公式如下:
若各類內部的聚集程度越小,而類間的離散程度越大,則說明此時的區(qū)分效果是最佳的,反映到表達式上則是類間離散度和類內離散度的比值JF(w)越大,區(qū)分效果越好:
使JF(w)取最大值的解w*是為最佳的權系數(shù),即Fisher 判別系數(shù)。最終可求得w*的表達式為:
最終的Fisher 判別式為:
對于閾值y0,這里采用一種簡單的計算方式:
式中:m1、m2為一維空間樣本均值。
通過搭建Spark 平臺,借助Scala 語言和RDD算子編寫Spark RDD 程序,將Fisher 算法遷移到Spark 平臺下。
在程序的設計過程中,除了核心Fisher 代碼,最重要的2 個過程分別是借助數(shù)據分析平臺從云端數(shù)據庫遠程讀取微震信號數(shù)據和向云端數(shù)據庫遠程寫入處理結果數(shù)據,并且在讀寫的過程中著重考慮程序的I/O 效率。
通過Spark 中的JdbcRDD 方法可以對操作范圍、操作方式等進行設定,返回值為JdbcRDD(String,String,Double,Double,……,Double)類型,JdbcRDD 存儲類型與從數(shù)據庫選擇讀取數(shù)據有關。
計算過程將每一條數(shù)據轉換成LabeledPoint,其中l(wèi)abel 為事件類型,feature 為事件特征參數(shù)。由于Scala 是一種函數(shù)式編程語言,因此可以將求1 組向量的均值向量(meanVector)、計算向量之和(vectorAdd)、計算向量之差(vectorSub)、計算向量點乘積(vectorMulti)、計算矩陣之和(matrixAdd)、矩陣求逆(matrixInverse)等過程封裝成函數(shù),然后利用Spark 基本的RDD 算子將各個過程組合起來完成整個過程的計算。由于數(shù)據分布式并行在每臺機器上,因此為了使處理過程更加高效,對meanVector 的計算結果采用了廣播變量(broadcast)的方式,通過這種方式可以將所求得的均值向量以節(jié)點為單位共享到每個計算任務中。廣播變量如圖2。
圖2 廣播變量
經過Spark 平臺下Fisher 算法處理后,需要將數(shù)據庫寫回云平臺數(shù)據庫。按照普通的方式,每傳輸1 次數(shù)據建立1 次Connection,然后關閉Connection,這樣會給網絡及計算配置造成很大的壓力。為了能夠高效對數(shù)據進行高效、并發(fā)處理,采用每個分區(qū)建立1 個Connection 的方式,在Connection 量級及操作上會大大改善。
具體而言,RDD 本身是眾多機器的數(shù)據分區(qū)(Partition)代理,1 個RDD 對應集群上所有數(shù)據的分區(qū),工程上使用的機群數(shù)量有限,Partition 數(shù)目也遠遠不可能達到數(shù)據Connection 的數(shù)目,在這種情況下,借助Partition 與MySQL 建立Connection,當數(shù)據寫入時,完成終止連接。Spark RDD 向MySQL 中寫入數(shù)據如圖3。
圖3 Spark RDD 向MySQL 中寫入數(shù)據
通過以上程序處理,可以實現(xiàn)從云端數(shù)據庫讀取數(shù)據到Spark 平臺下的微震信號分類,再將結果寫入云平臺數(shù)據庫的過程,此過程集成了云計算平臺與大數(shù)據平臺的統(tǒng)一調用,可以在工程數(shù)據傳輸和處理上提供一定的借鑒意義。算法識別效果圖如圖4。
圖4 算法識別效果圖
為了更加直觀地對識別效果進行展示,以Fisher 識別閾值為基本參數(shù),對每個微震和爆破事件求出對應的Y 值。由圖4 可以看出Spark 平臺下的Fisher 算法判別效果,其中標線為判別閾值Y0=-0.003 321 339,位于閾值線以下的微震數(shù)據點為正確識別的巖石損傷事件,反之為誤判的微震信號。位于閾值線以上的爆破數(shù)據點為正確識別的爆破微震信號,反之為誤判的微震信號。
實際工程中數(shù)據是海量的,為了驗證算法在數(shù)據擴展情況下的有效性,這里分別采用(微震,爆破)數(shù)據量分別為(10,10)、(20,20)、(30,30)、(40、40)、(50、50)為實例,分別對算法的正確率進行計算,識別正確率結果如圖5。
圖5 識別正確率結果
將上述方法應用到弓長嶺露天礦微震信號與爆破信號識別中,事件判別正確率雖然有所下降,但一直穩(wěn)定在83 %左右,預測效果較為可靠。
將微震信號識別算法遷移到Spark 平臺下,實現(xiàn)了巖石損傷與爆破擾動引起的微震信號自動區(qū)分。在弓長嶺露天礦微震信號與爆破信號的識別中,分類算法識別的正確率穩(wěn)定在83 %左右,效果良好,因此可大大減少對監(jiān)測數(shù)據處理的工作。此外將Spark 平臺與云端數(shù)據庫的建立遠程連接,成功實現(xiàn)了數(shù)據傳輸,為后期基于云計算的預警工作提供了技術基礎。