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