李 俊,蘇懷智,2, 周仁練
(1.河海大學(xué)水利水電學(xué)院,江蘇 南京 210098; 2.河海大學(xué)水文水資源與水利工程科學(xué)國家重點實驗室,江蘇 南京 210098)
我國已建大壩9.8萬余座,其中絕大多數(shù)為土石壩。滲流是影響土石壩安全的重要因素之一,土石壩的各種破壞形式都直接或間接與滲流有關(guān),所以準(zhǔn)確預(yù)測滲流量的大小對實現(xiàn)土石壩的安全監(jiān)控有著重要意義[1-2]。根據(jù)已建立的滲流量統(tǒng)計模型,土石壩滲流量主要受上下游水位、降雨入滲以及壩前淤積和防滲體的時變過程等影響[3-4]。但土石壩滲流性態(tài)受多種因素的影響,預(yù)測難度很大[5]。
目前,界內(nèi)對于滲流預(yù)測的研究主要集中在神經(jīng)網(wǎng)絡(luò)、時間序列、回歸分析等方面,這些方法或多或少存在一定的缺陷。神經(jīng)網(wǎng)絡(luò)存在收斂速度慢、泛化能力弱等缺點;時間序列預(yù)測方法在處理模糊數(shù)據(jù)時可能會出現(xiàn)模型過度擬合的危險;回歸分析需要建立復(fù)雜的數(shù)學(xué)模型,通過求解線性方程組得到各個回歸系數(shù),當(dāng)線性方程組出現(xiàn)病態(tài)或奇異時,回歸方法是無法處理的[6-12]。1993年,Agrawal等首先提出關(guān)聯(lián)規(guī)則的概念。關(guān)聯(lián)規(guī)則是形如X→Y的蘊涵式,即由事物X推導(dǎo)出事物Y。其中,X和Y分別稱為關(guān)聯(lián)規(guī)則的先導(dǎo)和后繼,并且關(guān)聯(lián)規(guī)則X→Y存在支持度和信任度。Apriori是一種經(jīng)典的關(guān)聯(lián)規(guī)則算法,用于挖掘大數(shù)據(jù)中潛在的事物聯(lián)系。該算法采用自底向上的遍歷思想逐級挖掘,以確保關(guān)聯(lián)規(guī)則的準(zhǔn)確性。針對經(jīng)典Apriori算法執(zhí)行效率低的缺點,周發(fā)超等[13]引進TID標(biāo)識碼,使得算法效率大大提高;林郎碟等[14]將Apriori算法應(yīng)用于圖書推薦服務(wù)中,結(jié)合“分割-整合”的思想,為建設(shè)智能圖書推薦系統(tǒng)打下理論基礎(chǔ);Guo等[15]將溫度、濕度、氣壓和風(fēng)速打包成事務(wù)組,進行短期風(fēng)速預(yù)測,將預(yù)測結(jié)果用于校正由混沌時間序列所預(yù)測的結(jié)果,取得較好的預(yù)測精度。本文將Apriori算法用于挖掘環(huán)境量(包含上下游水位、降雨量等)與滲流量之間的內(nèi)在關(guān)系,建立推導(dǎo)法則,從而為大壩滲流監(jiān)控和預(yù)報提供一種新途徑。
本文的主要思路是利用某土石壩實測數(shù)據(jù)建立預(yù)測模型,然后檢驗該模型的預(yù)測精度并給予評價。在對實測數(shù)據(jù)進行預(yù)處理時,首先分析環(huán)境量和滲流量的相關(guān)關(guān)系,用K-means聚類算法對環(huán)境量和滲流量進行離散化處理,然后將處理過的數(shù)據(jù)轉(zhuǎn)換成Apriori算法能夠識別的布爾型矩陣進行關(guān)聯(lián)規(guī)則的挖掘,最后將關(guān)聯(lián)規(guī)則用于滲流量的預(yù)測。通過實例演示和精度分析,證實了該預(yù)測模型具有較好的預(yù)測精度。
本文僅考慮滲流量受上游水位、降雨量和下游水位的影響[3]。當(dāng)環(huán)境量(上游水位、降雨量和下游水位)發(fā)生變化時,滲流量不會立刻響應(yīng),所以在進行關(guān)聯(lián)規(guī)則挖掘時,在同一組數(shù)據(jù)內(nèi),環(huán)境量和滲流量不應(yīng)是同一時間,環(huán)境量應(yīng)較滲流量有所提前,此性質(zhì)恰好可以用于建立預(yù)測模型[16]。需要注意的是,環(huán)境量相對滲流量提前的時間也各不相同,應(yīng)根據(jù)環(huán)境量的性質(zhì)分別計算。
1.1.1上游水位
上游水位是影響滲流量大小的重要因素,顯然,在其他環(huán)境量保持穩(wěn)定的前提下,滲流量與上游水位呈正相關(guān)關(guān)系。有兩種方法估計上游水位的滲流響應(yīng)滯后時間:
a. 利用大壩泄流。水庫一般會在雨季來臨之前或者需要放水抗旱時大量泄流以降低庫水位,根據(jù)工程經(jīng)驗,一段時間后,壩體滲流量也會隨之下降。所以,選取某一次泄洪前后且無降雨的時間段內(nèi)一組數(shù)據(jù),直接觀察滲流量變化滯后的時間,即為上游水位的滲流響應(yīng)滯后時間。
b. 利用穩(wěn)定數(shù)據(jù)。如果沒有合適的泄洪時間段,那就只能選用多段穩(wěn)定數(shù)據(jù)來估算。當(dāng)水庫不泄洪且無降雨時,水庫水量損失主要是因為蒸發(fā)和滲流,水庫水位會穩(wěn)步下降,滲流量也會相應(yīng)變化。可以選取多段無降雨時段,觀察滲流量的滯后時間,取均值(以天為單位,取整)作為上游水位的滲流響應(yīng)滯后時間。
1.1.2降雨量
降雨量對土石壩滲流量的影響較為明顯,也比較容易判斷滲流響應(yīng)滯后時間。選取前后一段時間均無降雨,且上下游水位變化幅度較小或變化穩(wěn)定的短時降雨,觀察滲流量響應(yīng)時間,作為降雨量的滲流響應(yīng)滯后時間。
1.1.3下游水位
通常情況下,下游水位變化不大,所以該模型不考慮下游水位的滲流響應(yīng)滯后時間。為了方便建模,下游水位取與上游水位對應(yīng)的同一天的值。
關(guān)聯(lián)規(guī)則算法不具備處理連續(xù)數(shù)據(jù)的能力,所以在進行關(guān)聯(lián)規(guī)則的挖掘前,應(yīng)先將實測數(shù)據(jù)進行離散化處理。所謂離散化,即將連續(xù)型環(huán)境量(或滲流量)所處的區(qū)間,利用K-means算法劃分成多個短區(qū)間(簇),所處同一短區(qū)間(簇)的數(shù)據(jù)歸為一類,用區(qū)間編號代替。K-means是一種基于形心的劃分算法,使用簇Ci的形心代表該簇。K-means算法把簇的形心定義為簇內(nèi)點的均值[14]。
以滲流量為例介紹該算法的處理流程。假設(shè)m天的滲流量實測數(shù)據(jù)需要劃分為k個簇,隨機選取k個數(shù)據(jù),每個數(shù)據(jù)作為一個簇的初始形心,對剩下的每個數(shù)據(jù),根據(jù)其與各個簇中心的距離,把他分配到最相似的簇。然后,對于每個簇,使用上次迭代分配到該簇的對象,計算新的均值。然后,使用更新后的均值作為新的簇中心,重新分配所有對象。繼續(xù)迭代,直到分配穩(wěn)定,即本輪形成的簇與前一輪形成的簇相同[17]。
將實測數(shù)據(jù)聚類以后,為滿足Apriori算法對輸入數(shù)據(jù)的要求,還需要將聚類后的實測數(shù)據(jù)轉(zhuǎn)換成布爾型數(shù)據(jù),即只用0和1表示。
以滲流量和上游水位為例,簡要說明轉(zhuǎn)換過程。假設(shè)有m組數(shù)據(jù),矩陣表中每一行表示同一天的監(jiān)測值,每行數(shù)據(jù)均包含滲流量、上游水位、降雨量和下游水位4個變量,構(gòu)成m×4矩陣A∈Rm×4。利用K-means算法將滲流量和上游水位分別劃分為k1、k2類,對于矩陣中的所有實測數(shù)據(jù),均用該實測數(shù)據(jù)所處的簇編號代替。
比如滲流量被聚類成k1類,轉(zhuǎn)換成布爾型矩陣時,滲流量對應(yīng)布爾型矩陣的前k1列,且每個實測數(shù)據(jù)的簇編號對應(yīng)的布爾型矩陣中滲流量列編號,用1標(biāo)注該列,其余列均為0。上游水位、降水量、下游水位都可用相同方法轉(zhuǎn)換。
利用Apriori算法挖掘關(guān)聯(lián)規(guī)則可分為兩步,首先挖掘?qū)崪y數(shù)據(jù)中的頻繁項集,然后將頻繁項集推理成關(guān)聯(lián)規(guī)則。支持度是指項集在數(shù)據(jù)庫中出現(xiàn)的次數(shù)或頻率,置信度是指關(guān)聯(lián)規(guī)則在數(shù)據(jù)庫中的準(zhǔn)確性。算法中,所有支持度大于最小支持度的項集稱為頻繁項集,所有置信度大于最小置信度的關(guān)聯(lián)規(guī)則稱為強關(guān)聯(lián)規(guī)則[18]。最小支持度和最小置信度的取值應(yīng)保證算法所挖掘出來的強關(guān)聯(lián)規(guī)則的數(shù)目合理,且將強關(guān)聯(lián)規(guī)則用于工程預(yù)測時,預(yù)測精度要滿足工程要求[19]。
利用Apriori算法產(chǎn)生頻繁項集的過程主要分為連接和剪枝兩步:首先,將包含i個變量的項集稱為i-項集,將包含i個變量的頻繁項集稱為i-頻繁項集,掃描所有實測資料,產(chǎn)生候選1-項集,根據(jù)最小支持度,產(chǎn)生1-頻繁項集。然后由1-頻繁項集自連接產(chǎn)生2-項集,對2-項集剪枝處理,即剔除2-項集中有非空子集是非頻繁項集的項,再根據(jù)最小支持度,產(chǎn)生2-頻繁項集。重復(fù)以上步驟,直到得出包含上游水位、降雨量、下游水位和滲流量4個變量的4-頻繁項集[20]。
圖1 預(yù)測流程
然后由頻繁項集產(chǎn)生強關(guān)聯(lián)規(guī)則,例如2-頻繁項集(U,S),其中U為取值在區(qū)間[a,b]內(nèi)的上游水位;S為取值在區(qū)間[c,d]內(nèi)的滲流量。
則關(guān)聯(lián)規(guī)則由U推導(dǎo)出S的支持度SS和置信度CC的計算公式分別為:
SS(U→S)=P(U∪S)
(1)
CC(U→S)=P(US)
(2)
該關(guān)聯(lián)規(guī)則可以表述為:當(dāng)上游水位在區(qū)間[a,b]內(nèi)時,滲流量有P(US)的可能性出現(xiàn)在區(qū)間[c,d]內(nèi),且這種情況出現(xiàn)的頻率為P(U∪S)。
綜合應(yīng)用K-means算法和Apriori算法,基于土石壩滲流關(guān)聯(lián)規(guī)則的推理,實現(xiàn)土石壩滲流預(yù)測的具體流程如圖1所示,主要步驟如下。
步驟1:滲流量與環(huán)境量相關(guān)關(guān)系及滯后性分析。利用前文提到的方法分別計算環(huán)境量的滲流響應(yīng)滯后時間,根據(jù)滯后時間,將理論上具有因果關(guān)系的滲流量與環(huán)境量調(diào)整為同一組數(shù)據(jù),構(gòu)成新的數(shù)據(jù)組。
步驟2:聚類離散化。利用K-means算法對新的數(shù)據(jù)組進行聚類分析,并用聚類出來的簇編號代替實測數(shù)據(jù),構(gòu)成離散型實測數(shù)據(jù)矩陣。
步驟3:布爾型轉(zhuǎn)換。將離散型實測數(shù)據(jù)矩陣轉(zhuǎn)換成Apriori算法能識別的布爾型矩陣。
步驟4:關(guān)聯(lián)規(guī)則的挖掘。將得到的布爾型矩陣作為Apriori算法的輸入矩陣D,同時輸入最小支持度和最小置信度進行關(guān)聯(lián)規(guī)則的挖掘。
步驟5:關(guān)聯(lián)規(guī)則的篩選。經(jīng)過上述關(guān)聯(lián)規(guī)則挖掘后,會產(chǎn)生多個4-頻繁項集,并由此產(chǎn)生多種強關(guān)聯(lián)規(guī)則。但是并不是所有的強關(guān)聯(lián)規(guī)則都能用于預(yù)測,只有形如U、R、D→S(其中U、R、D分別為上游水位、降雨量和下游水位,S為滲流量)的強關(guān)聯(lián)規(guī)則才是有用的[19]。所以需要對所產(chǎn)生的強關(guān)聯(lián)規(guī)則進行篩選。
步驟6:滲流量的預(yù)測。對于所篩選出的強關(guān)聯(lián)規(guī)則U、R、D→S,環(huán)境量均提前滲流量一段時間,設(shè)環(huán)境量提前時間分別為mU、mR、mD,若要預(yù)測某一天的滲流量,環(huán)境量應(yīng)分別取mU、mR、mD前的值。顯然,所產(chǎn)生的滲流量預(yù)測結(jié)果是一個聚類區(qū)間,而不是一個準(zhǔn)確的值??紤]到聚類所產(chǎn)生的區(qū)間大小不一,不適合作為預(yù)測結(jié)果,本文采用區(qū)間上下邊界的均值作為預(yù)測結(jié)果。
步驟7:預(yù)測結(jié)果評價。本文選取平均絕對誤差、平均相對誤差以及均方根誤差作為評價指標(biāo)[21]。
表1 K-means聚類算法對各變量聚類結(jié)果
以某水庫左岸土石壩段滲流量為預(yù)測對象。該壩段壩頂高程177.60 m,設(shè)計蓄水位170.0 m,共布設(shè)3個滲流監(jiān)測點,分別監(jiān)測先鋒溝、左下?lián)鹾徒Y(jié)合面部位。對先鋒溝觀測點在2014年7月10日至2017年12月29日期間的滲流量(L/s)進行220次觀測,其中前200組數(shù)據(jù)作為訓(xùn)練集,后20組數(shù)據(jù)作為檢驗集。具體滲流量及相關(guān)環(huán)境量過程線見圖2。
圖2 某水庫左岸土石壩段滲流量及相關(guān)環(huán)境量過程線
選取兩組典型的上游水位與滲流量變化趨勢,繪制成折線圖,觀察兩組曲線的關(guān)鍵折點,可確定上游水位滲流量響應(yīng)滯后時間為1 d,同時下游水位滲流量響應(yīng)滯后時間也為1 d。
圖3 典型上游水位與滲流量變化趨勢
選取前后一段時間內(nèi)均無降水的一次短時降水后的滲流量變化趨勢圖,如圖4所示,觀察得到降水量滲流響應(yīng)滯后時間為0。在預(yù)測時,降水量的取值應(yīng)根據(jù)天氣預(yù)報來確定。
圖4 典型降水量與滲流量變化趨勢
經(jīng)過上述計算,應(yīng)先將當(dāng)天的滲流量、降水量與前一天的上、下游水位調(diào)整為同一組數(shù)據(jù),然后進行后續(xù)處理。
對滲流量及環(huán)境量用K-means聚類算法離散化,根據(jù)區(qū)間長度分別取k1=5,k2=5,k3=4,k4=3,結(jié)果如表1所示。
根據(jù)上述結(jié)果,可將200×4原始數(shù)據(jù)矩陣轉(zhuǎn)換成200×17布爾型矩陣,用于關(guān)聯(lián)規(guī)則挖掘。
將處理好的200×17布爾型矩陣作為Apriori算法的輸入數(shù)據(jù),由于最小支持度和最小置信度的取值尚無經(jīng)驗可循,為得到合理數(shù)量的強關(guān)聯(lián)規(guī)則并達到預(yù)期的精度,經(jīng)反復(fù)嘗試,最終確定取最小支持度為3,最小置信度為0.6,進行關(guān)聯(lián)規(guī)則的挖掘,得到18個4-頻繁項集,由該頻繁項集,可推導(dǎo)出64組強關(guān)聯(lián)規(guī)則。篩選出可以用于預(yù)測的關(guān)聯(lián)規(guī)則,整理結(jié)果如表2所示。表中下標(biāo)表示該物理量所在的聚類簇,如表中第一行U3、R1、D1→S1表示當(dāng)上游水位在區(qū)間3,降水量在區(qū)間1,下游水位在區(qū)間1時,降水量有75%的可能出現(xiàn)在區(qū)間1,且這種情況出現(xiàn)了27次。
表2 篩選出的可以用于預(yù)測的強關(guān)聯(lián)規(guī)則
由于用于挖掘的數(shù)據(jù)較少,并不能挖掘出所有環(huán)境量區(qū)間的任意組合(共有120種組合)的關(guān)聯(lián)規(guī)則。所以,并不是檢驗集中的所有數(shù)據(jù)都能用于預(yù)測檢驗。只有環(huán)境量符合挖掘出的關(guān)聯(lián)規(guī)則的組合,才可以預(yù)測。這里只對符合所產(chǎn)生關(guān)聯(lián)規(guī)則的6組數(shù)據(jù)做預(yù)測,結(jié)果如表3所示。
表3 滲流量預(yù)測結(jié)果誤差
由表3可知,6組數(shù)據(jù)的平均絕對誤差為0.278 L/s,相對誤差為17.45%,均方差為0.293 L/s,根據(jù)強關(guān)聯(lián)規(guī)則所預(yù)測的結(jié)果均有較好的精度,相對誤差控制在20%左右,預(yù)測精度良好。這表明,在進行關(guān)聯(lián)規(guī)則的挖掘時,取置信度為0.6是足夠的,若為了提高預(yù)測的準(zhǔn)確率而過度的提高置信度,會使得可用的強關(guān)聯(lián)規(guī)則數(shù)量減少,這顯然是不合理的。
基于Apriori算法對關(guān)聯(lián)規(guī)則的挖掘,本文建立了一種新的滲流量預(yù)測模型,該模型的特征總結(jié)如下:
a. 內(nèi)部邏輯關(guān)系明確,易于通過各種編程軟件實現(xiàn)。這為繼續(xù)深入研究改進提供了很大的便利。
b. 預(yù)測精度高。滲流量的預(yù)測不同于壩體變形等方面的預(yù)測,滲流量的影響因素多,各影響因素之間關(guān)系復(fù)雜且變化多樣,常規(guī)算法很難對滲流量進行準(zhǔn)確預(yù)測。本文所構(gòu)建的預(yù)測模型,將預(yù)測精度控制在20%左右,基本實現(xiàn)預(yù)期目標(biāo)。
c. 通過對比相似的關(guān)聯(lián)規(guī)則,可初步判斷環(huán)境量與滲流量間的變化規(guī)律。例如,在表4中,對比規(guī)則5、6,可知上游水位對滲流量的影響非常顯著;同樣的,對比規(guī)則1、3,可知當(dāng)降水量較小時,對滲流量的影響也較小。
d. 顯然,增大置信度或支持度會提高模型的預(yù)測精度,但也會導(dǎo)致產(chǎn)生的強關(guān)聯(lián)規(guī)則較少,即模型的可預(yù)測范圍會縮小;反之,減小置信度或支持度會大幅增加強關(guān)聯(lián)規(guī)則的數(shù)量,使模型預(yù)測范圍擴大,但同時預(yù)測精度也會降低。所以,本模型的后續(xù)研究應(yīng)該著重于置信度及支持度的大小(預(yù)測精度)和關(guān)聯(lián)規(guī)則數(shù)目(預(yù)測范圍)的權(quán)衡問題。