孫振林, 柳飛*, 陶水忠, 楊曉輝,, 于茜, 張碩,, 周闖
(1.北京市市政工程研究院, 北京 100037; 2.北京市建設工程質量第三檢測所有限責任公司, 北京 100037;3.北京城建勘測設計研究院有限責任公司, 北京 100101)
近幾年中外老舊房屋因各種結構變形引起的經濟損失和人身傷害事故頻發,對人民群眾的生命財產安全構成較大威脅[1]。為使建筑物滿足居住和使用要求,主要使用結構健康監測手段監測建筑物的變形變化等[2]。結構健康監測可以做到實時和全天候監測,但每天會產生大量的監測數據,數據中具有豐富的結構變形信息,因此對監測數據進行分析處理,深入挖掘其中的有效信息,在結構安全監測與評估中具有十分重要的意義。
目前,在結構健康監測技術的應用方面,一些學者在橋梁、隧道等大型土木工程結構中已成功運用,徐哲能等[3]利用物聯網架構融合多網連接技術對杭州某典型橋梁開展了全部位結構動態健康監測,實現對橋梁基本信息管理、結構監測數據自動采集,數據分析、自動預警的目標;黃俊等[4]在水下隧道結構中使用健康監測方法,在上海、南京等地的水下隧道進行實測,系統證明了水下隧道健康監測系統的可實施性;而在民用小型房屋建筑中,王曉東等[5]根據房屋建筑的特點,設計了一種房屋安全在線監測系統,實現房屋安全狀況的實時監測,進行危險險情報警。在監測數據處理與分析方面,楊宏印等[6]利用健康監測結果對橋梁結構應力、結構撓度和結構溫度的相關性進行分析,同時利用小波變換,削弱溫度對監測結果的影響,保證監測數據的準確性;蔡興旭等[7]利用長短期記憶循環神經網絡識別異常數據,并發現潛在風險,相對于傳統方法精度更高;劉國超等[8]利用卡爾曼濾波方法對基坑變形監測數據濾波消噪,剔除監測數據中的隨機擾動誤差,提高了最終的預測精度。已有的結構健康監測多關注大型土木工程結構,而忽視小型土木結構;在數據處理方面多注重對影響因素的判別、數據濾波處理等[9],而忽視對原始數據的有效性評估、異常數據識別和替換,缺失數據插補等,且缺乏系統的數據處理流程和方法。
現利用Python豐富的“庫”資源構建針對海量自動化監測數據的預處理程序。利用北京市東城區房屋健康安全監測項目的監測數據,驗證程序的高效性和可行性。同時為說明自動化監測數據的準確性,提出一種以人工監測數據進行校核的方法,并利用多項式曲線探討擬合預測。
設計目標是高效、自動化、可視化處理和展示房屋健康監測數據,使房屋安全評估具有可靠的數據支撐。
具體實現以下功能:①從數據庫中讀取Excel數據,實現數據的批量導入和暫時存儲;②主要步驟分4步:可信度評估、異常數據檢測與替換、遺漏數據插補及平滑濾波;③實現對地基沉降、墻壁傾斜、水平位移、裂縫位移、溫濕度等監測數據的批量處理和可視化,對處理后的數據進行多元化導出和存儲。
對于原始數據首先進行可信度評估,通過則可繼續處理數據,未通過則尋找問題來源;通過的數據進行異常數據剔除和替換,插補空缺值,處理后進行平滑濾波。預處理流程如圖1所示。

圖1 數據預處理流程圖Fig.1 Flow chart of data preprocessing
預處理的實現基于Python程序語言進行編程,與C、Java等相比是一種簡潔方便的程序語言,數據結構較高效,面向對象的編程可以以簡單高效的方式完成[10-11]。預處理板塊運用Python中豐富的庫資源進行開發,本文研究主要運用以下庫[12]。
(1)Numpy庫:具有對數組的強大處理能力和高效的廣播機制,以及對數據快速處理的相關函數。本文應用其中的“polyfit”和“polyval”函數對數據進行多項式曲線擬合和多項式的生成。
(2)Pandas庫:基于Numpy開發的科學計算庫。其中包含多種快捷的數據處理方法,做到對數據的查找、修改等操作。在本文研究中有廣泛的應用,尤其在異常值剔除和遺漏數據插補中。
(3)Matplotlib庫:數據可視化是數據處理中必不可少的展示方法,本程序目標中也需要對數據進行可視化。在Python中,Matplotlib是使用最多的繪圖庫,可以繪制二維和三維的數據圖像。本文研究中所有相關曲線均使用Matplotlib制作。
(4)SciPy庫[13]:SciPy是一個在NumPy的基礎上集成數學建模、數值分析等高級數學方法的開源算法庫。本文研究在平滑濾波部分使用S-G濾波器進行平滑濾波。
可信度評估使用鄧氏關聯度[14]進行數據評估,具體評估流程如下。
(1)首先選擇一組測點,以一個月為跨度提取每一組測點的返回數據(溫濕度、應力、位移等),每一組數據以時間序列的形式存儲在表格中,導入的數據以DataFrame結構存儲在寄存器中。
(2)對所有列向量X={xi(k)|k=1,2,…,n}進行標準化,本文研究中采用式(1)的平均值化方法進行標準化。
(1)
式(1)中:n為列向量長度;k為1~n的自然數。
(3)選取列向量X0={X0(k)|k=1,2,…,n}作為參考序列,其余的列向量Xi={Xi(k)|k=1,2,…,n}為比較序列,其中n為每列含有的數據個數,則鄧氏關聯度計算關聯系數為
A=minimink|x0(k)-xi(k)|
(2)
B=ρmaximaxk|x0(k)-xi(k)|
(3)
(4)
式中:ρ為分辨率系數,ρ越小分辨率越大,一般ρ的取值區間為[0,1],通常取ρ=0.5;A、B為中間參數,A為通過minimink取得∣x0(k)-xi(k)∣中最小值,B為通過maximaxk取得∣x0(k)-xi(k)∣中最大值;ξi(k)為第i個比較序列向量中第k個值與參考序列向量第k個值的關聯系數。
于是,可求出Xi和X0的關聯系數。
ξi={ξi(k)|k=1,2,…,n}
(5)
則灰色關聯度定義為
(6)
式(6)中:γi為第i個比較序列向量與參考序列的灰色關聯度。
(4)關聯度閾值為所有的平均值。若符合關聯度閾值的要求,則說明與基準序列相比該序列符合要求,可以傳入下一步程序繼續處理;否則,剔除該序列不再參與接下來數據處理。
在異常數據檢測方面,主要方法有3σ法、Z分數法、格拉布斯法(Grubbs)和箱形圖法等,箱形圖法與前三種方法相比不需要數據滿足正態分布,可以檢測任何數據集的異常數據,適用范圍更加廣泛[15],因此本程序使用箱形圖法檢測異常數據。
箱形圖結構示意圖[16]如圖2所示,數據序列的中位數對應箱子的中心位置,上、下四分位數分別位于箱子的兩端,上下四分位數的間距(IQR)表示箱子的長度,最大上限(Q3+1.5IQR)和最小下限(Q1-1.5IQR)分別位于距箱子邊緣1.5倍上下四分位的間距處,則超過上下限則定義為異常數據,位于上下限內的數據則為正常數據[17]。

圖2 箱形圖結構示意圖Fig.2 Structure diagram of box-plot
識別出的異常數據以列向量形式記錄其在原始數據對應的“Index”和“Columns”屬性,并在原始數據位置賦為異常值“NaN”(Pandas庫中使用“NaN”表示缺失值或異常值),即完成對異常數據的剔除。
在異常數據剔除后,除了剔除的某些監測值,還有各種原因引起的數據缺失,在Python中均以“NaN”形式體現,本文研究中使用曲線擬合補充缺失數據。
按照幾何定義,曲線擬合是曲線y=p(t)到特定點(ti,yi)|(i=0,1,2,…,m)的距離平方和I為最小的曲線。求I的極小值條件為
j=0,1,…,n
(7)
式(7)中:ai為系數;t為時間變量;I為曲線y=p(t)到特定點(ti,yi)|(i=0,1,2,…,m)的距離平方和。
解方程組即可求出擬合函數p(t),將擬合函數作為實際函數即可求出數據缺失位置的數據值[18]。同時還可使用該近似函數預測短時間內的變形數據。
(1)S-G濾波[19]。S-G(Savitzky-Golay)濾波平滑,基于最小二乘法消除數據中的無用噪聲,同時保留信號波中的有用信息,其體現方式就是數據曲線更加平滑,波動有一定程度的減弱。S-G平滑公式為
(8)

(2)Kalman濾波。卡爾曼濾波(Kalman filtering)是線性系統狀態方程[20-21]的應用,其通過讀取觀測數據,輸出系統狀態最優估計值的算法,可以實時計算濾波。其應用非常廣泛,這是因為在實際的系統當中,有許多不確定因素影響系統的穩定性:①沒有據對完美的數學模型;②不可控的系統擾動;③傳感器本身的誤差。本文研究使用卡爾曼濾波主要是為了削弱傳感器誤差,和不可控擾動的影響以平滑曲線,數學表達式為
(9)
選取北京市東城區老舊房屋健康安全智慧監測項目中紅廟街46號作為分析對象,驗證上述預處理流程,詳細過程及結果如下。
紅廟街46號位于北京市東城區,建于1949年,總建筑面積約為31.52 m2,建筑立面照如圖3所示。建筑結構形式為地上2層砌體結構,層高3.0 m。樓面板為木質樓板,屋面為木屋架兩面坡屋面。主要監測項目包括地基沉降、墻壁傾斜、裂縫位移、水平位移、應力應變等。本文研究中以地基沉降數據為例驗證數據預處理流程。

圖3 建筑外立面Fig.3 Building facade
沉降數據是建筑變形的重要指標,能夠反應房屋結構和地基變形的情況,因此本文研究以沉降變形監測數據驗證可信度評估的可靠性。
監測點位示意如圖4和圖5所示,房屋共布設5個沉降變形監測點,采用靜力水準方法進行監測,沉降監測點位的布設位置綜合考慮現場實際情況和監測需求,均布設在東側二層外墻處。

圖4 監測模型示意Fig.4 Monitoring model

圖5 監測設備安裝情況Fig.5 Monitoring equipment installation
監測頻率設置為每30 min自動采集一次數據,以一個月時間為跨度選取房屋沉降的監測數據,以2022年8月監測數據為例,每個測點采集的數據總計1 487個,從Excel導入的數據以DataFrame形式存儲在寄存器中,如圖6所示。

圖6 導入的原始數據(Dataframe結構)Fig.6 Imported raw data (Dataframe structure)
以沉降序列CJ-00作為參考序列,剩余序列(沉降序列CJ-01、CJ-02、CJ-03、CJ-04)作為對比序列,通過編程得到灰色關聯度和關聯度閾值如圖7所示。關聯度閾值為0.818 577 825 945 26,經過比較選取序列CJ-00、CJ-01、CJ-02和CJ-03進行下一步處理,剔除序列CJ-04。

圖7 灰色關聯度和閾值Fig.7 Grey Relational and threshold
以3.1節中通過可信度評估的沉降序列CJ-00為例說明異常數據的處理結果。箱形圖篩選異常數據結果顯示,在第701~800個數據中共出現4個異常數據,對應的數據分別為(745,36.34)、(746,36.36)、(747,36.58)和(748,36.49)。監測點CJ-00異常數據剔除前后的監測數據部分曲線圖如圖8和圖9所示。

圖8 異常數據剔除前Fig.8 Before removing the abnormal data

圖9 異常數據剔除后Fig.9 After removing the abnormal data
使用1次、2次、3次、5次和10次多項式進行曲線擬合插值,1次、2次、3次、5次和10次多項式插值結果與實際數據的相關系數如表1所示,比較可知多項式次數越高,相關性越好,即更貼近實際數據,但隨著次數的增大計算量大幅增加,考慮到設備算力和成本,程序采用3次多項式曲線插值填補空缺值和異常數據,插補結果部分曲線如圖10所示。

表1 多項式插補結果與實際數據的相關系數Table1 Coefficient of correlation between polynomial interpolation results and actual data

圖10 異常數據曲線擬合插補結果Fig.10 Abnormal data curve fitting interpolation results
異常數據剔除與插補前后監測點CJ-00數據散點圖如圖11和圖12所示,處理后數據相較原始數據波動區間由1.0 mm減小為約0.5 mm,減小幅度約50%,波動幅度明顯降低,提高了數據的穩定性。

圖11 監測點CJ-00未進行異常數據剔除與插補數據散點圖Fig.11 Scatter plot before removing abnormal data and interpolation data of monitoring CJ-00

圖12 監測點CJ-00進行異常數據剔除與插補后數據散點圖Fig.12 Scatter plot after removing abnormal data and interpolation data of monitoring CJ-00
規范《危險房屋鑒定標準》JGJ125—2016規定,評定危險狀態的沉降速率控制值為每月4 mm,監測項目中一般將預警閾值設置為控制值的60%~70%,為避免頻繁預警,波動區間不宜過大,若波動區間過大,就會頻繁觸發預警,造成不必要的恐慌和經濟損失。文中處理異常值后的數據滿足規范中的要求,且不會觸發預警。
平滑濾波目的是降低數據的離散性并凸顯數據的趨勢性。采用S-G濾波和Kalman濾波兩種方法,兩種濾波方法成果與原始數據對比曲線圖如圖13所示,與未處理數據相關系數分別為0.967 410和0.821 076,則兩種濾波方法均可體現原始數據的變化趨勢,標準差表2所示,比較可知,相較于未濾波的原始數據,兩種方法均可降低數據離散性,但Kalman濾波方法相較于S-G濾波方法在降低離散性方面效果更好、更適合本程序要求,因此程序使用Kalman濾波平滑數據。

表2 不同濾波方法處理數據的標準差Table 2 Standard deviation of data processed by different filtering methods

圖13 S-G濾波、Kalman濾波成果圖Fig.13 S-G filtering and Kalman filtering results

圖14 數據比對流程圖Fig.14 Flow chart of data comparison
經過上述數據處理后,數據能很好地反映沉降的變化趨勢,在一個月的時間內,自動化監測沉降測量數據為-0.137 5 mm(即自動化監測得到結果為下沉0.137 5 mm)。
4.1.1 自動化監測數據合理性檢驗流程
數據經第3節處理后,已消除明顯的測量誤差,為驗證自動化監測結果的準確性和可靠性,需利用人工監測數據進行數據比對。通過比對一段時間內的變化趨勢和誤差判斷自動化監測數據是否合理,具體流程如下。
(1)數據準備。①自動化監測數據:使用上述流程處理后的自動化監測數據;②人工監測數據:采用與自動化監測對應時間內的人工監測數據,并對兩次人工監測數據進行插值,使人工監測與自動化監測數據量相同。
(2)趨勢分析:變化趨勢以自動化與人工監測數據的相關系數ρ體現,若ρ>0,則變化趨勢相同,當ρ接近1時,說明自動化監測數據和人工監測數據相關性較好,趨勢符合度更高,且正相關;若ρ<0,則變化趨勢不同,需檢查自動化監測過程中是否存在其他問題影響監測結果。
(3)誤差分析:以自動化監測數據作為近似值x*,人工監測數據作為準確值x,求出對應時間的絕對誤差e*,若|e*≤0.1|,則認為此時刻自動化監測值滿足要求,否則不滿足要求。
(4)若通過趨勢分析,且滿足誤差分析要求數據達到90%以上,則認為自動化監測數據有效;否則,需檢查監測設備及是否存在其他因素對監測結果產生影響。
4.1.2 紅廟街46號樓自動化監測數據檢驗
紅廟街46號樓自動化監測項目每月進行兩次人工監測數據采集以滿足比對要求,截至2022年8月25日人工監測數據采集如表3所示,選用8月12日和25日兩次人工監測數據與對應時間內的所有自動化監測數據,驗證自動化監測結果。

表3 人工監測沉降數據Table 3 Manual monitoring of settlement data
(1)數據準備。自動化監測數據:經預處理后有4組沉降數據,選取8月12日12:00至25日12:00所有數據,并以對應時刻4個監測值的平均值作為房屋沉降自動化監測值,前10次監測數據如表4所示。

表4 自動化監測前10次數據Table 4 Automatic monitoring of top 10 data
人工監測數據:取三個人工監測點數據的平均值作為人工沉降監測數據,對兩次人工監測數據之間進行線性插值,插值后需保證與自動化監測數據量相同,前10個插值數據如表5所示。

表5 人工監測前10個插值數據Table 5 Manual monitoring of top 10 interpolation data
(2)趨勢分析。對數據進行相關性分析,相關性檢驗散點圖如圖15所示,相關系數ρ=0.506 454 82,相關系數大于零,則自動化與人工監測數據正相關,變化趨勢相同,滿足趨勢分析要求,可進行誤差分析。

紅色虛線為趨勢線
(3)誤差分析。計算自動化與人工監測數據的絕對誤差,分析結果如圖16所示,根據統計滿足|e*≤0.1|的數據共568個,不滿足要求數據56個。有效數據占比91.03%,滿足誤差分析對有效數據的要求。

圖16 絕對誤差結果散點圖Fig.16 Scatter plot of absolute error results
(4)綜上自動化與人工監測數據變化趨勢相同,且有效數據占91.03%,滿足對有效數據數量的要求。可得出結論,紅廟街46號樓房屋沉降變形自動化監測有效,滿足自動化監測預期要求。
使用多項式曲線擬合進行預測,利用預處理后的8月自動化監測數據構建擬合曲線,1次、2次、3次、5次和10次多項式擬合曲線如圖17所示,由3.2節知,次數越高擬合效果越好,但計算量大幅增加。

圖17 1次、2次、3次、5次和10次多項式擬合曲線Fig.17 Fit curves to polynomials of degree 1, 2, 3, 5, and 10
因此為保證擬合預測準確率,同時綜合實際情況,選擇2次、4次和10次多項式曲線對沉降監測點CJ-00進行預測。以2022年9月紅廟街46號樓房屋沉降變形自動化監測CJ-00數據驗證預測準確性,為2次、4次和10次多項式曲線擬合預測示意圖如圖18所示,圖中黑色虛線左側為8月預處理后自動化監測數據,右側為9月預處理后自動化監測數據,紅色曲線為根據8月監測數據做出的擬合曲線,黑色虛線與紅色點劃線間為有效預測數據。

圖18 多項式擬合預測結果Fig.18 Polynomial fitting prediction result
經統計得到預測精度及有效數據結果如表6所示。

表6 擬合預測統計結果Table 6 The results of the fitting prediction statistics
對比發現,不同次數的多項式曲線擬合預測均可在一定精度內實現短期預測;4次多項式的預測精度,誤差平方和(SEE)和有效時間均優于2次多項和10次多項式,因此多項式次數越高并不一定會提高預測精度和有效時間,而需要根據實際情況不斷優化擬合曲線,選取最合適的多項式次數以提高預測精度和有效時間。
以北京市東城區老舊房屋健康安全智慧監測項目為背景,使用Python編程語言構建數據預處理程序,提出了一種使用人工監測數據校核自動化監測數據的方法,并使用多項式曲線擬合討論擬合預測,得出如下結論。
(1)使用Python編程語言構建預處理程序,具有易于修改、高效處理海量數據等優點且能適應不同類型數據,能以可視化方式展示處理結果,同時可以直接調用處理結果進行其他的分析操作,文中的數據比對與擬合預測就是直接調用預處理結果進行分析。
(2)數據預處理程序采用灰色關聯法選擇相關性較好的數據,箱形圖檢測異常數據,并使用擬合曲線對異常和空缺數據進行插值和替換,以濾波效果更好的Kalman濾波方法降低了數據的離散性,最終的處理結果達到預期設計目標,處理結果能清晰反應變化趨勢。
(3)數據比對是為驗證自動化監測數據的準確性和可靠性而提出,文中以預處理后紅廟街46號樓沉降數據為例驗證了數據比對流程的合理性,結果顯示紅廟街46號樓自動化監測數據符合校核要求,且處理流程簡潔方便。
(4)文中擬合預測通過對比不同次數多項式的預測結果,得知預測精度和有效預測時間并不會隨著多項式次數增加而提高,但次數過低也會導致預測結果偏離真實數據。通過比較紅廟街46號8月自動化監測數據的最佳擬合預測曲線為4次,預測精度達到0.1%,有效預測時間約10 d。