劉 鶴 鵬,李 登 華,丁 勇
(1.南京理工大學 理學院,江蘇 南京 210094; 2.南京水利科學研究院,江蘇 南京 210029; 3.水利部水庫大壩安全重點實驗室,江蘇 南京 210029)
大壩安全監測數據是大壩安全運行和正常維護工作的重要指標,是水利“四預”工作中的重要依據[1]。而在實際工程中,數據采集、傳輸、存儲等環節受各類因素影響,往往會使測量數據遭受不同程度的缺失,將影響大壩安全性的準確評估[2]。因此,監測數據的完整性和精準性備受關注[3]。
目前,處理缺失值的傳統手段大都是基于統計學的理論建立的,如中位數填補法[4]、均值填補法[5]、眾數填補法[6]、線性插值填補法[7]以及多重插值填補法[8]等。隨著近年來對機器學習和其他新型學科研究的不斷深入,一些學者提出了全新的缺失值填補思想。李雙平等[9]比較了常用的數學插值方法,選擇了具有平滑插值曲線的三次Hermite分段插值,充分利用現有數據信息進行數據序列的均質化處理。文雯[10]在原有KNN的基礎上引入了灰色理論,并提出了一種新的加權灰色KNN方法對缺失值進行填補,通過融入加權灰色理論對傳統KNN算法進行一定程度的改進。Ramzan等[11]提出通過挖掘測點時間序列的自回歸性來填補缺失值。王娟等[12]針對含有缺失值的監測數據,使用核獨立分量分析法將提取的獨立分量作為預測模型的輸入項進而預測缺失值。但這些研究針對大壩安全監測數據集而言,仍存在一些問題,如對于數據相似性的依賴度較強、對高缺失率數據集填補精度較低、應對大壩安全監測數據集中不同缺失值類型的魯棒性較差等。
有鑒于此,本文通過分析多座現役大壩的實測資料,對大壩安全監測數據集中存在的缺失值類型進行歸納總結,并針對不同類型的缺失值提出了一種基于各測點時間尺度相關性的缺失值填補新算法,旨在考慮時間序列間相關性的同時,引入迭代技術實時更新時間序列間的相關性,彌補傳統算法處理缺失值精度低的不足,并實現多測點缺失值的自動化填補。
通過文獻調研,并基于多座大中型水庫的多年實測資料,研究發現監測數據的主要缺失類型有以下幾種。
針對單一測點的主要缺失值類型:
(1) 不同的缺失率[13],體現在相同時間段內缺失值數量占該時間段全部數據量的比值不同。不同缺失率的時程曲線見圖1。
圖1 不同缺失率下時間序列的時程曲線Fig.1 Time history curves of time series under different missing rates
(2) 不同的離散程度[14],主要有3種形式:① 離散型缺失;② 連續型缺失;③ 混合型缺失。
離散型缺失:在數據分布上呈現為缺失值在時間序列內分散分布、不連續。篩選并剔除數據集中的異常值是造成此類型缺失值的主要原因,此類型缺失數據集的歷史過程線見圖2(a)。
圖2 不同缺失值離散度下時間序列的時程曲線Fig.2 Time history curves of time series under different dispersion degree of missing value
連續型缺失:在數據分布上呈現為密集且連續出現缺失值。數據采集系統故障是造成此類型缺失值的主要原因,此類型缺失數據集的時程曲線見圖2(b)。
混合型缺失:在數據分布上呈現為在時間序列內同時存在離散型和連續型分布。此類缺失類型在大壩安全監測數據集中較為普遍,典型時程曲線見圖2(c)。
由于目前各項數據挖掘研究均需參考測點的空間分布特征[15-17],故針對多測點的缺失值填補算法也需考慮缺失值在空間尺度的分布情況。在空間尺度中主要的缺失類型有:① 集中型缺失;② 均勻型缺失。
集中型缺失:在數據分布上呈現為缺失值存在于一片區域測點的時間序列中的少數測點內。造成此類型缺失值的主要原因是正常工作的測點群中出現少數測點發生損壞導致數據采集缺失,此類型缺失數據集的時程曲線見圖3(a)。
圖3 不同缺失值集中度下時間序列的時程曲線Fig.3 Time history curves of time series under different missing value concentration
均勻型缺失:在數據分布上呈現為缺失值均勻存在于一片區域測點的時間序列中。當此區域出現區域性系統問題時,該區域內所有儀器均無法采集數據,進而導致此類型的數據缺失,此類型缺失數據集的時程曲線見圖3(b)。
傳統缺失值填補算法或基于自回歸模型,或依據數據相似性,這些算法無法挖掘時間序列內存在的潛在信息,但大壩作為整體,其各個監測量之間存在一定相關性[18],有鑒于此,本文提出基于時間尺度相關性的缺失值填補新算法。
在統計學中常使用相關系數來描述兩個變量之間的相關程度,不同類型數據適用的相關系數不同。針對大壩安全監測數據集而言,由于行業中一般假設數據集內各變量符合正態分布[19],故本文選擇Pearson相關系數[20]來定量衡量各時間序列之間的相關性,記為r,是一種線性相關系數,用來反映兩個變量X和Y的線性相關程度,其具體表達式如下,相關系數介于-1~1之間,絕對值越大表明兩變量之間的相關性越強。
基于時間尺度相關性的缺失值填補新算法其核心在于預測模型中作為輸入項的時間序列的選取,尋找與目標待填補缺失值所在時間序列存在一定相關關系且符合一定要求的時間序列,并將這些時間序列作為預測算法的輸入項,進而預測填補缺失值。在輸入項選取上應遵循以下原則:① 作為輸入項的時間序列不可與目標缺失值存在同一時段的缺失;② 作為輸入項的時間序列需與目標填補時間序列之間滿足一定的相關度。
新算法的基本步驟如下:
(1) 標記輸入模型中每條時間序列中的缺失值Xi。
(2) 計算各時間序列之間的Pearson相關系數r。
(3) 將包含缺失值Xi的時間序列輸入到模型中,篩選3個以上與缺失值Xi所在時間序列r在0.95~1.00區間范圍內,且不與該缺失值同一時段缺失的時間序列進行建模,將上述篩選的時間序列中連續部分作為訓練集,將缺失部分作為測試集輸入預測模型并輸出預測值,將預測值作為缺失值的填補值,并將填補后的時間序列重新放回數據集中。如符合上述步驟要求的時間序列數量僅有2個時,則引入至少一個已經填補后的符合上述要求的時間序列來構建輸入項。如符合上述步驟要求的影響因子數量僅有一個時,則引入至少2個已經填補后的符合上述步驟要求的時間序列來構建輸入項。
(4) 檢測數據集中是否存在缺失值,如有缺失值則進行下述步驟,若檢測到沒有缺失值則直接輸出完整的數據集。
(5) 由于數據集中缺失值得到填補,需重新計算各時間序列之間的Pearson相關系數r。
(6) 重復步驟(3)~(5)。
(7) 如缺失值Xi在完成上述填補后仍存在缺失值,則將步驟(3)要求的r區間降低至0.90~0.95,并重復上述填補過程。
(8) 如缺失值Xi在完成上述填補后仍存在缺失值,則將步驟(3)要求的r區間每次以0.05為區間長度進行降低,并重復上述的填補過程,直至所有缺失值得到填補。
整個流程如圖4所示。
圖4 融合多測點數據相關性的缺失值填補新算法流程Fig.4 Flowchart of new missing value filling algorithm based on fusion of multi-point data correlation
本次試驗以新疆開都河流域內察汗烏蘇水電站混凝土面板堆石壩的安全監測數據集為依據,進行了兩次缺失值填補試驗。試驗一測試了填補算法對于不同類型缺失值數據集的填補性能,試驗二測試了在真實數據集下填補算法對于缺失值的填補效果。在該堆石壩壩左0+154、壩左0+200、壩左0+202此3個監測斷面內高程1 579~1 619 m的面板區域中共布設了30個測點[見圖5(a)],安裝包括面板測縫計、鋼筋應力計、滲壓計、混凝土應變計等4類監測儀器。監測時間為2017年1月1日至2020年12月31日。這些測點由于在空間上鄰近,受到的環境作用以及其他因素的影響相似,故這些測點在時間尺度上存在一定的相關性,各測點時間序列間Pearson相關系數熱力圖如圖5(b)所示。
試驗一在原有完整數據集上構建缺失值,通過不同缺失值分布類型來真實地還原原始數據集中缺失值的分布情況。在缺失率層面設置小缺失率(1%)和大缺失率(10%)兩種情況;在集中度層面設置為集中在少數測點缺失和均勻在全部測點缺失兩種情況;在離散程度層面設置離散型缺失、連續型缺失以及混合型缺失3種情況。綜合上述3個層次的組合,共模擬12種包含不同類型缺失值的數據集,具體對應編號如表1所列。
表1 包含不同類型缺失值數據集對應編號Tab.1 Corresponding numbering of data sets containing different types of missing values
試驗二為測試各算法在實際工程中對于缺失值的填補效果,選取上述測點群中的R23測點(所測量的物理量為徑向位移),對其實測數據中2017年10月27日至12月25日存在的缺失值進行填補測試。
本次試驗使用了目前機器學習領域中認可度廣且成熟度高的3種機器學習算法:BP神經網絡、SVM(support vector machine)、多元線性回歸(LR)[21-22],將這3種算法分別作為預測填補算法中的預測模型內核。同時為對比對缺失值填補的性能,選擇KNN最近鄰填補法和線性插值填補法同時對上述12種包含不同類型缺失值的數據集進行缺失值填補,并對填補結果進行對比分析。
為了對比不同缺失值填補算法對于缺失值的填補精度,本文利用均方根誤差[23](RMSE)以及歸一化平均絕對百分比誤差[24](nMAPE)作為評價填補算法對于缺失值填補精度優劣的指標。
本文提出的缺失值填補算法、KNN最近鄰填補法以及線性插值填補法針對數據集1,2,3,7,8,9的填補精度結果如表2~3所列。
表2 不同填補算法針對數據集1~3的填補精度Tab.2 Filling accuracy of different filling algorithms for data sets 1~3
表3 不同填補算法針對數據集7~9的填補精度Tab.3 Filling accuracy of different filling algorithms for data sets 7~9
由表2~3可知,當缺失率、集中度為常量時,各填補算法對于離散型缺失數據集的填補效果均優于連續型和混合型缺失數據集,對于連續型缺失數據集的填補效果最差。當缺失率、離散程度為常量時,各填補算法對于集中缺失型數據集的填補效果均優于均勻缺失型數據集。不同預測模型內核對缺失值的填補效果也有一定影響,其中LR、SVR內核對于不同類型的缺失數據集擬合效果較好,且在應對不同類型缺失數據集時兩種模型內核的表現差異不大,BP神經網絡內核的擬合效果較差,但也優于其余填補算法。
本文填補算法在各預測模型內核下針對數據集1,2,3,7,8,9的RMSE均值為4.317 934,nMAPE均值為0.034 305;KNN填補法的RMSE均值為5.300 193,nMAPE均值為0.042 396;線性插值填補的RMSE均值為5.910 327,nMAPE均值為0.047 557。相對而言,本文填補算法的各項精度指標的平均值針對小缺失率的情況下的不同類型缺失值數據集均優于其他填補算法,其中RMSE均值相較于KNN填補法的RMSE均值提升了18.53%,相較于線性插值填補法的提高了26.94%;nMAPE均值相較于KNN填補法的提升了19.08%,相較于線性插值填補法的提高了27.86%。
同理,不同填補算法針對數據集4,5,6,10,11,12的填補精度結果如表4~5所列。
表4 不同填補算法針對數據集4~6的填補精度Tab.4 Filling accuracy of different filling algorithms for data sets 4~6
表5 不同填補算法針對數據集10~12的填補精度Tab.5 Filling accuracy of different filling algorithms for data sets 10~12
同時隨著缺失率的提升,各填補算法的填補精度雖均有所下降,但本文所提算法的下降率更低,RMSE均值在缺失率為10%的情況下相較于1%時下降了0.223 632,下降率為5.2%,nMAPE均值下降了0.001 694,下降率為4.9%。而KNN填補法的RMSE均值在缺失率為10%的情況下相較于1%時下降了0.132 192,下降率為5.7%,nMAPE均值下降了0.001 694,下降率為5.1%;線性插值填補法在缺失率為10%的情況下相較于1%時下降了0.813 341,下降率為13.8%,nMAPE均值下降了0.007 491,下降率為15.8%。
針對R23測點數據集,真實的填補情況如圖6所示。
圖6 實測缺失數據集不同填補算法的填補效果對比Fig.6 Comparison of the filling effect of measured missing data sets by different filling algorithms
依據圖6可知,本文提出的填補算法可有效還原缺失值的真實分布情況,且較好地還原了數據本身的周期性。而線性插值填補法等傳統算法,僅利用缺失值前后的數據進行回歸,無法挖掘出測點內部的周期性以及測點間的相關性,導致缺失值填補效果較差。
(1) 本文通過研究分析現有大壩安全監測數據集中缺失值分布情況,總結提出了數據集中主要的缺失類型。
(2) 基于測點間相關度的評判依據,提出了一種融合多測點數據相關性的缺失值填補新算法,該算法利用已有的預測模型作為數據填補的來源,通過反復迭代計算,獲得較高的數據填補質量。
(3) 試驗結果表明,本文所提算法相較于其他填補方法,針對不同類型缺失值數據集在RMSE均值上至少提升15%,nMAPE均值至少提升10%,能很好地還原缺失值的真實變化趨勢,滿足大壩安全監測要求。