張全秀 ZHANG Quan-xiu;安曉冬 AN Xiao-dong;陳夢洵 CHEN Meng-xun;王浩任 WANG Hao-ren;安文章 AN Wen-zhang
(①石家莊市軌道交通集團有限責任公司,石家莊 050035;②北京城建設計發展集團股份有限公司,北京 100037)
土建投資估算大數據分析基于初步設計概算設計項目歷史數據,利用隨機森林等機器學習算法挖掘不同設計參數、環境地質、施工資源配置條件下,實現迅速對總體設計階段車站、區間及人防工程的工程造價的評估預測,并結合BIM 數據集成與可視化展示的特點進行三維交互集成展示,迅速形成總體設計方案整體效果,輔助決策。
投資估算數據資源為北京市某五條線地鐵項目中的投資概算信息,包含車站工程、區間工程、車輛段與綜合基地、軌道工程、人防工程等工程投資概算數據。每一個單項工程概算信息又包含工程信息和綜合概算信息,且各工程包含數據形式和內容相似。以車站工程概算數據為例,車站工程信息和綜合概算信息,包含有車站長度、車站寬度、基坑深度、板頂覆土、出入口(含安全口、無障礙口)數量、風亭數量、車站總建筑面積、主體建筑面積、出入口通道建筑面積、風道風井建筑面積、出入口地面廳建筑面積、風亭建筑面積以及車站土建總造價等工程建筑信息和車站主體、出入口通道、風道風井、施工監測量測、視頻監控和施工門禁、車站裝修和車站附屬設施等工程費用信息。
按照不同的工程(車站工程、區間工程、車輛段與綜合基地、軌道工程、人防工程等)進行劃分,分別進行投資估算模型的建立,并確定該工程的輸入數據,以車站工程投資估算為例(不同工程的輸入數據相似但略有不同),其投資估算模型的輸入數據。(表1)

表1 工程信息(車站)
按照不同的工程(車站工程、區間工程、車輛段與綜合基地、軌道工程、人防工程等)進行劃分,分別進行投資估算模型的建立,其模型輸出為各工程的估算總造價。以車站工程投資估算為例,其投資估算模型的輸出數據如表2、表3 所示。

表2 影響因子輸出數據說明

表3 造價預測結果輸出數據說明
由表1 可知,工程信息共有39 個字段,按照工程信息的不同類型,可以分為int,float,varchar,三種類型,通過在給出的樣本數據中找到最相似的的目標數據樣本。
對相應數據進行預處理,以滿足后期采用算法的需要[1]:
①對缺失的數據用0 表示;
②對varchar 字符串字段采用數字轉化的方式以滿足數據計算的需要,例如,結構名稱映射表轉化{“缺失”:0,“A 建筑”:1,“A 建筑”:2};
③通過把結構名稱轉換成int 類型數據以滿足后期數據處理的需要,為避免數據分布不均而影響算法結果的準確性,對數據進行標準化、分布統一化處理,處理公示如下:,其中:m 表示字段數據的平均值;s 表示字段數據的標準差;X 表示需要標準的數據值;X*表示標準化過后的數據值。
樣本數據集有100 條左右數據,目的是從這100 條左右數據中找到與目標數據最相近的樣本,可以通過回歸算法來計算數值來選取數值最詳盡的樣本,可以通過聚類算法來通過樣本分類來找到與之相近的數據[2]。
①歐式距離計算方式,主要用來計算樣本在歐式空間中的距離計算,容易被少數大數值的維度所影響;②曼哈頓距離計算方式,主要用來計算樣本的城市街區距離計算,計算樣本的非直接距離,在目前需求中只需要考慮直接距離;③切比雪夫距離計算方式,主要用來計算樣本的數值差的絕對值計算,計算樣本的數值差的絕對值計算;④馬氏距離計算方式,主要用來量綱無關的歐式空間距離計算,在協方差矩陣是對角陣的情況下就是標準化歐式距離,考慮計算復雜度,沒有必要使用;⑤標準化歐式距離計算方式,主要用來標準化過后的歐式空間距離計算,在一個多維空間中找到一個與目標樣本距離最近,相似度最高的樣本,但是由于不同維度的數據可能存在不同的分布如果某一個維度的數據取值很大,那么結果很可能就被這個維度的數據所決定,所以需要解決不同維度數據分布的問題,在進行標準化過后的數據滿足數學期望為0,方差為1,這樣各個維度的數據相當于有了相同的數據分布,那么在多維空間中,每個維度對于距離的貢獻度就變成了一致的,不會受某幾個維度產生過大的干擾。
計算方法:在上一步的數據標準化處理后,視樣本為n 維向量(n 為樣本字段數:100)。
兩個n 維向量a(x11,x12,…,x1n)與b(x21,x22,…,x2n)間的標準化歐氏距離的公式:
xij:i 代表第i 個樣本,j 代表第j 個字段變量
d12代表樣本1 與樣本2 之間的距離后續記為d1:2,現有100 個樣本數據集,與一個目標樣本,通過數據處理后的標準化數據,將這100 個樣本數據集和1 個目標樣本轉化為向量分別兩兩計算標準化歐式距離,目標樣本為101,求出來的結果為:
為避免距離最小結果只取一個可能會導致由于數據同一字段的差值又不同字段相似來彌補造成的誤差,所以建議最后取3 個與目標函數距離最近的樣本:
Min(d_array,3)
取d_array 中距離最小的3 個樣本,為我們需要的與目標樣本最近的樣本。
數據集datas=[X1,X2,X3…… X100]
目標數據target=X101
映射集dict1={“A 名稱”:1,“B 名稱”:2}
距離結果集d_array =(100)[float] 長度為100 的浮點距離結果集
標準化函數normal_function(column_data)參數為對應字段所有的數據
標準化歐式距離計算函數distance_function(data1,data2)參數為待求距離的兩個樣本數據
最小值函數min(d_array,n)參數1 為距離結果集,參數2 為number 為從小到大排序前n 個值
Step1:
for data in datas: #對現有數據進行循環計算
for column in data: # 對每條數據的每個字段進行循環計算
If data[column] is null:#對空值進行處理
data[column] = 0
If data[column].type is varchar:
data[column] = dict1.get(data[column]) # 根據字符串字段值轉換為對應int
Step2:
for data in datas: #對現有數據進行循環計算
for column in data: # 對每條數據的每個字段進行循環計算
data[column] = normal_function(datascolumns)# 對樣本的對應字段標準化計算
Step3:
for data in datas:
distance = distance_function(data,target)
d_array += distance
Step4:
data1,data2,data3 = min(d_array,3)
data1,data2,data3 為需求結果
安全性評價可視化界面包含三部分:一是安全事故影響因素分析;二是事故預警分析;三是安全等級評價分析[3]。
土建投資估算可視化實現主函數為:Feature_analy sis,該函數主要利用隨機森林算法、相關性算法等對土建投資估算進行影響因素分析,得到影響投資估算的關鍵因素并確定其關鍵影響指標和權重排序以及最終的投資估算總造價。最終可視化輸出為影響投資估算的關鍵因素(如板頂覆土、出入口、風亭、車站總建筑面積等)和關鍵因素的排序和權重(如板頂覆土權重、出入口權重、風亭權重、車站總建筑面積權重等)以及車站工程土建總造價,本模塊分析結果可視化如圖1 所示。

圖1 影響因素分析結果界面
通過BIM 數據集成平臺,以單位工程(車站或區間)的數據ID 關聯模型,進行定位展示。
在對樣本數據進行了空值處理,字符串轉化,標準化過后,通過選取與目標樣本標準化距離最小的3 個樣本為最終結果。
在此需求中由于各個數值貢獻度不一樣,標準化過后可能最后結果不夠準確,因為標準化過后各個字段的貢獻值沒有差別,如果不進行標準化那么數值分布較大的占比會比較重,但是明顯不應該僅僅因為數值較大就占比高,所以如果可以應盡可能提高數據量,然后通過回歸算法來估算近似樣本,在目前數據量下回歸算法不足以學到足夠的參數保證結果;后續可根據樣本數量的增加可以選擇相應的回歸算法進行相似度計算,進行pca 降維對數據進行預處理,對線性相關的維度進行降維處理,減少計算復雜度,避免數據維度相關的影響[4]。