李 俊,蘇懷智,2, 周仁練
(1.河海大學水利水電學院,江蘇 南京 210098; 2.河海大學水文水資源與水利工程科學國家重點實驗室,江蘇 南京 210098)
我國已建大壩9.8萬余座,其中絕大多數為土石壩。滲流是影響土石壩安全的重要因素之一,土石壩的各種破壞形式都直接或間接與滲流有關,所以準確預測滲流量的大小對實現土石壩的安全監控有著重要意義[1-2]。根據已建立的滲流量統計模型,土石壩滲流量主要受上下游水位、降雨入滲以及壩前淤積和防滲體的時變過程等影響[3-4]。但土石壩滲流性態受多種因素的影響,預測難度很大[5]。
目前,界內對于滲流預測的研究主要集中在神經網絡、時間序列、回歸分析等方面,這些方法或多或少存在一定的缺陷。神經網絡存在收斂速度慢、泛化能力弱等缺點;時間序列預測方法在處理模糊數據時可能會出現模型過度擬合的危險;回歸分析需要建立復雜的數學模型,通過求解線性方程組得到各個回歸系數,當線性方程組出現病態或奇異時,回歸方法是無法處理的[6-12]。1993年,Agrawal等首先提出關聯規則的概念。關聯規則是形如X→Y的蘊涵式,即由事物X推導出事物Y。其中,X和Y分別稱為關聯規則的先導和后繼,并且關聯規則X→Y存在支持度和信任度。Apriori是一種經典的關聯規則算法,用于挖掘大數據中潛在的事物聯系。該算法采用自底向上的遍歷思想逐級挖掘,以確保關聯規則的準確性。針對經典Apriori算法執行效率低的缺點,周發超等[13]引進TID標識碼,使得算法效率大大提高;林郎碟等[14]將Apriori算法應用于圖書推薦服務中,結合“分割-整合”的思想,為建設智能圖書推薦系統打下理論基礎;Guo等[15]將溫度、濕度、氣壓和風速打包成事務組,進行短期風速預測,將預測結果用于校正由混沌時間序列所預測的結果,取得較好的預測精度。本文將Apriori算法用于挖掘環境量(包含上下游水位、降雨量等)與滲流量之間的內在關系,建立推導法則,從而為大壩滲流監控和預報提供一種新途徑。
本文的主要思路是利用某土石壩實測數據建立預測模型,然后檢驗該模型的預測精度并給予評價。在對實測數據進行預處理時,首先分析環境量和滲流量的相關關系,用K-means聚類算法對環境量和滲流量進行離散化處理,然后將處理過的數據轉換成Apriori算法能夠識別的布爾型矩陣進行關聯規則的挖掘,最后將關聯規則用于滲流量的預測。通過實例演示和精度分析,證實了該預測模型具有較好的預測精度。
本文僅考慮滲流量受上游水位、降雨量和下游水位的影響[3]。當環境量(上游水位、降雨量和下游水位)發生變化時,滲流量不會立刻響應,所以在進行關聯規則挖掘時,在同一組數據內,環境量和滲流量不應是同一時間,環境量應較滲流量有所提前,此性質恰好可以用于建立預測模型[16]。需要注意的是,環境量相對滲流量提前的時間也各不相同,應根據環境量的性質分別計算。
1.1.1上游水位
上游水位是影響滲流量大小的重要因素,顯然,在其他環境量保持穩定的前提下,滲流量與上游水位呈正相關關系。有兩種方法估計上游水位的滲流響應滯后時間:
a. 利用大壩泄流。水庫一般會在雨季來臨之前或者需要放水抗旱時大量泄流以降低庫水位,根據工程經驗,一段時間后,壩體滲流量也會隨之下降。所以,選取某一次泄洪前后且無降雨的時間段內一組數據,直接觀察滲流量變化滯后的時間,即為上游水位的滲流響應滯后時間。
b. 利用穩定數據。如果沒有合適的泄洪時間段,那就只能選用多段穩定數據來估算。當水庫不泄洪且無降雨時,水庫水量損失主要是因為蒸發和滲流,水庫水位會穩步下降,滲流量也會相應變化。可以選取多段無降雨時段,觀察滲流量的滯后時間,取均值(以天為單位,取整)作為上游水位的滲流響應滯后時間。
1.1.2降雨量
降雨量對土石壩滲流量的影響較為明顯,也比較容易判斷滲流響應滯后時間。選取前后一段時間均無降雨,且上下游水位變化幅度較小或變化穩定的短時降雨,觀察滲流量響應時間,作為降雨量的滲流響應滯后時間。
1.1.3下游水位
通常情況下,下游水位變化不大,所以該模型不考慮下游水位的滲流響應滯后時間。為了方便建模,下游水位取與上游水位對應的同一天的值。
關聯規則算法不具備處理連續數據的能力,所以在進行關聯規則的挖掘前,應先將實測數據進行離散化處理。所謂離散化,即將連續型環境量(或滲流量)所處的區間,利用K-means算法劃分成多個短區間(簇),所處同一短區間(簇)的數據歸為一類,用區間編號代替。K-means是一種基于形心的劃分算法,使用簇Ci的形心代表該簇。K-means算法把簇的形心定義為簇內點的均值[14]。
以滲流量為例介紹該算法的處理流程。假設m天的滲流量實測數據需要劃分為k個簇,隨機選取k個數據,每個數據作為一個簇的初始形心,對剩下的每個數據,根據其與各個簇中心的距離,把他分配到最相似的簇。然后,對于每個簇,使用上次迭代分配到該簇的對象,計算新的均值。然后,使用更新后的均值作為新的簇中心,重新分配所有對象。繼續迭代,直到分配穩定,即本輪形成的簇與前一輪形成的簇相同[17]。
將實測數據聚類以后,為滿足Apriori算法對輸入數據的要求,還需要將聚類后的實測數據轉換成布爾型數據,即只用0和1表示。
以滲流量和上游水位為例,簡要說明轉換過程。假設有m組數據,矩陣表中每一行表示同一天的監測值,每行數據均包含滲流量、上游水位、降雨量和下游水位4個變量,構成m×4矩陣A∈Rm×4。利用K-means算法將滲流量和上游水位分別劃分為k1、k2類,對于矩陣中的所有實測數據,均用該實測數據所處的簇編號代替。
比如滲流量被聚類成k1類,轉換成布爾型矩陣時,滲流量對應布爾型矩陣的前k1列,且每個實測數據的簇編號對應的布爾型矩陣中滲流量列編號,用1標注該列,其余列均為0。上游水位、降水量、下游水位都可用相同方法轉換。
利用Apriori算法挖掘關聯規則可分為兩步,首先挖掘實測數據中的頻繁項集,然后將頻繁項集推理成關聯規則。支持度是指項集在數據庫中出現的次數或頻率,置信度是指關聯規則在數據庫中的準確性。算法中,所有支持度大于最小支持度的項集稱為頻繁項集,所有置信度大于最小置信度的關聯規則稱為強關聯規則[18]。最小支持度和最小置信度的取值應保證算法所挖掘出來的強關聯規則的數目合理,且將強關聯規則用于工程預測時,預測精度要滿足工程要求[19]。
利用Apriori算法產生頻繁項集的過程主要分為連接和剪枝兩步:首先,將包含i個變量的項集稱為i-項集,將包含i個變量的頻繁項集稱為i-頻繁項集,掃描所有實測資料,產生候選1-項集,根據最小支持度,產生1-頻繁項集。然后由1-頻繁項集自連接產生2-項集,對2-項集剪枝處理,即剔除2-項集中有非空子集是非頻繁項集的項,再根據最小支持度,產生2-頻繁項集。重復以上步驟,直到得出包含上游水位、降雨量、下游水位和滲流量4個變量的4-頻繁項集[20]。

圖1 預測流程
然后由頻繁項集產生強關聯規則,例如2-頻繁項集(U,S),其中U為取值在區間[a,b]內的上游水位;S為取值在區間[c,d]內的滲流量。
則關聯規則由U推導出S的支持度SS和置信度CC的計算公式分別為:
SS(U→S)=P(U∪S)
(1)
CC(U→S)=P(US)
(2)
該關聯規則可以表述為:當上游水位在區間[a,b]內時,滲流量有P(US)的可能性出現在區間[c,d]內,且這種情況出現的頻率為P(U∪S)。
綜合應用K-means算法和Apriori算法,基于土石壩滲流關聯規則的推理,實現土石壩滲流預測的具體流程如圖1所示,主要步驟如下。
步驟1:滲流量與環境量相關關系及滯后性分析。利用前文提到的方法分別計算環境量的滲流響應滯后時間,根據滯后時間,將理論上具有因果關系的滲流量與環境量調整為同一組數據,構成新的數據組。
步驟2:聚類離散化。利用K-means算法對新的數據組進行聚類分析,并用聚類出來的簇編號代替實測數據,構成離散型實測數據矩陣。
步驟3:布爾型轉換。將離散型實測數據矩陣轉換成Apriori算法能識別的布爾型矩陣。
步驟4:關聯規則的挖掘。將得到的布爾型矩陣作為Apriori算法的輸入矩陣D,同時輸入最小支持度和最小置信度進行關聯規則的挖掘。
步驟5:關聯規則的篩選。經過上述關聯規則挖掘后,會產生多個4-頻繁項集,并由此產生多種強關聯規則。但是并不是所有的強關聯規則都能用于預測,只有形如U、R、D→S(其中U、R、D分別為上游水位、降雨量和下游水位,S為滲流量)的強關聯規則才是有用的[19]。所以需要對所產生的強關聯規則進行篩選。
步驟6:滲流量的預測。對于所篩選出的強關聯規則U、R、D→S,環境量均提前滲流量一段時間,設環境量提前時間分別為mU、mR、mD,若要預測某一天的滲流量,環境量應分別取mU、mR、mD前的值。顯然,所產生的滲流量預測結果是一個聚類區間,而不是一個準確的值。考慮到聚類所產生的區間大小不一,不適合作為預測結果,本文采用區間上下邊界的均值作為預測結果。
步驟7:預測結果評價。本文選取平均絕對誤差、平均相對誤差以及均方根誤差作為評價指標[21]。

表1 K-means聚類算法對各變量聚類結果
以某水庫左岸土石壩段滲流量為預測對象。該壩段壩頂高程177.60 m,設計蓄水位170.0 m,共布設3個滲流監測點,分別監測先鋒溝、左下擋和結合面部位。對先鋒溝觀測點在2014年7月10日至2017年12月29日期間的滲流量(L/s)進行220次觀測,其中前200組數據作為訓練集,后20組數據作為檢驗集。具體滲流量及相關環境量過程線見圖2。

圖2 某水庫左岸土石壩段滲流量及相關環境量過程線
選取兩組典型的上游水位與滲流量變化趨勢,繪制成折線圖,觀察兩組曲線的關鍵折點,可確定上游水位滲流量響應滯后時間為1 d,同時下游水位滲流量響應滯后時間也為1 d。

圖3 典型上游水位與滲流量變化趨勢
選取前后一段時間內均無降水的一次短時降水后的滲流量變化趨勢圖,如圖4所示,觀察得到降水量滲流響應滯后時間為0。在預測時,降水量的取值應根據天氣預報來確定。

圖4 典型降水量與滲流量變化趨勢
經過上述計算,應先將當天的滲流量、降水量與前一天的上、下游水位調整為同一組數據,然后進行后續處理。
對滲流量及環境量用K-means聚類算法離散化,根據區間長度分別取k1=5,k2=5,k3=4,k4=3,結果如表1所示。
根據上述結果,可將200×4原始數據矩陣轉換成200×17布爾型矩陣,用于關聯規則挖掘。
將處理好的200×17布爾型矩陣作為Apriori算法的輸入數據,由于最小支持度和最小置信度的取值尚無經驗可循,為得到合理數量的強關聯規則并達到預期的精度,經反復嘗試,最終確定取最小支持度為3,最小置信度為0.6,進行關聯規則的挖掘,得到18個4-頻繁項集,由該頻繁項集,可推導出64組強關聯規則。篩選出可以用于預測的關聯規則,整理結果如表2所示。表中下標表示該物理量所在的聚類簇,如表中第一行U3、R1、D1→S1表示當上游水位在區間3,降水量在區間1,下游水位在區間1時,降水量有75%的可能出現在區間1,且這種情況出現了27次。

表2 篩選出的可以用于預測的強關聯規則
由于用于挖掘的數據較少,并不能挖掘出所有環境量區間的任意組合(共有120種組合)的關聯規則。所以,并不是檢驗集中的所有數據都能用于預測檢驗。只有環境量符合挖掘出的關聯規則的組合,才可以預測。這里只對符合所產生關聯規則的6組數據做預測,結果如表3所示。

表3 滲流量預測結果誤差
由表3可知,6組數據的平均絕對誤差為0.278 L/s,相對誤差為17.45%,均方差為0.293 L/s,根據強關聯規則所預測的結果均有較好的精度,相對誤差控制在20%左右,預測精度良好。這表明,在進行關聯規則的挖掘時,取置信度為0.6是足夠的,若為了提高預測的準確率而過度的提高置信度,會使得可用的強關聯規則數量減少,這顯然是不合理的。
基于Apriori算法對關聯規則的挖掘,本文建立了一種新的滲流量預測模型,該模型的特征總結如下:
a. 內部邏輯關系明確,易于通過各種編程軟件實現。這為繼續深入研究改進提供了很大的便利。
b. 預測精度高。滲流量的預測不同于壩體變形等方面的預測,滲流量的影響因素多,各影響因素之間關系復雜且變化多樣,常規算法很難對滲流量進行準確預測。本文所構建的預測模型,將預測精度控制在20%左右,基本實現預期目標。
c. 通過對比相似的關聯規則,可初步判斷環境量與滲流量間的變化規律。例如,在表4中,對比規則5、6,可知上游水位對滲流量的影響非常顯著;同樣的,對比規則1、3,可知當降水量較小時,對滲流量的影響也較小。
d. 顯然,增大置信度或支持度會提高模型的預測精度,但也會導致產生的強關聯規則較少,即模型的可預測范圍會縮小;反之,減小置信度或支持度會大幅增加強關聯規則的數量,使模型預測范圍擴大,但同時預測精度也會降低。所以,本模型的后續研究應該著重于置信度及支持度的大小(預測精度)和關聯規則數目(預測范圍)的權衡問題。