楊 惠,李 文,郭若礁,李 孟,閆中林,鄭天君
(1.山東臨港疏港軌道交通有限公司,山東 臨沂 276624;2.煙臺大學(xué) 土木工程學(xué)院,山東 煙臺 264005)
隨著計算機(jī)深度學(xué)習(xí)技術(shù)的發(fā)展,利用數(shù)據(jù)挖掘技術(shù)進(jìn)行工程造價的快速預(yù)測得到了越來越廣泛的應(yīng)用。利用數(shù)據(jù)挖掘進(jìn)行工程造價的快速預(yù)測可以提高建設(shè)項目的決策效率,實現(xiàn)投資效益的最大化。
作為數(shù)據(jù)挖掘重要組成部分的特征工程,在工程造價的數(shù)據(jù)挖掘預(yù)測中,更是扮演著重要的作用;特征選取合理,算法模型訓(xùn)練的性能就好,反之則模型性能就低。特征工程不僅包括特征選取,還包括特征構(gòu)造、特征縮放、特征編碼以及特征降維等[1],對于具有明確目的的工程造價預(yù)測問題,特征指標(biāo)的選取主要還是依靠專業(yè)人員對業(yè)務(wù)場景的綜合分析來確定,同時,也是一個反復(fù)的、試錯的、迭代的過程。由于工程造價的影響因素非常復(fù)雜,因而特征指標(biāo)的類型也多種多樣,包括建筑、結(jié)構(gòu)、裝飾、基礎(chǔ)、設(shè)計基準(zhǔn)等各方面的特征,這些特征的原始數(shù)據(jù)需要轉(zhuǎn)化為便于機(jī)器學(xué)習(xí)算法進(jìn)行運算的特征數(shù)據(jù),機(jī)器學(xué)習(xí)通過將特征數(shù)據(jù)擬合到數(shù)學(xué)模型中獲取結(jié)論或做出預(yù)測。這一轉(zhuǎn)化過程就是特征指標(biāo)的量化和編碼,量化和編碼方式不同,工程造價預(yù)測模型的性能差異很大。
文章以廣聯(lián)達(dá)指標(biāo)網(wǎng)中陜西省西安市2014年—2017年簽約的住宅工程數(shù)據(jù)為對象,以支持向量機(jī)(SVM)算法[2]為預(yù)測模型,根據(jù)特征指標(biāo)的屬性,及其對工程造價的影響方式,對特征指標(biāo)采取不同的量化和編碼方式進(jìn)行工程造價預(yù)測,預(yù)測結(jié)果證實了特征指標(biāo)的編碼方式對模型性能確有較大影響,同時,提出了有利于提高工程造價SVM預(yù)測模型性能的特征指標(biāo)的編碼方式。
通過對廣聯(lián)達(dá)指標(biāo)網(wǎng)住宅工程造價數(shù)據(jù)的收集、梳理和清洗,選取其中160條樣本構(gòu)建SVM模型預(yù)測單方造價,模型樣本分為訓(xùn)練集和測試集。為了避免數(shù)據(jù)出現(xiàn)過擬合與欠擬合問題,本研究選取其中127條數(shù)據(jù)(占比79%) 為訓(xùn)練集,33條數(shù)據(jù)(占比21%)為測試集[3]。
如前所述,特征選取和模型訓(xùn)練是一個反復(fù)試錯的過程,筆者通過梳理住宅工程造價的影響因素,結(jié)合文獻(xiàn)調(diào)研[4-8],經(jīng)過反復(fù)試算,確定了住宅工程造價預(yù)測的特征指標(biāo),包括:工期、建筑外形、地上建筑面積、地下建筑面積、總建筑面積、檐高、結(jié)構(gòu)類型、地上層數(shù)、地下層數(shù)、總層數(shù)、地上平均層高、地下平均層高、抗震烈度、是否有人防、基礎(chǔ)類型、裝修類別、三級鋼筋占比、外立面裝飾、室內(nèi)裝飾,共19個特征指標(biāo)作為SVM模型的輸入指標(biāo)。
根據(jù)特征變量的數(shù)據(jù)類型,特征指標(biāo)分為定性特征和定量特征,定性特征包括定類特征和定序特征兩種類型;定量特征也有連續(xù)性和離散性特征兩種類型;從統(tǒng)計分析角度,變量分為定類、定序、定距和定比4種類型。
基于特征變量的類型分析,以上特征指標(biāo)中,工期、地上建筑面積、地下建筑面積、總建筑面積、檐高、地上層數(shù)、地下層數(shù)、總層數(shù)、地上平均層高地下平均層高以及三級鋼筋占比等11個特征的原始數(shù)據(jù)是數(shù)值,可以看作連續(xù)型特征;結(jié)構(gòu)類型、建筑外形、基礎(chǔ)類型3個特征,如表1所示,則是具有排他性的定類特征;是否有人防、抗震烈度、裝修類別、外立面裝飾、室內(nèi)裝飾5個特征,如表2所示,對工程造價的影響在一定程度上存在一定的遞進(jìn)關(guān)系,因此可以看作定序特征。不同類型的特征指標(biāo)對工程造價的影響方式不同,應(yīng)該采取不同的量化編碼方式。
對于連續(xù)型特征指標(biāo),即本文中所提及的11個定量指標(biāo),由于單位不同,其特征值相差較大,甚至可能是不同的數(shù)量級,如果不消除這種影響,很容易導(dǎo)致某些特征無法在模型得到應(yīng)有的表達(dá)效果,從而導(dǎo)致預(yù)測偏差。為了避免出現(xiàn)這種情況,需要對原始特征進(jìn)行無量綱化縮放,常用的方法有極差化與標(biāo)準(zhǔn)化。筆者采用極差標(biāo)準(zhǔn)化的特征縮放方式,對數(shù)據(jù)進(jìn)行處理。
Xi’=(Xi-Xmin)/(Xmax-Xmin)
(1)
定類特征和定序特征常用的編碼方式有兩種,一種是直接用自然數(shù)進(jìn)行編碼的常規(guī)編碼方式,另一種是獨熱指標(biāo)(One-Hot Encoding)方式。筆者分別采用了常規(guī)編碼方式,獨熱編碼方式和定類特征獨熱編碼、定序特征常規(guī)編碼的混合式編碼方式進(jìn)行SVM工程造價預(yù)測,發(fā)現(xiàn)混合式編碼即方便了定類特征用自然數(shù)編碼便于算法模型的定量計算,又考慮了定序特征對工程造價影響的遞進(jìn)關(guān)系,預(yù)測結(jié)果更加準(zhǔn)確,模型性能更加優(yōu)越。
2.2.1 常規(guī)編碼方式。通過特征值組合,將結(jié)構(gòu)類型、建筑外形、基礎(chǔ)類型、是否有人防、抗震烈度、裝修類別、外立。
面裝飾、室內(nèi)裝飾8個特征的特征值劃分成具有排他性的類別型指標(biāo),并對特征指標(biāo)直接用自然數(shù)依次排列編碼,并且在定序特征編碼中按照對工程造價的影響程度從小到大的順序進(jìn)行編碼,如表1和表2所示。這種編碼方式簡便易行,便于模型運算,是常見的編碼方式。但由于“基礎(chǔ)類型”“結(jié)構(gòu)類型”“建筑外形”3個定類特征對工程造價的影響是多方面的,一般不存在明顯的遞進(jìn)關(guān)系,這種編碼方式相當(dāng)于給不同特征人為賦予了數(shù)量差異,在一定程度上對模型性能產(chǎn)生不利影響。

表1 定類特征編碼

表2 定序特征編碼
運用Matlab[9]軟件測出該種編碼方式的預(yù)測結(jié)果,圖1為訓(xùn)練集單方造價預(yù)測結(jié)果,圖2為測試集單方造價預(yù)測結(jié)果。分析結(jié)果的精度(R2)和均方誤差(MSE)可知,訓(xùn)練集的預(yù)測結(jié)果精確度達(dá)到0.904 32,均方誤差達(dá)到0.006 738 2,但測試集的預(yù)測結(jié)果為0.825 22,均方誤差為0.006 952 1,精確度并不理想。

圖1 常規(guī)編碼SVM訓(xùn)練集單方造價預(yù)測結(jié)果

圖2 常規(guī)編碼SVM測試集單方造價預(yù)測結(jié)果
2.2.2 獨熱指標(biāo)(One-Hot Encoding)編碼方式。又稱一位有效編碼,其方法是使用N位狀態(tài)寄存器來對N個狀態(tài)進(jìn)行編碼,每個狀態(tài)都有它獨立的寄存器位,并且在任意時候,其中只有一位有效。即,只有一位是1,其余都是零值。可以這樣理解,對于每一個特征,如果它有N個可能值,那么經(jīng)過獨熱編碼后,就變成了N個二元特征。
以“建筑外形”為例,有“塔式”“板式”和“異形”3個特征值,因此有3位狀態(tài)編碼,根據(jù)獨熱編碼的編碼規(guī)則,“塔式”編碼為100,“板式”為010,“異形”為001。可以理解為“建筑外形”這個特征變成了“是否塔式”“是否板式”“是否異形”3個二元特征。
如果對上述8個特征按照獨熱編碼方式編碼,特征指標(biāo)將會由原來的19個增加至42個,使計算維度大幅度增加。
經(jīng)測試,訓(xùn)練集預(yù)測精確度為0.780 5,均方誤差為0.0136 93,如圖3所示;測試集預(yù)測精確度為0.599 76,均方誤差為0.0163 59,如圖4所示,結(jié)果均不理想。

圖3 獨熱編碼SVM訓(xùn)練集單方造價預(yù)測結(jié)果

圖4 獨熱編碼SVM測試集單方造價預(yù)測結(jié)果
2.2.3 混合指標(biāo)編碼方式。為了避免單純使用獨熱編碼方式出現(xiàn)維度詛咒的問題,同時考慮定序特征對工程造價影響的遞進(jìn)關(guān)系,對“是否有人防”“抗震烈度”“裝修類別”“外立面裝飾”“室內(nèi)裝飾”5個定序特征,仍然采用按照對工程造價的影響程度從小到大的順序用自然數(shù)進(jìn)行編碼的常規(guī)編碼方式;對“結(jié)構(gòu)類型”“建筑外形”和“基礎(chǔ)類型”3個定類特征,采用獨熱編碼方式,如表3所示。

表3 混合指標(biāo)編碼
以上3種編碼方式的預(yù)測結(jié)果,如表4所示,混合編碼方式訓(xùn)練集和測試集預(yù)測精度均在85%以上,是較為理想的預(yù)測結(jié)果,故在基于SVM算法的工程造價預(yù)測中,根據(jù)特征的類型和對工程造價的影響方式,采用不同的編碼方式更為可行。

表4 結(jié)果對比

圖5 混合編碼SVM訓(xùn)練集單方造價預(yù)測結(jié)果

圖6 混合編碼SVM測試集單方造價預(yù)測結(jié)果
本文通過分析住宅工程的特征指標(biāo)對工程造價的影響方式,對特征指標(biāo)進(jìn)行分類,提出了針對不同類型特征,進(jìn)行不同方式的量化和編碼的基本思路,對連續(xù)型特征采用特征縮放的方式,進(jìn)行歸一化處理是常用的方式;對類別型特征,采用獨熱編碼的方式,可以消除自然數(shù)編碼人為給特征賦予數(shù)量差異的問題,但同時會增加模型算法的計算維度,導(dǎo)致精度下降。因此,對類別型特征進(jìn)一步細(xì)分為定類特征和定序特征,定類特征對工程造價的影響是復(fù)雜多元的,各特征值與工程造價的影響沒有明顯的相關(guān)關(guān)系,因此采用獨熱編碼,比較合理,如基礎(chǔ)類型、結(jié)構(gòu)類型和建筑外形3個特征;但有些類別型特征,如“是否有人防”“抗震烈度”“裝修類別”“外立面裝飾”“室內(nèi)裝飾”等,其特征值與工程造價存在一定的相關(guān)關(guān)系,因此,按照對工程造價的影響程度,按照自然數(shù)從小到大的順序進(jìn)行常規(guī)編碼量化,是合理的。
因此,在利用SVM等數(shù)據(jù)挖掘算法進(jìn)行工程造價預(yù)測中,深入分析特征指標(biāo)對工程造價的影響方式和影響程度,采用不同的編碼方式,可以獲得較好的預(yù)測結(jié)果。