李清福,趙宇波,趙景波,蔣澤宇
(1.青島理工大學信息與控制工程學院,山東青島 266520;2.山東產業技術研究院(青島),山東青島 266101)
研究顯示,肥胖是引起高血壓的主要因素,且在肥胖人群中,高血壓發病率高于同年齡的正常群體的一倍,年齡越大比例越高[1]。因此,準確測量肥胖人群的血壓,對及時發現和治療高血壓非常必要。目前有3 種比較主流的無創血壓測量方法:臺式水銀血壓計測量法,示波器電子血壓計測量法[2],基于光電容積脈搏波(PPG)測量血壓法。前兩個方法都是通過對袖帶氣囊的充放氣實現對血壓的測量,目前市面上使用的袖帶過短,找到適合肥胖人群的袖帶成為一種問題[3]。因肥胖人群胳臂粗大,有可能得到不正確的血壓值。因此為了擺脫袖帶的束縛,基于光電容積脈搏波(PPG)技術測量血壓的方法應運而生,其具有成本低廉、容易采集等優點,成為最近幾年研究的重點[4]。
2017 年,Miao 等[5]利用線性回歸模型結合PPG 信號中的14 個特征參數進行血壓測量,雖然降低了舒張壓的平均誤差,但該方法舍棄了對血壓非線性影響的特征參數,導致總體上對收縮壓測量精度不高。2018 年,Syed等[6]使用昆山蘭大學采集的包含年齡、性別、身高等生命體征數據集,提取原始PPG 信號及其相應的收縮壓和舒張壓,分別建立回歸樹、多元線性回歸、支持向量機(SVM)模型,發現加入生命體征信息之后,回歸樹模型可以使血壓測量結果達到AAMI 標準。同年,Wang 等[7]建立多參數的人工神經網絡模型(ANN),將PPG 特征反饋給多層感知器結構,該結構有22 個輸入神經元和2個輸出神經元,以同時估計SBP 和DBP,雖然獲得了更好的精度,卻耗費了時間成本和內存成本。2019 年,吳紹武等[8]通過提取PPG 信號中(如波谷與波峰的水平距離、縱向距離、斜率等)15 個特征參數,建立lightBGM模型,且在原有特征參數的基礎上加入歷史血壓,提高了舒張壓測量精度,但因測試數據不一致,使得收縮壓測量精度比線性回歸模型差。2020 年,賀楚芳[9]基于PPG 信號的形態學特征并結合生命體征信息,建立極端隨機樹和隨機森林血壓測量算法,發現與線性模型的擬合程度相比,非線性模型的性能更好。
近幾年針對PPG 信號進行血壓測量的研究存在兩個缺陷:(1)很多研究基本上都是用單一機器學習算法模型進行訓練,而將集成機器學習方法應用于血壓測量的相關研究非常少,導致血壓測量效果不好;(2)很多算法都是對全部人群的血壓測量數據進行模型訓練,沒有把肥胖人群分開。有研究表明,用此算法測量肥胖人群的收縮壓時,其結果普遍偏低[10]。這就造成一個問題,由于肥胖人群特殊的情況,血壓測量不準確可能會錯過高血壓的最佳治療時間,造成不可忽視的后果。因此,本文在前人研究的基礎上,構建基于Stacking 集成機器學習模型,在提取的43 個特征參數的基礎上,把BMI 的數值作為新的特征參數加入到模型中,分別對非肥胖人群(BMI<25)和肥胖人群(BMI>25)數據集進行模型訓練,并與文獻[5]、文獻[8]、文獻[9]用到的機器學習方法進行結果對比,構建對肥胖人群血壓測量有著更高精度的算法模型。本文的主要的創新點如下。
(1)選用多功能參數儀,設計采集實驗,采集志愿者的PPG 信號和真實血壓值,然后依次進行降噪處理、特征參數提取,建立了區別于目前大多數研究使用的MIMIC血壓數據集的新數據集。
(2)整合K近鄰、極端隨機樹、lightGBM、線性回歸單一機器學習模型,提出基于Stacking 集成機器學習血壓測量模型,彌補了單一模型的不足。
(3)將人群分類研究,把訓練數據分成非肥胖人群(BMI<25)和肥胖人群(BMI>25),并把BMI 數值作為特征輸入,提高了肥胖人群的血壓測量精度。
目前很多研究使用的MIMIC-II 數據集雖然包含心血管患者的PPG 信號波形以及血壓值[11],但是因其信號失真嚴重,處理起來難度大,且缺乏患者的身高、體重、年齡等生理信息,故需建立一個更適合本算法的數據庫。
光電容積脈搏波描記法(PPG)以Lambert-Beer 定律作為理論基礎,其數學表達式為:
式中:A為吸光度;T為透過血液容積的強度It與入射光強度I0的比值;a為吸收系數;b為吸收層厚度;c為血液的濃度[12]。
基本原理:當紅藍光照射到如手指等皮膚時,骨骼、肌肉等組織對光的吸收基本不發生改變,而心臟的搏動是有節奏的,血液隨著心臟搏動運輸各種人體所需的營養物質的過程中,動脈血管的血液容積不斷發生改變。利用光電傳感器測量到此種變化,然后經信號轉換形成光電容積脈搏波信號(PPG 信號)。通過相關算法提取PPG 信號中的特征參數并與真實血壓值進行回歸分析,就可以得到血壓值與特征參數之間的算法模型[13]。
本研究使用某公司研發的多功能參數儀采集了某小區540 位年齡在25~80 歲的健康志愿者的PPG 信號以及使用魚躍水銀血壓計采集了真實血壓。告知每位志愿者在參加測試之前不做劇烈運動,不飲用可樂、咖啡、酒水等影響心血管系統的飲品。志愿者將個人體征信息填寫完畢之后,處于靜坐姿勢,然后佩戴儀器開始采集PPG 信號和真實血壓值。以每天11:00-12:00、14:00-15:00、17:00-18:00 為固定的采集時間,每次測量時長為3 min,連續測量半個月并做好記錄。然后整理所有實驗數據以矩陣的形式存放在Matlab 的mat 文件中,該數據集由矩陣的單元格cell陣列組成,每個單元格cell都是一個矩陣形式,將其命名為RAWDATA。
在采集過程中,因測試者操作不當或身體的抖動,導致早期PPG 信號含有毛刺、高頻噪聲和基線漂移等噪聲干擾[14]。為了得到純凈的PPG 信號,需要對RAWDATA 數據進行預處理。因II型切比雪夫濾波器的幅頻特性具有等波紋特性,且沖激響應不變[15],因此為了保證PPG 信號的完整性,使波形形狀不發生任何變化,選用II 型切比雪夫濾波器,濾波器參數截止頻率FC、高通頻率FH、低通頻率FL、頻率響應的紋波PR依次設置為FC= 0.4 Hz、FH= 50 Hz、FL= 0.2 Hz、PR= 5,然后用Matlab 軟件進行驗證和仿真,選取10 s 采樣樣本,濾波后純凈的PPG信號如圖1所示。
圖1 濾波后純凈的PPG信號
PPG 信號反映了人體心血管健康狀況,其中含有的生理信息與血壓有很大關聯[16],因此在建立血壓測量算法模型之前,需要對濾波后的PPG 信號進行特征參數提取。具體做法參考文獻[17]使用五點平滑、二階導數最大值以及數值微分法,對Y 區域進行特征參數提取,如圖2所示。
圖2 PPG信號特征提取示意圖(Y區域)
特征參數主要包括:PPG 信號的谷值點(A點)、上升沿中心點(B點)、峰值點(C點)、重搏波節點(D點)的幅度A-amp、B-amp、C-amp、D-amp,收縮時間T1、峰值點(C點)和重搏波節點(D點)的時間間隔T2,舒張時間T2+T3、重搏波節點(D點)和PPG 信號結束點(E點)的時間間隔T3,整個心動周期T4,A點與C點之間的面積S1等。
除了以上提到的時域特征外,還有一階導數極值參數、二階導數極值參數等一共43 個特征參數。去掉其中的異常數據和空白信息之后,最終保留5 238 條包含年齡、性別、身高、體重、特征參數、真實血壓的數據,保存為CSV 格式,以此作為算法模型的數據集。編號為cstcn40480 志愿者的部分特征參數如表1 所示。模型搭建、數據集人群分類以及實驗結果將在接下來的章節中介紹。
表1 志愿者cstcn40480的部分PPG特征參數
Stacking 集成學習利用了組合策略的思想,將多個算法模型組合到一起形成一個更強的模型。在回歸問題中,第一層個體學習器(初級學習器)先在訓練集中單獨訓練,再在測試集中分別輸出各自的訓練結果,然后將輸出結果作為第二層個體學習器(次級學習器)的輸入進行模型訓練,這樣做可以使不同個體學習器的能力得到疊加,輸出一個測量精度更高的結果[18]。
文獻[8]將歷史血壓加入到lightGBM 算法模型中,文獻[9]構建極端隨機數模型并結合生命體征信息均得到不錯的實驗結果。一致說明某些生命體征信息在傳統機器學習算法測量血壓的過程中可以發揮很大作用。故本研究采用極端隨機樹、lightGBM、KNN 算法模型作為初級學習器,同時加入身體質量指數(BMI)來訓練和測試數據集。
K近鄰回歸(KNR):是比較經典的機器學習算法,由于其訓練時間少,又被稱作懶惰學習算法[19]。由于一個人的正常血壓值隨著時間不斷發生變化,故利用K 近鄰進行血壓測量屬于回歸任務。KNN 通過相關距離計算,選擇最近的K個鄰居的平均值,進而決策出血壓數據的測量值。通常選取曼哈頓距離和歐幾里得距離。
曼哈頓距離對應的特征值只有一個,其數學表達式:
K值的選擇對算法的最終決策值影響極大,這直接影響回歸器的性能,因此合理的選擇K值,可以提高訓練結果的精度,降低估計誤差。
極端隨機樹(ETR):由隨機森林模型變化而來,和隨機森林一樣都以決策樹作為基學習器,但又不同于隨機森林模型[20]。該模型使用全部的血壓數據進行訓練,并且在構建每棵決策樹的時候,隨機選擇PPG 信號的k個特征參數進行分裂,在這個過程中,不修剪樹枝。極端隨機樹的擬合能力和測量能力都強于隨機森林。極端隨機樹對血壓測量的步驟為:第一步選擇血壓數據集的全部數據進行訓練;第二步根據CART算法,從n個特征參數中隨機選擇k個生成決策樹;第三步對上面兩個步驟多次迭代,直至生成所有的決策樹,記為m;第四步重復步驟一至步驟三,構成隨機森林,通過求森林中多個決策樹對血壓的測量值的平均而得到D數據集最后的血壓測量值。
LightGBM 回歸:基于樹學習的梯度提升框架,提出的動機是為了彌補Xgboot 空間消耗大、運行時間長、不友好的chche 優化等缺點。其在運算速度上較Xgboot 模型快了好幾倍,占用內存少,并且處理具有超多數據的數據集時準確度明顯高于其他的算法模型[21]。其對血壓測量的原理為:第一是直方圖算法,首先將和血壓有關的特征參數進行離散化,形成一個寬度為k 的直方圖,然后依次遍歷數據,尋找直方圖上最優的數值;第二是帶深度限制的Leaf-wise 算法,該算法實現每次從當前所有葉子中,找到分裂增益最大的一個葉子,接著進行下一步的分裂,依次循環;第三是GOSS 技術,即梯度單邊采樣技術,該技術舍棄那些對于血壓測量值沒有幫助的特征參數保留幫助性大的特征參數;第四為了減少特征參數過多,導致測量結果不準確的問題,互斥特征捆綁技術可以將相互獨立的特征進行捆綁。
為了防止第一層模型在用非線性變化尋求最優空間假設而產生的過擬合現象,一般選擇比較簡單的機器學習模型作為次級學習器[22],本研究考慮使用文獻[5]中的線性回歸模型。
線性回歸算法(Linear Regression)表征的是因變量(目標值)和自變量(特征輸入)之間的線性關系,假設有k個樣本數據,每個樣本數據僅有1個特征參數,則線性回歸模型的損失函數為:
式中:x1,x2,…,xk為特征輸入;y為目標值;β0,β1,…,βk為回歸系數,回歸系數可通過最小二乘法集中擬合求得,最小二乘法就是要找到一組β0,β1,…,βk,使線性回歸模型的殘差平方和方(SSE)達到最小[23],從而得到使得損失函數最小化的擬合函數的模型。
SSE可表示為:
式中:yβ(xi)為線性回歸模型的測量值;yi為真實值。
因人體血壓值是受多個特征值共同影響的,則線性回歸模型特征輸入X是一個k維矢量,此時的線性回歸模型為y=Xβ,化成矩陣形式為:
本研究構建基于Stacking 血壓測量算法模型的框架如圖3 所示。首先按8∶2 的比例劃分數據集,記訓練集為D={(x1,y1),(x2,y2),…,(xn,yn)},其 中x1,x2,…,xn是 與真實血壓值有關的特征參數,y1,y2,…,yn是對應的每個志愿者的真實血壓值。為了防止數據量不夠而導致訓練結果產生過擬合現象,將訓練集作十折交叉驗證處理,即每次拿9份血壓數據作為初級學習器l1i(i= 1,2,3)的訓練集分別進行訓練,剩下的一份血壓數據作為測試集,交叉驗證10次后加權平均得到k(k=1,2,3)個回歸模型,此為第一層機器學習模型。然后以l1i個模型輸出的血壓測量結果[i= 1,2,3,j=size(10 - fold)]作為特征輸入,真實血壓值ym(m= 1,2,…,n)作為訓練標簽組成次級訓練集D′,最后把D′放到次級學習器l2中進行模型訓練,此為第二層機器學習模型,從而得到最終血壓測量結果hm(m= 1,2,…,n)。
圖3 基于Stacking血壓測量算法模型的框架圖
每個志愿者測得脈搏波參數的量綱不同,故在訓練數據之前首先根據式(7)將脈搏波原始數據標準化為均值為0,方差為1 的分布,再根據式(8)將原始數據歸一化至[0,1]區間內,目的是降低訓練權重,使模型獲得更好的訓練效果。
式中:μ為未處理數據的均值(mean);σ為未處理數據的標準差(std)。
本研究將處理過的5 238條數據進行數據拆分,通過式(9)計算每一條志愿者數據的身體質量指數(BMI)數值,然后根據計算結果,將數據集分成BMI>25和BMI<25的子數據集,并將BMI的數值作為新的特征參數輸入。
式中:志愿者的體重單位為kg;志愿者的身高單位為m。
最終得到3 293 條非肥胖人群的子數據集,1 945 條肥胖人群子數據集,分別隨機選擇每個子數據集的80%作為算法模型的訓練集,20%作為測試集。
本研究第一個實驗是利用單層機器學習模型對BMI>25 和BMI<25 的數據集分別進行訓練,以提取的43 個特征參數和BMI 數值作為模型的輸入,真實收縮壓和舒張壓值作為訓練標簽。K近鄰回歸模型使用枚舉方法、lightGBM 回歸模型和極端隨機樹使用網格搜索方法進行超參數優化、線性回歸使用最小二乘法進行調參優化。十折交叉驗證測試結果顯示,K近鄰回歸模型最優參數:距離的權重weight=distance、閔可斯基距離為曼哈頓距離即P=2、鄰居個數k=13。lightBGM 回歸模型最優參數:每個基學習器的最大葉子節點、學習率、基學習器的數量分別為num_leaves=31、learning_rate=0.1、n_estimators=40。極端隨機樹回歸模型最優參數:基學習器的數量、決策樹最大深度、最大特征數分別為n_estimators=50、max_depth=60、max_features=11。第二個實驗是利用搭建好的Stacking 集成模型,融合K近鄰、lightGBM、極端隨機森林、線性回歸的最優模型對血壓數據集進行訓練和測量。實驗一和實驗二的結果如表2所示。
表2 單模型和Stacking模型對不同人群血壓測量結果對比mmHg
為了與本研究搭建的stacking 集成模型的性能作對比,接下來做了第三個實驗:將任意3 個單模型作為初級學習器,另外一個單模型作為次級學習器,通過不同的Stacking 集成模型分別在肥胖人群數據集中進行訓練和測試,實驗結果如表3所示。
表3 肥胖人群中不同集成模型測試結果對比mmHg
血壓算法的準確與否可用平均絕對誤差(MAE)和均方根誤差(RMSE)進行評估,AAMI國際電子血壓計標準為模型的評價指標MAE<5 mmHg,RMSE<8 mmHg[24]。其計算公式分別如式(10)和式(11)所示。其中,ytrue,i為水銀血壓計測得的真實血壓值,ypred,i為算法模型的血壓測量值,n為數據總數。
根據表2和表3的實驗結果,可以分析得出如下結果。
表3 渦輪結果驗證表
(1)對于收縮壓SBP 的測量,在肥胖人群(BMI>25)中4 個單模型估計的誤差MAE/RMSE 較非肥胖人群(BMI<25)都有所降低;對于舒張壓DBP 的測量,在肥胖人群中LGB 模型估計的誤差MAE 低于非肥胖人群,ETR 模型估計的誤差RMSE 低于非肥胖人群。以上結果顯示,將人群分開且加入BMI 之后,雖然單個模型某些測量結果沒有達到AAMI 標準,但整體上來說對于肥胖人群的血壓測量精度更高,符合本研究預期結果。
(2)在非肥胖人群中,對比最好單模型ligthGBM 模型,本研究搭建的Stacking 集成模型對SBP 估計的MAE/RMSE 從5.748/7.309 mmHg 下 降 至5.624/6.842 mmHg,DBP 則 從3.714/4.750 mmHg 下 降 至3.594/6.684 mmHg;在肥胖人群中,對SBP 估計的MAE/RMSE 較ligthGBM 模型從5.415/7.034 mmHg 下降 至4.979/6.394 mmHg,DBP則從3.636/4.798 mmHg 下降至3.235/4.358 mmHg。此結果說明Stacking 集成模型對肥胖人群血壓測量精度高于非肥胖人群,且滿足AAMI國際電子血壓計標準。圖4和圖5顯示了Stacking集成模型對不同人群的收縮壓和舒張壓的測量值與真實值之間的相關性。肥胖人群的SBP 和DBP測量血壓與真實血壓之間的相關系數R2分別為0.702和0.791,兩值之間具有高度相關性,高于非肥胖人群的0.655和0.729,進一步說明Stacking集成模型對肥胖人群血壓測量精度更高。
圖4 Stacking模型對非肥胖人群血壓測量的相關性
圖5 Stacking模型對肥胖人群血壓測量的相關性
(3)當LGB、ETR、KNR、LR 中的任意一個作為次級學習器時,對肥胖人群血壓的測量精度各不相同。對于收縮壓的測量,Stacking(LR+LGB+KNR+ETR)模型性能最差,甚至不如ETR、LGB、LR 單模型,對于舒張壓 的 測 量,Stacking(LR+ETR+KNR+LGB)模 型 和Stacking(LR+LGB+KNR+ETR)模 型 精 度 不 如ETR、LGB 單模型。無論收縮壓還是舒張壓,Stacking(LGB+ETR+KNR+LR)集成模型測量精度最高,性能最佳。
綜合以上所有實驗,Stacking(LGB+ETR+KNR+LR)集成模型性能優于4 個單模型和另外3 個Stacking 集成模型,且對肥胖人群更有效,收縮壓和舒張壓的測量結果均符合AAMI 國際電子血壓計標準(RMSE<8 mmHg,MAE<5 mmHg)。
為了進一步評價Stacking(LGB+ETR+KNR+LR)集成模型對肥胖人群血壓測量的可行性,對收縮壓和舒張壓的測量值與真實值進行Bland-Altman分析,如圖6所示。
圖6 肥胖人群SBP&DBP的Bland-Altman圖
從圖6 中可以得知,模型對于肥胖人群的血壓(SBP&DBP)測量值與真實值的差值平均數(Mean)接近于0,并且其差值絕大部分落在95%一致性界限(即-d± 1.96sd)之內,說明Stacking 模型對肥胖人群血壓測量與真實血壓的一致程度高,可靠性好。
本文建立的Stacking 集成機器學習模型,在提取的PPG 信號特征值的基礎上,把身體質量指數(BMI)作為新的特征參數加入到模型進行訓練和測試。經過不同人群的多次實驗對比,發現基于Stacking 集成機器學習模型對于肥胖人群的血壓測量結果有效改善了原有算法對肥胖人群血壓測量準確度不高的問題,且其誤差MAE/RMSE均符合AAMI國際電子血壓計標準。對于非肥胖人群,本研究顯示,基于Stacking 集成機器學習模型效果不顯著,應用價值不大。下一步的工作方向是建立更為廣泛的PPG 信號數據集,進一步對模型進行優化,構建一個適合所有肥胖人群的血壓測量模型。