張全秀 ZHANG Quan-xiu;安曉冬 AN Xiao-dong;陳夢洵 CHEN Meng-xun;王浩任 WANG Hao-ren;安文章 AN Wen-zhang
(①石家莊市軌道交通集團有限責任公司,石家莊 050035;②北京城建設計發(fā)展集團股份有限公司,北京 100037)
土建投資估算大數(shù)據(jù)分析基于初步設計概算設計項目歷史數(shù)據(jù),利用隨機森林等機器學習算法挖掘不同設計參數(shù)、環(huán)境地質(zhì)、施工資源配置條件下,實現(xiàn)迅速對總體設計階段車站、區(qū)間及人防工程的工程造價的評估預測,并結合BIM 數(shù)據(jù)集成與可視化展示的特點進行三維交互集成展示,迅速形成總體設計方案整體效果,輔助決策。
投資估算數(shù)據(jù)資源為北京市某五條線地鐵項目中的投資概算信息,包含車站工程、區(qū)間工程、車輛段與綜合基地、軌道工程、人防工程等工程投資概算數(shù)據(jù)。每一個單項工程概算信息又包含工程信息和綜合概算信息,且各工程包含數(shù)據(jù)形式和內(nèi)容相似。以車站工程概算數(shù)據(jù)為例,車站工程信息和綜合概算信息,包含有車站長度、車站寬度、基坑深度、板頂覆土、出入口(含安全口、無障礙口)數(shù)量、風亭數(shù)量、車站總建筑面積、主體建筑面積、出入口通道建筑面積、風道風井建筑面積、出入口地面廳建筑面積、風亭建筑面積以及車站土建總造價等工程建筑信息和車站主體、出入口通道、風道風井、施工監(jiān)測量測、視頻監(jiān)控和施工門禁、車站裝修和車站附屬設施等工程費用信息。
按照不同的工程(車站工程、區(qū)間工程、車輛段與綜合基地、軌道工程、人防工程等)進行劃分,分別進行投資估算模型的建立,并確定該工程的輸入數(shù)據(jù),以車站工程投資估算為例(不同工程的輸入數(shù)據(jù)相似但略有不同),其投資估算模型的輸入數(shù)據(jù)。(表1)
表1 工程信息(車站)
按照不同的工程(車站工程、區(qū)間工程、車輛段與綜合基地、軌道工程、人防工程等)進行劃分,分別進行投資估算模型的建立,其模型輸出為各工程的估算總造價。以車站工程投資估算為例,其投資估算模型的輸出數(shù)據(jù)如表2、表3 所示。
表2 影響因子輸出數(shù)據(jù)說明
表3 造價預測結果輸出數(shù)據(jù)說明
由表1 可知,工程信息共有39 個字段,按照工程信息的不同類型,可以分為int,float,varchar,三種類型,通過在給出的樣本數(shù)據(jù)中找到最相似的的目標數(shù)據(jù)樣本。
對相應數(shù)據(jù)進行預處理,以滿足后期采用算法的需要[1]:
①對缺失的數(shù)據(jù)用0 表示;
②對varchar 字符串字段采用數(shù)字轉化的方式以滿足數(shù)據(jù)計算的需要,例如,結構名稱映射表轉化{“缺失”:0,“A 建筑”:1,“A 建筑”:2};
③通過把結構名稱轉換成int 類型數(shù)據(jù)以滿足后期數(shù)據(jù)處理的需要,為避免數(shù)據(jù)分布不均而影響算法結果的準確性,對數(shù)據(jù)進行標準化、分布統(tǒng)一化處理,處理公示如下:,其中:m 表示字段數(shù)據(jù)的平均值;s 表示字段數(shù)據(jù)的標準差;X 表示需要標準的數(shù)據(jù)值;X*表示標準化過后的數(shù)據(jù)值。
樣本數(shù)據(jù)集有100 條左右數(shù)據(jù),目的是從這100 條左右數(shù)據(jù)中找到與目標數(shù)據(jù)最相近的樣本,可以通過回歸算法來計算數(shù)值來選取數(shù)值最詳盡的樣本,可以通過聚類算法來通過樣本分類來找到與之相近的數(shù)據(jù)[2]。
①歐式距離計算方式,主要用來計算樣本在歐式空間中的距離計算,容易被少數(shù)大數(shù)值的維度所影響;②曼哈頓距離計算方式,主要用來計算樣本的城市街區(qū)距離計算,計算樣本的非直接距離,在目前需求中只需要考慮直接距離;③切比雪夫距離計算方式,主要用來計算樣本的數(shù)值差的絕對值計算,計算樣本的數(shù)值差的絕對值計算;④馬氏距離計算方式,主要用來量綱無關的歐式空間距離計算,在協(xié)方差矩陣是對角陣的情況下就是標準化歐式距離,考慮計算復雜度,沒有必要使用;⑤標準化歐式距離計算方式,主要用來標準化過后的歐式空間距離計算,在一個多維空間中找到一個與目標樣本距離最近,相似度最高的樣本,但是由于不同維度的數(shù)據(jù)可能存在不同的分布如果某一個維度的數(shù)據(jù)取值很大,那么結果很可能就被這個維度的數(shù)據(jù)所決定,所以需要解決不同維度數(shù)據(jù)分布的問題,在進行標準化過后的數(shù)據(jù)滿足數(shù)學期望為0,方差為1,這樣各個維度的數(shù)據(jù)相當于有了相同的數(shù)據(jù)分布,那么在多維空間中,每個維度對于距離的貢獻度就變成了一致的,不會受某幾個維度產(chǎn)生過大的干擾。
計算方法:在上一步的數(shù)據(jù)標準化處理后,視樣本為n 維向量(n 為樣本字段數(shù):100)。
兩個n 維向量a(x11,x12,…,x1n)與b(x21,x22,…,x2n)間的標準化歐氏距離的公式:
xij:i 代表第i 個樣本,j 代表第j 個字段變量
d12代表樣本1 與樣本2 之間的距離后續(xù)記為d1:2,現(xiàn)有100 個樣本數(shù)據(jù)集,與一個目標樣本,通過數(shù)據(jù)處理后的標準化數(shù)據(jù),將這100 個樣本數(shù)據(jù)集和1 個目標樣本轉化為向量分別兩兩計算標準化歐式距離,目標樣本為101,求出來的結果為:
為避免距離最小結果只取一個可能會導致由于數(shù)據(jù)同一字段的差值又不同字段相似來彌補造成的誤差,所以建議最后取3 個與目標函數(shù)距離最近的樣本:
Min(d_array,3)
取d_array 中距離最小的3 個樣本,為我們需要的與目標樣本最近的樣本。
數(shù)據(jù)集datas=[X1,X2,X3…… X100]
目標數(shù)據(jù)target=X101
映射集dict1={“A 名稱”:1,“B 名稱”:2}
距離結果集d_array =(100)[float] 長度為100 的浮點距離結果集
標準化函數(shù)normal_function(column_data)參數(shù)為對應字段所有的數(shù)據(jù)
標準化歐式距離計算函數(shù)distance_function(data1,data2)參數(shù)為待求距離的兩個樣本數(shù)據(jù)
最小值函數(shù)min(d_array,n)參數(shù)1 為距離結果集,參數(shù)2 為number 為從小到大排序前n 個值
Step1:
for data in datas: #對現(xiàn)有數(shù)據(jù)進行循環(huán)計算
for column in data: # 對每條數(shù)據(jù)的每個字段進行循環(huán)計算
If data[column] is null:#對空值進行處理
data[column] = 0
If data[column].type is varchar:
data[column] = dict1.get(data[column]) # 根據(jù)字符串字段值轉換為對應int
Step2:
for data in datas: #對現(xiàn)有數(shù)據(jù)進行循環(huán)計算
for column in data: # 對每條數(shù)據(jù)的每個字段進行循環(huán)計算
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]。
土建投資估算可視化實現(xiàn)主函數(shù)為:Feature_analy sis,該函數(shù)主要利用隨機森林算法、相關性算法等對土建投資估算進行影響因素分析,得到影響投資估算的關鍵因素并確定其關鍵影響指標和權重排序以及最終的投資估算總造價。最終可視化輸出為影響投資估算的關鍵因素(如板頂覆土、出入口、風亭、車站總建筑面積等)和關鍵因素的排序和權重(如板頂覆土權重、出入口權重、風亭權重、車站總建筑面積權重等)以及車站工程土建總造價,本模塊分析結果可視化如圖1 所示。
圖1 影響因素分析結果界面
通過BIM 數(shù)據(jù)集成平臺,以單位工程(車站或區(qū)間)的數(shù)據(jù)ID 關聯(lián)模型,進行定位展示。
在對樣本數(shù)據(jù)進行了空值處理,字符串轉化,標準化過后,通過選取與目標樣本標準化距離最小的3 個樣本為最終結果。
在此需求中由于各個數(shù)值貢獻度不一樣,標準化過后可能最后結果不夠準確,因為標準化過后各個字段的貢獻值沒有差別,如果不進行標準化那么數(shù)值分布較大的占比會比較重,但是明顯不應該僅僅因為數(shù)值較大就占比高,所以如果可以應盡可能提高數(shù)據(jù)量,然后通過回歸算法來估算近似樣本,在目前數(shù)據(jù)量下回歸算法不足以學到足夠的參數(shù)保證結果;后續(xù)可根據(jù)樣本數(shù)量的增加可以選擇相應的回歸算法進行相似度計算,進行pca 降維對數(shù)據(jù)進行預處理,對線性相關的維度進行降維處理,減少計算復雜度,避免數(shù)據(jù)維度相關的影響[4]。