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

表1 定類特征編碼

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

圖1 常規編碼SVM訓練集單方造價預測結果

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

圖3 獨熱編碼SVM訓練集單方造價預測結果

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

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

表4 結果對比

圖5 混合編碼SVM訓練集單方造價預測結果

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