孫許可
(中國(guó)人民武裝警察部隊(duì)士官學(xué)校,浙江 杭州 311400)
新冠肺炎(COVID-19)疫情已成為國(guó)際關(guān)注的突發(fā)公共衛(wèi)生事件,COVID-19 呼吸系統(tǒng)疾病的病毒株是一種名為嚴(yán)重急性呼吸系統(tǒng)綜合征冠狀病毒2(又稱SARS-CoV-2)引起的。這種冠狀病毒病具有極強(qiáng)的傳染性。自最初確認(rèn)以來(lái),盡管受到嚴(yán)格控制,但仍已成為全球流行病,對(duì)世界衛(wèi)生和經(jīng)濟(jì)發(fā)展構(gòu)成了巨大的威脅和挑戰(zhàn)。目前,該疾病已蔓延至全球100 多個(gè)國(guó)家。
至2020年6月16日,全球共報(bào)告8 044 683 例COVID-19 病例,死亡437 131 例,治愈3 883 243 例,總病死率為5.43%,其中,美國(guó)、巴西、俄羅斯、印度和英國(guó)是世界上感染人數(shù)最多的5 個(gè)國(guó)家。COVID-19 表現(xiàn)出非線性和復(fù)雜的性質(zhì),除了涉及傳播的眾多已知和未知變量外,不同地緣政治區(qū)域的人口行為的復(fù)雜性和遏制策略的差異極大地增加了模型的不確定性。
因此,建立基于XGBoost 的疫情預(yù)測(cè)模型,使用Jupyter 軟件進(jìn)行學(xué)習(xí)和訓(xùn)練,對(duì)2020年1月23日到3月1日全國(guó)和湖北的累積確診病例數(shù)、累積死亡病例數(shù)、累積治愈病例數(shù)、累積正在治療病例數(shù)進(jìn)行分析、建模,進(jìn)一步洞悉新冠肺炎疫情發(fā)展規(guī)律,為防控新冠疫情提供參考。
該算法的建模思路:給出一個(gè)泛化的目標(biāo)函數(shù)的定義,在每一輪的迭代中找到一個(gè)合適的回歸樹(shù)去擬合上次預(yù)測(cè)的殘差,最小化目標(biāo)函數(shù),使估算值逼近真實(shí)值,如圖1所示。
圖1 XGBoost 原理
例如,數(shù)據(jù)([Δ,Δ,],SOH),([Δ,Δ,],SOH)…([Δ UΔ T,],SOH),=1,2,…,。其中Δ U,Δ T,,SOH分別表示第i 組數(shù)據(jù)對(duì)應(yīng)的電壓差、溫度差、平均電壓以及健康狀態(tài)。
在本文中,我們定義樹(shù)f(x)如下:
其中,表示每棵樹(shù)的結(jié)構(gòu),它將使葉子節(jié)點(diǎn)與每個(gè)樣本一一對(duì)應(yīng),是樹(shù)中葉子節(jié)點(diǎn)的個(gè)數(shù)。每個(gè)f對(duì)應(yīng)于一個(gè)獨(dú)立的樹(shù)結(jié)構(gòu)和葉子權(quán)重。
將樹(shù)的復(fù)雜度(f)定義為:
為葉子個(gè)數(shù),w表示第個(gè)葉子的權(quán)重。
將目標(biāo)函數(shù)定義為:
將目標(biāo)函數(shù)進(jìn)行展開(kāi),為:
新的目標(biāo)函數(shù)可以定義為:
定義每棵樹(shù)的分裂節(jié)點(diǎn)的候選特征集合為I,I={|(Δ U,Δ T,Δ)=}。
計(jì)算出最優(yōu)權(quán)重 和最佳的目標(biāo)函數(shù)解obj:
如圖2所示,本文所提出的方法主要分為兩個(gè)部分:特征選擇、XGBoost 估算。首先,從數(shù)據(jù)集里面提取特征輸入,將累積治愈病例數(shù)、累積死亡病例數(shù)、累積正在治愈病例數(shù)作為特征輸入,然后,利用XGBoost 算法實(shí)現(xiàn)對(duì)累積確診病例數(shù)的估算,進(jìn)一步提高累積確診病例數(shù)的估算精度。
圖2 XGBoost 模型構(gòu)建
本次實(shí)驗(yàn)所使用的數(shù)據(jù)是該網(wǎng)站數(shù)據(jù)是從國(guó)家衛(wèi)生健康委員會(huì)網(wǎng)站整理成CSV 格式得到,該網(wǎng)站為:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml。該數(shù)據(jù)包括2020年1月23日到3月1日國(guó)家衛(wèi)生健健委員會(huì)公布的全國(guó)和湖北的累積確診病例數(shù)、累積死亡病例數(shù)、累積治愈病例數(shù)、累積正在治愈病例數(shù),該數(shù)據(jù)無(wú)缺失值。
全國(guó)和湖北的累積確診病例數(shù)、累積死亡病例數(shù)、累積治愈病例數(shù)、累積正在治愈病例數(shù),如圖3所示。
圖3 數(shù)據(jù)分析
為了驗(yàn)證XGBoost 算法在COVID-19 估算上的普遍性,將學(xué)習(xí)率設(shè)置為0.2,最小葉子權(quán)重設(shè)置為1,樹(shù)的深度設(shè)置為3(實(shí)驗(yàn)結(jié)果表明該模型收斂),并進(jìn)行了兩組實(shí)驗(yàn):一組是將全國(guó)疫情數(shù)據(jù)作為模型的訓(xùn)練集,用于模型的訓(xùn)練,將湖北疫情數(shù)據(jù)作為測(cè)試集,用于測(cè)試模型的性能;另一組將湖北疫情數(shù)據(jù)作為模型的訓(xùn)練集,用于模型的訓(xùn)練,并將湖北疫情數(shù)據(jù)作為測(cè)試集,用于測(cè)試模型的性能。
(1)平均絕對(duì)誤差(MAE)
(2)均方根百分比誤差(RMSE)
(3)最大估算誤差(Maximum Error)
三項(xiàng)技術(shù)指標(biāo)(MAE、RMSE、Maximum Error)的值越低,證明模型擬合的結(jié)果越好。
為了驗(yàn)證基于XGBoost 算法的COVID-19 估算方法的準(zhǔn)確性,將預(yù)測(cè)結(jié)果與隨機(jī)森林、線性回歸、KNN、SVM的預(yù)測(cè)結(jié)果進(jìn)行比較。圖4和圖5顯示了在全國(guó)疫情數(shù)據(jù)和湖北疫情數(shù)據(jù)上的累積確診病例的預(yù)測(cè)結(jié)果和預(yù)測(cè)誤差。
圖4 預(yù)測(cè)結(jié)果對(duì)比
圖5 預(yù)測(cè)誤差對(duì)比
如圖4所示,從預(yù)測(cè)結(jié)果上看:無(wú)論是在全國(guó)疫情數(shù)據(jù)上還是在湖北疫情數(shù)據(jù)上,XGBoost 比其他四種回歸算法在估算值上更加接近真實(shí)值,估算精度更高。
如圖5所示,從產(chǎn)生的殘差上看:無(wú)論是在全國(guó)疫情數(shù)據(jù)上還是在湖北疫情數(shù)據(jù)上,其他四種回歸算法所產(chǎn)生的殘差曲線波動(dòng)范圍較大,而XGBoost 的殘差曲線在0 附近上下波動(dòng)。
從表1中可以看出,在全國(guó)疫情數(shù)據(jù)或湖北疫情數(shù)據(jù)上,三個(gè)技術(shù)指標(biāo)中的XGBoost 值均低于其他四種算法的值,XGBoost 的性能均優(yōu)于其他四種算法。
可視化表1中的MAE、RMSE、Maximum Error 數(shù)據(jù),如圖6所示。總之,無(wú)論在全國(guó)疫情數(shù)據(jù)還是湖北疫情數(shù)據(jù)上,XGBoost 具有更高的估算精度,在三個(gè)技術(shù)指標(biāo)中,XGBoost 均優(yōu)于其他四種算法。
表1 全國(guó)疫情、湖北疫情數(shù)據(jù)集預(yù)測(cè)誤差對(duì)比
圖6 誤差可視化對(duì)比
特征重要性分析如圖7所示。其中,貢獻(xiàn)最大是累積治愈病例數(shù),其次是累積死亡病例數(shù),而累積正在治愈病例數(shù)最小。因此,在估算過(guò)程中,可以根據(jù)特征重要性等級(jí),增加或減少某個(gè)特征比重,提高特征數(shù)據(jù)準(zhǔn)確性,來(lái)進(jìn)一步提高估算精度。
圖7 特征重要性
利用Jupyter 軟件對(duì)歷史數(shù)據(jù)進(jìn)行學(xué)習(xí)和訓(xùn)練,建立新冠肺炎病例XGBoost 預(yù)測(cè)模型,將累積治愈病例數(shù)、累積死亡病例數(shù)、累積正在治愈病例數(shù)作為特征輸入,對(duì)2020年1月23日到3月1日全國(guó)和湖北的累積確診病例數(shù)進(jìn)行預(yù)測(cè),將其預(yù)測(cè)結(jié)果與其他4 種預(yù)測(cè)模型進(jìn)行比較,實(shí)驗(yàn)結(jié)果表明:與線性回歸模型、隨機(jī)森林模型、支持向量機(jī)模型、KNN 模型等四種預(yù)測(cè)模型相比,采用XGBoost 預(yù)測(cè)模型預(yù)測(cè)的累積確診病例數(shù)更接近實(shí)際值,其平均絕對(duì)誤差和均方根誤差以及最大誤差這三項(xiàng)技術(shù)指標(biāo)均最小,預(yù)測(cè)精度最高,并且分析得出特征重要性等級(jí),其中,貢獻(xiàn)最大是累積治愈病例數(shù),這為后期進(jìn)一步提高估算精度指明方向。