奚杏杏,劉宇紅,張榮芬
(貴州大學(xué)大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽 550025)
隨著人們生活水平的提高,高血壓的患病率和患病人數(shù)都呈持續(xù)攀升的趨勢[1],患病初期,可能不會有明顯的癥狀,但隨著病情的發(fā)展后期可能會引發(fā)冠心病、糖尿病等多種并發(fā)癥[2-3]。
目前對于人體血壓分析預(yù)測的回歸模型主要有Logistic線性回歸[4]、Lasso回歸、神經(jīng)網(wǎng)絡(luò)以及支持向量機(jī)回歸[5]等。Sideris等人[6]利用遞歸的神經(jīng)網(wǎng)絡(luò)模型對人體血壓進(jìn)行預(yù)測,預(yù)測準(zhǔn)確度較高但訓(xùn)練速度過慢,在實(shí)時處理方面性能較差。Hsieh等人[7]通過對脈搏波的傳導(dǎo)時間建立線性回歸模型進(jìn)行血壓預(yù)測,真實(shí)值與預(yù)測值之間的相關(guān)系數(shù)很高,但預(yù)測準(zhǔn)確度較低,尤其是對高壓的預(yù)測仍需進(jìn)一步完善。國內(nèi),朱海龍等人[8]將自回歸移動平均模型與支持向量機(jī)模型相結(jié)合,利用粒子群優(yōu)化算法進(jìn)行參數(shù)尋優(yōu),預(yù)測精度較高,但不能反映各種生理參數(shù)之間的相互關(guān)系。趙谞博等人[9]通過支持向量回歸的血壓預(yù)測算法實(shí)現(xiàn)高壓的預(yù)測準(zhǔn)確率超過53.93%,低壓的預(yù)測準(zhǔn)確率超過75%,雖然相對其他機(jī)器學(xué)習(xí)算法而言體現(xiàn)出很大的優(yōu)勢,但無論在算法改進(jìn)、性能提升方面,還是在有效整合人體生理參數(shù)建立血壓預(yù)測模型等方面,都還有很大的研究空間。
通過3.3節(jié)參數(shù)尋優(yōu)可知核函數(shù)系數(shù)及懲罰因子對于支持向量回歸模型的預(yù)測效果具有相當(dāng)重要的作用,而利用網(wǎng)格搜索與交叉驗(yàn)證相結(jié)合能更加準(zhǔn)確便捷地尋找出最優(yōu)的參數(shù)對。因此,本文在以徑向基函數(shù)作為核函數(shù)[10-11]的基礎(chǔ)上通過網(wǎng)格搜索與交叉驗(yàn)證相結(jié)合的方式提高人體血壓模型的預(yù)測性能。利用支持向量回歸原理,以心率和血氧作為主要研究對象,使用MIMIC-II數(shù)據(jù)庫[12]的數(shù)據(jù),建立心率、血氧與血壓之間的SVR回歸模型,并通過準(zhǔn)確率及均方根誤差這2個評價指標(biāo)進(jìn)行估測。結(jié)果表明對高壓和低壓的預(yù)測準(zhǔn)確率約為71.39%、81.69%,具有一定的高效性和應(yīng)用潛能。
支持向量機(jī)是在分類與回歸分析[13]中用于對數(shù)據(jù)進(jìn)行分析的監(jiān)督式學(xué)習(xí)模型(主要分為訓(xùn)練模型和預(yù)測模型[14]),除了可以進(jìn)行線性分類,還可以進(jìn)行非線性分類[15]。對于線性的支持向量機(jī),主要通過尋找超平面[16]對特征樣本進(jìn)行分類。而對于非線性的支持向量機(jī),需要把數(shù)據(jù)映射到一個維數(shù)比原空間高的新的特征空間中,并在新的特征空間使用線性的支持向量機(jī)進(jìn)行特征分類。為了避免內(nèi)積運(yùn)算計(jì)算量過大,在進(jìn)行特征選擇時,需要通過核函數(shù)在變換空間直接計(jì)算內(nèi)積使其與原空間中的內(nèi)積計(jì)算直接對應(yīng)。
本文使用徑向基函數(shù)作為核函數(shù)[17],采用非線性數(shù)據(jù)。因此需要先通過特征選擇將特征空間x=(HR,SpO2)的非線性數(shù)據(jù)集映射到一個更高維度的新特征空間X=(x1,x2,…,xn),并在這個新的特征空間中使用線性的支持向量機(jī)來構(gòu)建人體生理參數(shù)與血壓之間的非線性映射模型。
已知訓(xùn)練集T={(xi,yi),i=1,2,…,k},滿足xi∈RN,yi∈R,xi、yi為一般情況下支持向量機(jī)的映射關(guān)系,得回歸方程為:
F(x)=WTΦ(x)+b
(1)
其中,W為F中的一個向量,Φ(x)為:
(2)
其中,C為懲罰因子。考慮約束條件,引入拉格朗日算子α、α*、β、β*,將最優(yōu)化問題轉(zhuǎn)化為對偶問題[18],重新規(guī)劃拉格朗日方程:
(3)
(4)
(5)
(6)
(7)
(8)
將上述式子代入J函數(shù)并化簡得到:
(9)
當(dāng)使用核函數(shù)K(xi,xj)時,上式變?yōu)?/p>
(10)
(11)
其中,核函數(shù)K(xi,xj)的表達(dá)式為:
K(xi,xj)=exp (g‖xi-xj‖2)
(12)
式中,g即為核函數(shù)的系數(shù)(gamma)。
交叉驗(yàn)證主要分為K折交叉驗(yàn)證、Holdout驗(yàn)證、留一驗(yàn)證,其目的是為了讓模型評估更加準(zhǔn)確可信。本文使用的是K折交叉驗(yàn)證,所謂K折交叉驗(yàn)證指在訓(xùn)練過程中將訓(xùn)練集劃分為K個小的子集,每次迭代時都將其中的一個子集作為測試集,剩余K-1個子集作為訓(xùn)練集。經(jīng)驗(yàn)證v=10時學(xué)習(xí)效果較好[19],故以10折交叉驗(yàn)證為例簡要介紹其步驟。首先將數(shù)據(jù)集劃分為不相交的10個子集,每次挑選其中1個子集作為測試集,其余9個子集作為訓(xùn)練集對模型進(jìn)行訓(xùn)練得到模型指標(biāo);重復(fù)上述步驟10次使得每個子集都作為一次測試集分別得到10個模型指標(biāo);取10個模型指標(biāo)的平均值作為10折交叉驗(yàn)證最終的模型指標(biāo)。其對應(yīng)的詳解圖如圖1所示。
圖1 交叉驗(yàn)證詳解圖
網(wǎng)格搜索是指在特定的空間范圍內(nèi)將g和C構(gòu)成的參數(shù)空間劃分為若干長短相同的網(wǎng)格,網(wǎng)格中每個點(diǎn)都代表一對參數(shù),依次遍歷網(wǎng)格中的每一個點(diǎn)并計(jì)算其對應(yīng)模型的均方誤差值,最后通過對比找出使得均方誤差值最小的一對參數(shù)即為最優(yōu)參數(shù)對[20]。
準(zhǔn)確率(accuracy)是指對于給定的數(shù)據(jù)集,分類正確的樣本個數(shù)與總的樣本數(shù)的比值,代表模型的整體準(zhǔn)度,數(shù)值越大代表模型越準(zhǔn)確。對于SVR模型其準(zhǔn)確率可以通過表1的混淆矩陣求出。
表1 混淆矩陣
混淆矩陣預(yù)測值正負(fù)真實(shí)值正TPTN負(fù)FPFN
則準(zhǔn)確率為:
(13)
由式(14)的表達(dá)式可知,均方根誤差(RMSE)指預(yù)測值與真實(shí)值之間偏差的平方和比上樣本的總個數(shù)再對其取平方根,因此RMSE可以用來評價預(yù)測值與真實(shí)值之間偏差的大小,并且RMSE值越小代表模型預(yù)測性能越好。
(14)
本文使用LIBSVM工具箱,在GPU的PyCharm環(huán)境下選擇Python編譯器開展實(shí)驗(yàn)。實(shí)驗(yàn)前需先將采集到的數(shù)據(jù)進(jìn)行一系列的預(yù)處理,隨后利用Python編譯器將分類函數(shù)與預(yù)測函數(shù)編譯為PyCharm可識別的文件,通過分析心率、血氧與血壓之間的隱含關(guān)系構(gòu)建訓(xùn)練模型,再根據(jù)網(wǎng)格搜索與交叉驗(yàn)證尋找使系統(tǒng)性能最好的g和C值,并將測試數(shù)據(jù)集輸入到最優(yōu)參數(shù)下的SVR模型中得到相應(yīng)的血壓預(yù)測結(jié)果,最后將本文得到的預(yù)測結(jié)果與使用其他經(jīng)典機(jī)器學(xué)習(xí)算法得到的預(yù)測結(jié)果進(jìn)行對比評估。對應(yīng)的實(shí)驗(yàn)流程圖如圖2所示。
圖2 實(shí)驗(yàn)流程圖
3.2.1 數(shù)據(jù)介紹
本次實(shí)驗(yàn)的數(shù)據(jù)來自MIMIC-II(http://mimic.physionet.org/)數(shù)據(jù)庫。MIMIC-II數(shù)據(jù)庫包含了大量通過監(jiān)測器收集到的人體生理數(shù)據(jù)[21]。本次實(shí)驗(yàn)隨機(jī)抽取了不同性別、不同年齡段、不同監(jiān)測器、不同時間段共33969條特征數(shù)據(jù),其中27030組數(shù)據(jù)用來訓(xùn)練SVR模型,剩余的6939組數(shù)據(jù)則用來對模型進(jìn)行測試。
3.2.2 數(shù)據(jù)預(yù)處理
1)缺失值、異常值處理。在實(shí)際的采集數(shù)據(jù)中,樣本可能會由于采樣率發(fā)生變化、數(shù)據(jù)丟失或者是錄入錯誤等原因,造成一個或多個數(shù)據(jù)的缺失或異常。本文對于少量的缺失值采用平均值進(jìn)行替換,而缺失較多的數(shù)據(jù)則直接刪除。剔除不合理的記錄、有效數(shù)據(jù)長度不足48 h的數(shù)據(jù)、病危病人和數(shù)據(jù)記錄中丟失的數(shù)據(jù)長度超過4 h的記錄以及不同時具有心率、血氧和血壓的病人數(shù)據(jù)。
2)標(biāo)準(zhǔn)化處理。對于采集到的特征數(shù)據(jù)值,可能會參差不齊,存在一些數(shù)值很小或很大的數(shù)據(jù),或者是數(shù)據(jù)分布得過于分散,都可能會誤導(dǎo)模型的正確訓(xùn)練。因此在進(jìn)行模型的訓(xùn)練之前需要先對特征值進(jìn)行標(biāo)準(zhǔn)化。所謂數(shù)據(jù)標(biāo)準(zhǔn)化就是將所有的數(shù)據(jù)轉(zhuǎn)換為均值為0,方差為1的正態(tài)分布。本文采用StandardScaler()方法進(jìn)行規(guī)范化,公式如式(15)所示
(15)
其中,x為特征值,μ為均值,σ為標(biāo)準(zhǔn)差。
由1.1節(jié)原理中g(shù)及C的表達(dá)式可知,g和C均會對SVR的性能產(chǎn)生很大影響。對于g,取值過大會造成核函數(shù)只作用于支持向量樣本附近,導(dǎo)致泛化能力下降;取值過小,可能會引起平滑效應(yīng)過大。懲罰因子則表示對分錯的點(diǎn)加入多少的懲罰。取值很大幾乎趨于無窮時,表示幾乎不存在分錯的點(diǎn),會出現(xiàn)過擬合現(xiàn)象;取值過小并趨于0時,表示分錯的點(diǎn)很多,容易出現(xiàn)欠擬合。
本文使用“網(wǎng)格搜索”[22]與“交叉驗(yàn)證”[23]相結(jié)合的方式來尋找最優(yōu)參數(shù)對。具體步驟如下:
1)確定g和C的取值范圍均為[2-8,28]。
2)在取值范圍內(nèi)將網(wǎng)格等距離劃分為10份,獲得一個10×10的粗網(wǎng)格[24]。
3)計(jì)算網(wǎng)格中第一個點(diǎn)所對應(yīng)的參數(shù)對經(jīng)過10折交叉驗(yàn)證后的均方誤差值,然后將這10個均方誤差值的平均值作為此點(diǎn)的均方誤差值(MSE)。
4)設(shè)定最小均方誤差為0.5,遍歷網(wǎng)格中所有的點(diǎn)重復(fù)步驟3計(jì)算出對應(yīng)的MSE,并與設(shè)定值比較,若某個點(diǎn)的MSE小于0.5則記錄該組參數(shù),否則以該點(diǎn)為中心重新構(gòu)造一個10×10的細(xì)網(wǎng)格,并返回步驟3。
5)重復(fù)以上步驟,找出最佳參數(shù)對。
通過上述的尋優(yōu)步驟,得到如圖3所示的參數(shù)尋優(yōu)結(jié)果圖。由圖可知當(dāng)C=1.0,g=34時,其對應(yīng)的均方誤差值最小約為0.2861。
圖3 參數(shù)尋優(yōu)結(jié)果圖
為驗(yàn)證算法的性能,本文開展了相應(yīng)的血壓預(yù)測對比實(shí)驗(yàn),將幾種現(xiàn)有的常用回歸模型進(jìn)行比較,分別為改進(jìn)前的SVR模型、前述的人工神經(jīng)網(wǎng)絡(luò)、線性Logistic回歸以及Lasso回歸模型,并利用準(zhǔn)確率及均方根誤差這2個評價指標(biāo)對模型進(jìn)行性能評估。
3.4.1 準(zhǔn)確率對比實(shí)驗(yàn)及結(jié)果分析
通過預(yù)測實(shí)驗(yàn)得到本文基于網(wǎng)格搜索與交叉驗(yàn)證的SVR回歸(K-SVR)、改進(jìn)前的SVR模型(SVR)、Logistic回歸、人工神經(jīng)網(wǎng)絡(luò)(ANN)和Lasso回歸對于人體高壓和低壓預(yù)測的準(zhǔn)確度如圖4所示,其中L代表對于低壓的預(yù)測準(zhǔn)確率,H代表對于高壓的預(yù)測準(zhǔn)確率。
圖4 不同模型準(zhǔn)確率對比圖
由圖4可知,本文模型對低壓的預(yù)測準(zhǔn)確率超過了81%,對于高壓的預(yù)測準(zhǔn)確率超過了71%,均明顯高于其余4種算法的預(yù)測準(zhǔn)確率。表明在準(zhǔn)確率方面,本文提出的基于網(wǎng)格搜索和交叉驗(yàn)證的SVR模型對于高壓和低壓都有更好的預(yù)測性能。
3.4.2 均方根誤差對比實(shí)驗(yàn)及結(jié)果分析
表2是幾種不同算法對于高壓和低壓預(yù)測的均方根誤差值的結(jié)果對比圖。由表格可知人工神經(jīng)網(wǎng)絡(luò)、Logistic線性回歸以及Lasso回歸對于高壓預(yù)測的均方根誤差值均高于0.6,而本文改進(jìn)后的SVR算法預(yù)測高壓的均方根誤差值約為0.53,明顯低于其余4種算法。而對于低壓預(yù)測的均方根誤差值約為0.42,也明顯低于其余4種算法的均方根誤差值。因此在均方根誤差方面,本文改進(jìn)的SVR回歸模型在對血壓進(jìn)行預(yù)測時表現(xiàn)出了更低的誤差率。
表2 各算法預(yù)測血壓的均方根誤差
血壓K-SVRSVRANNLogisticLasso高壓0.53490.57290.66600.65690.6549低壓0.42790.44710.49160.47270.4835
總體而言,本文改進(jìn)的SVR模型,在利用心率和血氧實(shí)現(xiàn)對人體血壓的預(yù)測時,不管是在準(zhǔn)確率方面還是在均方根誤差方面,均明顯優(yōu)于其余4種現(xiàn)有的常用回歸模型,取得了較好的效果。
本文采用麻省理工學(xué)院的MIMIC-II數(shù)據(jù)庫的心率、血氧及血壓數(shù)據(jù),研究基于網(wǎng)格搜索及交叉驗(yàn)證的SVR血壓預(yù)測模型。實(shí)驗(yàn)對比結(jié)果得出,改進(jìn)后的SVR算法對于高壓預(yù)測的準(zhǔn)確率超過71%,對于低壓預(yù)測的準(zhǔn)確率超過81%,均明顯高于其余4種對比預(yù)測模型;在均方根誤差方面高壓的值約為0.53,低壓的值約為0.42,也均明顯低于其余4種算法;表明本文提出的基于網(wǎng)格搜索與交叉驗(yàn)證的SVR算法相較于其他4種對比的機(jī)器學(xué)習(xí)模型算法而言對于人體血壓有更好的預(yù)測性能。