戴彩艷 李新霞 丁有偉 何菊 胡孔法
(南京中醫(yī)藥大學人工智能與信息技術學院 江蘇省南京市 210000)
近年來,隨著氣候的變化,出現(xiàn)了不同種類的傳染病,有一些甚至在短短的時間內(nèi),傳播了很大范圍[1]。這使得很多國家和地區(qū)出現(xiàn)醫(yī)療需求和供給極度不平衡,醫(yī)護人員及資料物資短缺,在病患者人數(shù)達到一定數(shù)目的時候,采用了不得不用的措施去應對。造成了很多原本可以獲救的人失去了生命。
傳染病,與海嘯、地震等災難出現(xiàn)后[2,3]再進行災后快速調(diào)度人員、物資進行救援的情況有所不同。原因是一些傳染病傳染速度之快,如果沒有對傳染病的傳播情況及致死率重視起來,那么情況將朝著不可控的發(fā)向發(fā)展。因此對傳播人數(shù)進行提前預測,可以提前對有可能發(fā)生大規(guī)模傳染病的地區(qū)進行預警,以便提前配備醫(yī)護人員和醫(yī)療物資,減少不必要的人員傷亡現(xiàn)象。
數(shù)據(jù)挖掘中的預測技術就是根據(jù)之前出現(xiàn)的一系列情況進行模型訓練,在此技術上對未來有可能發(fā)生的情況進行估計[4,5]。因此本文某地區(qū)1月份到8月份的傳染病人數(shù)變化情況的基礎上進行傳染病傳播人數(shù)預測。以為類型相近的傳染病提供傳播人數(shù)的預測,為政府和人民提供傳染病傳播的理論依據(jù),便于提前布控。
模型訓練中使用的一元線性回歸模型[6,7]和自回歸移動平均模型(ARMA)[8,9]都屬于有監(jiān)督學習,分別對其描述如下:
回歸分析被用來對兩個或者多個變量之間存在的聯(lián)系通過方程進行模擬。會將一些已經(jīng)出現(xiàn)的數(shù)據(jù)作為模型訓練的輸入,對應還有其輸出;可以抽取原數(shù)據(jù)集中的部分數(shù)據(jù)(未參與訓練的數(shù)據(jù))對模型的準確性進行檢驗。當輸入的數(shù)據(jù)為一個時,就稱作一元線性回歸;而輸入的數(shù)據(jù)超過一個時,則稱作多元線性回歸。
其中一元線性回歸的方程表示如下:
當參數(shù)訓練好之后,這個方程就會對應一條直線,這條直線被稱為回歸線。
其中θ0為該回歸線的斜率,b 對應該回歸線的截距。
自回歸移動平均模型(ARMA,auto regression moving average model)結合了AR 模型(auto regression model)、MA 模型(moving average model),通常在擬合平穩(wěn)時間序列時使用。
通常包含兩個參數(shù),分別是自回歸階數(shù)p 以及平均移動階數(shù)q。其對應的方程如下:
圖2:4月1日之后新增傳染人數(shù)走勢圖
其中,θ1,θ2,…,θp對應的是自回歸系數(shù),而μ1,μ2,…,μp對應的是移動平均系數(shù),都是模型的待估參數(shù)。
一元線性回歸和自回歸移動平均模型都屬于回歸模型,在具體應用中預測性能有所不同。
對訓練數(shù)據(jù)集所采用的兩種不同模型的使用過程描述如下:
使用一元線性回歸的過程描述如下:
(1)確定訓練集和測試集的輸入及輸出;
(2)根據(jù)訓練集進行模型的訓練,訓練過程中,使用到的代價函數(shù)如下:
其中y 和fθ(x)分別對應的是輸出的真實值和預測值。
使用最小二乘法求出取得最小的代價函數(shù)時,對應的參數(shù)。
(3)將測試集帶入訓練出的模型,比較真實值和預測值之間的差異,以衡量模型的性能。
表1:使用一元線性回歸對應的部分真實數(shù)據(jù)與預測數(shù)據(jù)的誤差及誤差比例
表2:Error 值隨著參數(shù)變化的情況表
表3:測試集中的部分真實數(shù)據(jù)與預測數(shù)據(jù)的誤差及誤差比例
使用自回歸移動平均模型的過程描述如下:
3.2.1 數(shù)據(jù)選取
用觀測、調(diào)查、統(tǒng)計、抽樣等方法取得被觀測系統(tǒng)時間序列動態(tài)數(shù)據(jù)
3.2.2 參數(shù)訓練
對其中涉及到的參數(shù)進行訓練,選擇最優(yōu)參數(shù)。
3.2.3 測試及性能比較
根據(jù)訓練的模型,輸入測試集進行測試,并對模型的性能進行評價。
可以按照上述過程對數(shù)據(jù)集中選取出的有效數(shù)據(jù)進行模型訓練。訓練過程中關鍵的是模型參數(shù)的選取。
實驗采用的是某地區(qū)公開的傳染病傳播人數(shù)的數(shù)據(jù),可以從https://pan.baidu.com/s/129j6iY6s5lKyeWJjBvKLJw 下載到。包含的數(shù)據(jù)時間節(jié)點是從2020年1月22日到2020年8月29日。在Window10 環(huán)境下,采用python 3.7 編程實現(xiàn)。
首先查看數(shù)據(jù)集中新增傳染人數(shù)的變化趨勢,讀取到的數(shù)據(jù)集可圖示如圖1 和圖2所示。
從圖中可以看出最開始的一個多月時間內(nèi),新增傳染人數(shù)還未增加很多,原因在于政府未重視或傳染病傳播情況不明顯等,數(shù)據(jù)在預測傳播人數(shù)時所起作用不大,因此提取4月1日之后的數(shù)據(jù)作為研究對象。
將最后的5 天數(shù)據(jù)作為測試數(shù)據(jù),其他的作為訓練數(shù)據(jù)。分別使用一元線性回歸和ARMA 模型進行預測這5 天該傳染病傳播的人數(shù)。
訓練集中的數(shù)據(jù)x 選取的是數(shù)據(jù)集中對應的真實日期,而y 選取的是數(shù)據(jù)集中的positiveIncrease 列(即增加的檢查結果為陽性的人數(shù))??梢缘玫饺绫? 預測結果。
圖3:預測值和真實值之間的誤差
圖4:真實值與預測值的比較情況圖
4.4.1 指定一組參數(shù)進行訓練
定義模型為ARMA 并開始訓練,設置參數(shù)order=(2,0,0),該參數(shù)與模型的識別問題和定階問題有關,包括的三個參數(shù)分別對應p,q,d 三個參數(shù),其中p 為自回歸階數(shù),平均移動階數(shù)為q,而d 為差分的階數(shù)。接下來使用訓練好的模型預測并計算預測值和真實值之間的誤差。該誤差計算公式如下:
顯示結果如圖3所示。
4.4.2 遍歷多組參數(shù),尋找最優(yōu)參數(shù)
設置order=(p,d,q),其中p、q 的取值范圍在5 以內(nèi),d 的取值范圍在2 以內(nèi)。隨著參數(shù)的變化,error 的值也不斷發(fā)生著改變。部分變化趨勢情況如表2所示。
通過error 值隨著參數(shù)變化的情況,最終選取order=(4,1,0)。在此基礎上,進行將測試集帶入模型開始進一步訓練。
4.4.3 預測并測試結果
當選取好最優(yōu)參數(shù)之后,即對應的error=4042.9434731337496 ≈4042.9435。在這個前提下,得到的真實值與預測值的比較情況如圖4所示。
具體測試集中的部分真實數(shù)據(jù)與預測數(shù)據(jù)的誤差及誤差比例如表3所示。
通過上述實驗可以發(fā)現(xiàn),自回歸移動平均模型比一元線性回歸模型在該傳染病傳播人數(shù)預測中的準確率要高。在預測過程中,其中2020年8月25日誤差最小,只有1.1354%。原因在于,自回歸移動平均模型中各影響因素在較短的時間內(nèi),預測指標的相對變化規(guī)律是近乎相同的,所以基于這樣的預測指標,對同樣的數(shù)據(jù)進行預測可以在很大程度上確保預測結果的準確性。而且自回歸移動平均預測模型不直接考慮其余相關元素的變化情況,預測手段清晰明了。因此,自回歸移動平均模型適用于指標較少的數(shù)據(jù)集的預測,這也是在預測本數(shù)據(jù)集中傳染病傳播人數(shù)時,自回歸移動平均模型比一元線性回歸算法準確率高的原因。
本文主要使用一元線性回歸及自回歸移動平均模型ARMA 對某傳染病傳播人數(shù)進行預測,通過實驗可以發(fā)現(xiàn),兩種算法都可以進行預測。但是從預測值與真實值的誤差來看,ARMA 模型的性能較好,其中有一天的誤差率接近1%。這為接下來的傳染病傳播人數(shù)的預測提供了有力的依據(jù)。
下一步的目標是將本方法進行可視化界面設計,便于更多的人更好的了解未來傳染病的傳播情況,未雨綢繆,為可能發(fā)生的情況做好充分準備。