胡 畔,肖 約,汪 芳,唐文澤,周 華
1. 武漢理工大學(xué)土木工程學(xué)院,湖北 武漢 430070;
2. 華杰工程咨詢(xún)有限公司中南分公司,湖北 武漢 430000;
3. 武漢華夏理工學(xué)院建筑與土木工程學(xué)院,湖北 武漢 430223;
4. 武漢安宇工程建設(shè)管理有限公司,湖北 武漢 430040
混凝土由不同的成分組成,這些成分隨機(jī)分布在整個(gè)混凝土基體,如此復(fù)雜的系統(tǒng)使得準(zhǔn)確預(yù)測(cè)混凝土抗壓強(qiáng)度成為巨大的挑戰(zhàn)。通常獲取混凝土抗壓強(qiáng)度最直接的方法是通過(guò)物理試驗(yàn),但這種方法相對(duì)耗時(shí)、繁瑣且昂貴。有學(xué)者還提出了一些經(jīng)驗(yàn)回歸方法來(lái)預(yù)測(cè)混凝土中不同組分的給定設(shè)計(jì)配合比的混凝土抗壓強(qiáng)度,但混凝土配合比與抗壓強(qiáng)度呈現(xiàn)出非線(xiàn)性關(guān)系,難以得到準(zhǔn)確的回歸表達(dá)式[1]。近些年,許多學(xué)者開(kāi)始使用機(jī)器學(xué)習(xí)來(lái)預(yù)測(cè)混凝土抗壓強(qiáng)度。Pham 等[2]通過(guò)最小二乘支持向量回歸(least square support vector regression,LS-SVR)與螢火蟲(chóng)算法(firefly algorithm,F(xiàn)A)耦合方法來(lái)預(yù)測(cè)高性能混凝土抗壓強(qiáng)度。Bui 等[3]將優(yōu)化改進(jìn)后的FA 算法與人工神經(jīng)網(wǎng)絡(luò)(artificial neural network,ANN)結(jié)合來(lái)設(shè)置權(quán)值和閾值。Tien Bui等[4]比較了基于鯨魚(yú)(whale optimization algorithm,WOA)、蜻蜓(dragonfly algorithm,DA)與螞蟻(ant colony optimization,ACO)覓食行為的有效元啟發(fā)式技術(shù)在預(yù)測(cè)28 d混凝土抗壓強(qiáng)度方面的效率優(yōu)化,這些算法與ANN 耦合,以?xún)?yōu)化權(quán)值和閾值。Duan 等[5]測(cè)試了各種機(jī)器學(xué)習(xí)工具和自適應(yīng)模糊神經(jīng)網(wǎng)絡(luò)(adaptive neuro fuzzy inference system,ANFIS)與獨(dú)立成分分析(independent component analysis,ICA)耦合,用于預(yù)測(cè)再生骨料混凝土抗壓強(qiáng)度。
在實(shí)際施工過(guò)程中,由于不同操作者的主觀判斷和操作方式不同,加上現(xiàn)場(chǎng)環(huán)境條件的變化,實(shí)測(cè)的混凝土28 d 抗壓強(qiáng)度會(huì)改變。能否準(zhǔn)確預(yù)測(cè)混凝土的28 d 抗壓強(qiáng)度,是保證正常施工速度和減少返工的重要前提。
基于此,本文提出一種基于自適應(yīng)增強(qiáng)(adaptive boosting,AdaBoost)算法的混凝土抗壓強(qiáng)度預(yù)測(cè)模型,收集1 030 組混凝土抗壓強(qiáng)度試驗(yàn)數(shù)據(jù),以混合物含量與養(yǎng)護(hù)時(shí)間為輸入數(shù)據(jù),以抗壓強(qiáng)度為輸出數(shù)據(jù)。然后介紹AdaBoost的基本數(shù)學(xué)背景和相應(yīng)的算法實(shí)現(xiàn)。利用收集到的數(shù)據(jù)訓(xùn)練基于AdaBoost 算法模型,得到了一個(gè)可用于預(yù)測(cè)抗壓強(qiáng)度值的強(qiáng)學(xué)習(xí)器。采用10 折交叉驗(yàn)證方法對(duì)所開(kāi)發(fā)的模型進(jìn)行驗(yàn)證,并使用包含103 組樣本的數(shù)據(jù)集來(lái)證明模型的泛化性。AdaBoost 算法與獨(dú)立機(jī)器學(xué)習(xí)ANN 和支持向量機(jī)(support vector machine,SVM)[6]模型進(jìn)行性能對(duì)比,表明了集成學(xué)習(xí)算法的優(yōu)越性。最后討論了AdaBoost算法模型中一些關(guān)鍵因素(如訓(xùn)練數(shù)據(jù)的數(shù)量、弱學(xué)習(xí)者的類(lèi)型以及輸入變量的數(shù)量)的影響。
建立預(yù)測(cè)模型需要大量關(guān)于混凝土抗壓強(qiáng)度試驗(yàn)數(shù)據(jù)。本研究采用由Yeh[7]收集的1 030 份混凝土抗壓強(qiáng)度試驗(yàn),它包含了1 030×9 組數(shù)據(jù),前7 組數(shù)據(jù)為每立方混凝土內(nèi)各種原材料(水泥、高爐礦渣粉、粉煤灰、水、減水劑、粗骨料和細(xì)骨料)的配比,第8 組為混凝土養(yǎng)護(hù)時(shí)間,第9 組為混凝土抗壓強(qiáng)度。表1 給出了所使用的數(shù)據(jù)集的變量約束因素。
表1 混凝土抗壓強(qiáng)度變量約束因素Tab.1 Constraining factors of concrete compressive strength variables
Freund 和Schapier[8]在20 世紀(jì)90 年代提出了AdaBoost 算法。它是利用初始的訓(xùn)練數(shù)據(jù)生成一個(gè)弱學(xué)習(xí)者,然后根據(jù)下一輪弱學(xué)習(xí)者訓(xùn)練的預(yù)測(cè)性能調(diào)整訓(xùn)練數(shù)據(jù)的分布。
采用AdaBoost 算法預(yù)測(cè)混凝土抗壓強(qiáng)度,其步驟如下:
(1)初始訓(xùn)練數(shù)據(jù)集D={(x1,y1),…,(xn,yn)},其中:n表示樣本的數(shù)量;xi(i= 1,2,3,…,n)表示一條數(shù)據(jù)樣本;yi(i= 1,2,3,…,n)是對(duì)應(yīng)實(shí)際值。
(2)初始化n個(gè)樣本的權(quán)值,首先假設(shè)訓(xùn)練集樣本權(quán)重分布Dk(i)為均勻分布;Dk(i)= 1/n,Dk(i)表示在第k次迭代中訓(xùn)練集樣本的權(quán)值;n為樣本的數(shù)量;最大迭代次數(shù)為K。
(3)在加權(quán)樣本下訓(xùn)練弱預(yù)測(cè)器hk(x) ,并計(jì)算其平均誤差
(5)返回步驟(2),進(jìn)行下一次迭代,直到迭代次數(shù)達(dá)到K后結(jié)束。
AdaBoost算法的實(shí)現(xiàn)[9]有4 個(gè)階段:①實(shí)驗(yàn)數(shù)據(jù)的收集;②強(qiáng)學(xué)習(xí)者的生成;③學(xué)習(xí)者的測(cè)試或驗(yàn)證;④學(xué)習(xí)者在工程問(wèn)題中的應(yīng)用。該程序的流程圖如圖1 所示。
圖1 AdaBoost算法流程圖Fig.1 AdaBoost algorithm flow chart
AdaBoost 算法參數(shù)包括2 個(gè)層次:第一層次是AdaBoost 框架;另一層次是弱學(xué)習(xí)者即回歸樹(shù)(classification and regression tree,CART)[10]的重要參數(shù)。根據(jù)試錯(cuò)法[11]確定參數(shù)值的范圍;然后采用網(wǎng)格搜索方法找到特定的值,即從初始值范圍內(nèi)定義一個(gè)參數(shù)網(wǎng)格,使用交叉驗(yàn)證對(duì)模型進(jìn)行迭代訓(xùn)練和測(cè)試,以找到性能最好的參數(shù)集。AdaBoost算法參數(shù)設(shè)置如表2 所示。
表2 AdaBoost算法參數(shù)設(shè)置Tab.2 AdaBoost algorithm parameter settings
為了建立AdaBoost 算法模型,將收集到的試驗(yàn)數(shù)據(jù)分為訓(xùn)練集和測(cè)試集[12]。訓(xùn)練集用于產(chǎn)生最終的強(qiáng)學(xué)習(xí)者,測(cè)試集用于顯示模型預(yù)測(cè)抗壓強(qiáng)度的準(zhǔn)確性。通常在總試驗(yàn)數(shù)據(jù)集中訓(xùn)練集與測(cè)試集的比例為9∶1。
為了更好評(píng)估AdaBoost 算法性能,引入4 個(gè)指標(biāo)[13],分別定義為平均絕對(duì)誤差(mean absolute error,MAE)、平均絕對(duì)百分比誤差(mean absolute percentage error,MAPE)、決定系數(shù)(coefficient of determination,R2)、均方根誤差(root mean square error,RMSE),評(píng)估指標(biāo)的計(jì)算公式見(jiàn)式(1)~式(4):
式中:yi為第i(i= 1,2,3,…,n)個(gè)混凝土抗壓強(qiáng)度實(shí)際值;y′i為第i(i= 1,2,3,…,n)個(gè)混凝土抗壓強(qiáng)度預(yù)測(cè)值;n為混凝土立方體立塊數(shù)目。其中,R2代表預(yù)測(cè)值與真實(shí)值之間的線(xiàn)性相關(guān)程度,R2越接近1 則表示預(yù)測(cè)值與真實(shí)值越接近,模型性能越好。RMSE 表示預(yù)測(cè)值與測(cè)試值之間的偏差。MAE 反映了預(yù)測(cè)誤差的實(shí)際情況。
隨機(jī)選擇90%的數(shù)據(jù)用于訓(xùn)練集,其余10%的數(shù)據(jù)用于測(cè)試集,圖2 顯示了訓(xùn)練集和測(cè)試集的預(yù)測(cè)抗壓強(qiáng)度值和測(cè)試抗壓強(qiáng)度值之間的線(xiàn)性關(guān)系。特別是對(duì)于訓(xùn)練集,散點(diǎn)幾乎與擬合曲線(xiàn)重合(即預(yù)測(cè)值等于測(cè)試值);而對(duì)于測(cè)試集,則存在少許離散,說(shuō)明預(yù)測(cè)略有偏差。
圖2 測(cè)試和預(yù)測(cè)的抗壓強(qiáng)度之間的線(xiàn)性關(guān)系Fig.2 Linear relationships between tested and predicted compressive strength
表3 列出了AdaBoost 算法模型計(jì)算9∶1 形式的訓(xùn)練集和測(cè)試集的4 個(gè)評(píng)價(jià)指標(biāo)。由表3 可知,該算法模型在預(yù)測(cè)精確度方面表現(xiàn)優(yōu)良。對(duì)于訓(xùn)練數(shù)據(jù)集,R2=0.997,即預(yù)測(cè)值與測(cè)試值幾乎相同;MAE 為1.25 MPa,MAPE 僅為5.54%,表明AdaBoost 算法模型的訓(xùn)練數(shù)據(jù)具有非常強(qiáng)的學(xué)習(xí)能力。對(duì)于測(cè)試數(shù)據(jù),R2=0.982,非常接近1,MAPE 為6.78%,從工程實(shí)踐的角度分析,誤差很低,說(shuō)明AdaBoost算法模型具有非常高的精度,可以來(lái)預(yù)測(cè)混凝土抗壓強(qiáng)度。
表3 數(shù)據(jù)集以9∶1 形式的評(píng)價(jià)指標(biāo)分析Tab.3 Dataset performance analysis in 9∶1 form
為了進(jìn)一步證明AdaBoost 算法模型的泛化和可靠性性能,論文采用了十折交叉驗(yàn)證方法[14]。它將實(shí)驗(yàn)數(shù)據(jù)樣本等分為10 個(gè)子集,然后使用9個(gè)子集來(lái)建立強(qiáng)學(xué)習(xí)器,剩下1 個(gè)子集來(lái)驗(yàn)證模型。在連續(xù)重復(fù)此操作10 次后,可以得到10 次的平均精度。圖3 顯示了十折交叉驗(yàn)證中每折的4個(gè)評(píng)估指標(biāo)值。
圖3 10 折交叉驗(yàn)證結(jié)果Fig.3 Results of 10-fold cross-validation
由圖3 可以看出,10 折的結(jié)果有一定的波動(dòng),R2最小值為0.890,最大值為0.978;MAPE 最小值為7.96%,最大值為15.27%,這都反映了十折交叉驗(yàn)證法具有較高的準(zhǔn)確率。
養(yǎng)護(hù)時(shí)間是AdaBoost 算法模型中的重要影響因素之一。為了證明這一特性,選擇了3組混凝土配合比。相關(guān)信息見(jiàn)表4,其中養(yǎng)護(hù)時(shí)間設(shè)置為1~365 d。
表4 混凝土配合比的養(yǎng)護(hù)時(shí)間變化分析Tab.4 Time dependent analysis of concrete mix proportion
圖4 顯示了AdaBoost 算法模型得到的抗壓強(qiáng)度隨養(yǎng)護(hù)時(shí)間變化結(jié)果預(yù)測(cè)。測(cè)試數(shù)據(jù)點(diǎn)幾乎都位于時(shí)間變化曲線(xiàn)上。3 組曲線(xiàn)具有相似的趨勢(shì),即混凝土抗壓強(qiáng)度隨著養(yǎng)護(hù)時(shí)間的增加而增加,60 d 前增加較快,60 d 后緩慢增加,120 d 左右趨于穩(wěn)定。由此說(shuō)明AdaBoost算法模型在沒(méi)有常規(guī)物理試驗(yàn)的情況下可以有效預(yù)測(cè)混凝土強(qiáng)度隨時(shí)間變化的趨勢(shì)。
圖4 混凝土抗壓強(qiáng)度的時(shí)間相關(guān)預(yù)測(cè)結(jié)果Fig.4 Results of time-dependent prediction of concrete compressive strength
為了進(jìn)一步證明AdaBoost 算法模型的泛化性,文章使用了新數(shù)據(jù)集作為驗(yàn)證。該數(shù)據(jù)集包括103 份樣品,每份樣品有7 種成分,即水泥、水、粗骨料、細(xì)骨料、減水劑、高爐礦渣粉、粉煤灰。AdaBoost 算法模型對(duì)新數(shù)據(jù)集的預(yù)測(cè)結(jié)果如圖5所示。由圖5 可以看出,所提出的模型同樣對(duì)新數(shù)據(jù)集產(chǎn)生了良好的預(yù)測(cè)。預(yù)測(cè)值與測(cè)試值之間的關(guān)系非常接近y=x函數(shù)線(xiàn)。這些都表明AdaBoost算法模型在預(yù)測(cè)混凝土抗壓強(qiáng)度方面確實(shí)具有很高的準(zhǔn)確性和泛化性能。
圖5 新數(shù)據(jù)集的預(yù)測(cè)結(jié)果Fig.5 Prediction results for new dataset
為了更好驗(yàn)證AdaBoost 算法模型的能力,論文使用了被廣泛采用的獨(dú)立學(xué)習(xí)方法即ANN 和SVM,預(yù)測(cè)值與測(cè)試值如圖6 所示。
圖6 不同機(jī)器學(xué)習(xí)技術(shù)的結(jié)果Fig.6 Results of different machine learning techniques
由圖6 可以看出,AdaBoost 算法模型預(yù)測(cè)的結(jié)果顯示出更線(xiàn)性的關(guān)系,說(shuō)明它的預(yù)測(cè)更接近測(cè)試值。原因可能是SVM 或ANN 是獨(dú)立學(xué)習(xí)算法,而AdaBoost是集成學(xué)習(xí)算法,它集成了由個(gè)體學(xué)習(xí)算法生成的幾個(gè)弱學(xué)習(xí)者,表現(xiàn)良好的弱學(xué)習(xí)者將獲得較高的權(quán)值,而弱學(xué)習(xí)者表現(xiàn)不佳的權(quán)值會(huì)降低。因此,它可以提供更準(zhǔn)確的預(yù)測(cè)。
模型的性能一定程度上取決于訓(xùn)練數(shù)據(jù)數(shù)量?;诖?,論文考慮3 種情況,即總數(shù)據(jù)分別按照9∶1、8.5∶1.5 和8∶2 的比例進(jìn)行訓(xùn)練和測(cè)試,結(jié)果如表5 所示。
表5 不同的訓(xùn)練數(shù)據(jù)集數(shù)量結(jié)果Tab.5 Results for different numbers of training datasets
表5 結(jié)果說(shuō)明這3 種情況都得到了非常高的準(zhǔn)確率。對(duì)于訓(xùn)練數(shù)據(jù)集,無(wú)論是9∶1、8.5∶1.5 還是8∶2,三者的R2都接近1.0,即預(yù)測(cè)值與測(cè)試值之間的關(guān)系是線(xiàn)性的。9∶1 和8.5∶1.5 的RMSE 約為1.52 MPa,而8∶2 的RMSE 為1.55 MPa,說(shuō)明隨著訓(xùn)練數(shù)據(jù)量的增加,預(yù)測(cè)偏差會(huì)減小。如果使用超過(guò)85%的總數(shù)據(jù)進(jìn)行訓(xùn)練,MAPE 將降低到5.54%以下,結(jié)論與測(cè)試數(shù)據(jù)集結(jié)果相似。
當(dāng)測(cè)試數(shù)據(jù)從整組的80%增加到90%時(shí),R2將從0.979 增長(zhǎng)到0.982;MAPE 將從7.78%降至6.78%,說(shuō)明預(yù)測(cè)誤差和偏差都呈現(xiàn)減小的趨勢(shì)。
AdaBoost 算法模型的另一個(gè)關(guān)鍵因素是弱學(xué)習(xí)器的選擇。與3 種流行的方法即邏輯回歸分析(logistic regression,LR)、ANN 和SVM,進(jìn)行比較,不同弱學(xué)習(xí)者結(jié)果如圖7 所示。
圖7 不同弱學(xué)習(xí)者的結(jié)果Fig.7 Results for different weak learners
由圖7 可以看出,LR 的評(píng)估指標(biāo)為R2=0.619,RMSE=10.19 MPa和MAPE=31.55%,而對(duì)于CART、ANN 和SVM,最差指標(biāo)是R2=0.960,RMSE=3.30 MPa 和MAPE=8.58%。 而CART、ANN 和SVM 本身已經(jīng)可以預(yù)測(cè)輸入和輸出之間的非線(xiàn)性關(guān)系,因此使用集成方法,可以提高模型性能。
輸入不同變量的組合也是影響因素之一,文章考慮了6 種輸入組合,如表6 所列。組合1 是原始數(shù)據(jù),而組合6 只有4 種輸入即水泥、水、粗骨料和細(xì)骨料。組合2~組合5 逐漸忽略不同的輸入變量觀察影響。
表6 不同輸入變量組合及相應(yīng)的評(píng)估指標(biāo)Tab.6 Combinations of different input variables and their corresponding evaluation indicators
6 種組合的預(yù)測(cè)值與測(cè)試值的結(jié)果如圖8 所示,相應(yīng)的評(píng)估指標(biāo)也列在表6 中??梢钥隙ǖ氖牵M合1 的結(jié)果最好,原因在于它提供了整體信息輸入。組合6 的性能最低,其R2=0.377,RMSE=13.04 MPa 和MAPE=41.30%。模型的準(zhǔn)確性不會(huì)簡(jiǎn)單地隨著輸入變量數(shù)的增加而增加,如組合2~組合5 的結(jié)果。雖然組合2 有7 個(gè)輸入變量,但它的精度最低(R2=0.398,RMSE=12.82 MPa 與MAPE=40.36%),因?yàn)槲纯紤]最重要的變量養(yǎng)護(hù)時(shí)間。作為比較,組合3 也有7 個(gè)輸入變量(忽略水泥),其性能明顯優(yōu)于組合2。組合5 只有5 個(gè)輸入變量,但包含養(yǎng)護(hù)時(shí)間,因此其性能優(yōu)于組合2與組合6。組合4 雖然只有6 個(gè)輸入變量,卻有好的評(píng)估指標(biāo)結(jié)果(組合1 除外)。
圖8 輸入變量數(shù)量的影響Fig.8 Effects of numbers of input variables
總之,養(yǎng)護(hù)時(shí)間和水泥是模型中最重要的輸入變量,用以獲得高精度的預(yù)測(cè)。忽略養(yǎng)護(hù)時(shí)間會(huì)導(dǎo)致預(yù)測(cè)精度急劇下降(R2從0.982 降低至0.398),因?yàn)殡S著養(yǎng)護(hù)時(shí)間增加,水泥繼續(xù)水合,從而提高混凝土抗壓強(qiáng)度;而忽略水泥會(huì)導(dǎo)致精度下降相對(duì)較?。≧2從0.982 降低至0.865),因?yàn)樗嗤ㄟ^(guò)膠結(jié)將混凝土各成分黏結(jié)在一起,黏結(jié)力越大,混凝土抗壓強(qiáng)度越強(qiáng)[15]。忽略一個(gè)甚至兩個(gè)其他約束變量影響不大(R2從0.982降低至0.907)。
通過(guò)對(duì)1 030 組以及新的103 組混凝土實(shí)驗(yàn)數(shù)據(jù)分析,可以得到如下結(jié)論:
(1)AdaBoost 算法模型可以在給定輸入變量的情況下準(zhǔn)確有效地預(yù)測(cè)混凝土的抗壓強(qiáng)度。同時(shí)可以精準(zhǔn)預(yù)測(cè)混凝土在不同養(yǎng)護(hù)時(shí)間下的抗壓強(qiáng)度。
(2)十折交叉驗(yàn)證決定系數(shù)R2的平均值達(dá)到0.952,平均絕對(duì)百分比誤差MAPE 達(dá)到11.39%,說(shuō)明預(yù)測(cè)誤差非常低;新的數(shù)據(jù)集也被用來(lái)證明模型的泛化,結(jié)果表明AdaBoost 算法模型擁有較高的精度。
(3)在全部變量與養(yǎng)護(hù)時(shí)間輸入,抗壓強(qiáng)度輸出條件下,AdaBoost 算法模型與ANN、SVM 等獨(dú)立學(xué)習(xí)算法進(jìn)行了比較,其表現(xiàn)明顯優(yōu)于這些模型。
(4)討論了AdaBoost 算法模型中例如訓(xùn)練數(shù)據(jù)集數(shù)量、弱學(xué)習(xí)器類(lèi)型和輸入變量的數(shù)量等關(guān)鍵因素,發(fā)現(xiàn)使用1 030 的80%試驗(yàn)數(shù)據(jù)集可以獲得可接受的結(jié)果。選擇能夠預(yù)測(cè)輸入和輸出之間非線(xiàn)性關(guān)系的弱學(xué)習(xí)器(例如CART、ANN 和SVM),它們都可以獲得最終強(qiáng)學(xué)習(xí)器的高精度,而CART 可以達(dá)到最佳性能。養(yǎng)護(hù)時(shí)間、水泥含量是最重要的輸入變量,對(duì)最終混凝土抗壓強(qiáng)度預(yù)測(cè)有非常大的影響。