任澄飛,方 明
(西安石油大學(xué) 計算機(jī)學(xué)院,西安710065)
心電信號(Electrocardiography,ECG)是心臟病學(xué)領(lǐng)域中廣泛采用的一種分析人體心臟狀況的方法,代表心臟的電活動,廣泛應(yīng)用于心律失常的檢測和分類[1]。人類心臟進(jìn)行生理活動時,通過體表電極采集所得到的時變電位信號中,包含了豐富的生物學(xué)信息,在醫(yī)學(xué)診斷和研究中具有重要意義[2]。經(jīng)驗豐富的心臟病專家可以通過肉眼檢查心電圖波形來檢測心律失常。然而,心律失常在問題的早期階段容易發(fā)生間歇,因此很難在較短的心電波形時間窗內(nèi)對其進(jìn)行檢測。所以,日常生活中持續(xù)監(jiān)測患者的心跳對心律失常的檢測至關(guān)重要。
目前,對心電信號識別分類的主要方法有統(tǒng)計模式分類、結(jié)構(gòu)分析分類法等。文獻(xiàn)[3]中提出,通過高階統(tǒng)計量的方法,將最初波形轉(zhuǎn)換到3個累積量,然后利用一個基于粗糙集理論的決策表分類器進(jìn)行分類,最終得到?jīng)Q策表的分類精度達(dá)到了90.2%。Desai等人先采用常規(guī)方法進(jìn)行心電濾波和分割,然后采用離散余弦變換算法進(jìn)行特征提取,使用主成分分析方法進(jìn)行特征縮減,最后采用K近鄰算法進(jìn)行分類,最終得到的總體平均準(zhǔn)確率為98.61%[4]。Saeed等人提出了一種基于小波變換和多個長短期記憶神經(jīng)網(wǎng)絡(luò)新的分類算法。該算法成本低,能夠滿足可穿戴設(shè)備上的時序要求,優(yōu)于以往的算法[5]。在心電信號的識別分類流程中,主要是通過一些比較成熟的算法提取信號的關(guān)鍵特征值,然后通過不斷優(yōu)化網(wǎng)絡(luò)參數(shù)進(jìn)行訓(xùn)練,依據(jù)訓(xùn)練結(jié)果進(jìn)行病理分析。在實際生活中,心電圖的識別分類算法對醫(yī)生只能起到輔助的作用,具體的診斷及治療方案需由醫(yī)生去實施,因而心電圖的理論和算法還需進(jìn)一步研究。本文在支持向量機(jī)的基礎(chǔ)上,采用臺灣大學(xué)林智仁教授開發(fā)的libsvm工作包作為分類器對ECG信號進(jìn)行分類,構(gòu)建出了一個基于支持向量機(jī)的心電信號處理算法,可以有效提高心電信號分類的敏感度。
心電信號是一種微弱的生理電信號,易受噪聲干擾[6],因此在信號處理之前需要進(jìn)行預(yù)處理。預(yù)處理的目標(biāo)是消除噪聲,沒有噪聲的波形特征看起來更單一。在心電信號中,最顯著的特征值是QRS波群,看起來相對干凈的信號,能夠為后續(xù)特征值的提取和分類提供方便。
要完成QRS波群的定位,主要通過設(shè)置自適應(yīng)閾值來實現(xiàn)。由于心電信號是非平穩(wěn)信號,在進(jìn)行檢測時,僅靠固定閾值難以滿足所有的R波,易造成誤檢和漏檢,而自適應(yīng)更新閾值能較好地解決這個問題[7]。自適應(yīng)的意思是能夠自動適應(yīng)不同類型的記錄。自適應(yīng)機(jī)制較好的算法,是能夠在各種類型的記錄下區(qū)分目標(biāo)與非目標(biāo),從而達(dá)到很高的準(zhǔn)確率和可用度。
1.1.1 自適應(yīng)閾值的設(shè)計原則
(1)自適應(yīng)閾值機(jī)制中的經(jīng)驗參數(shù)需固定。在自適應(yīng)閾值的變化機(jī)制中,有些參數(shù)需要根據(jù)經(jīng)驗提前設(shè)定,對于不同的記錄,已經(jīng)設(shè)定好的經(jīng)驗參數(shù)不允許再改變。
(2)自適應(yīng)閾值要隨著心電信號波形即時的變化。該閾值并不是只給一整條記錄計算好一個閾值后就一成不變了,而是要跟隨波形實時地變化。例如,當(dāng)檢測到的QRS波振幅呈總體上升態(tài)勢時,自適應(yīng)閾值也要相應(yīng)地提高,反之則要相應(yīng)降低。一般可以通過設(shè)定上下限的方式來限定自適應(yīng)閾值,確保該閾值變化更加穩(wěn)健。
(3)想要提高自適應(yīng)閾值的效率,還需要設(shè)置特定的機(jī)制,防錯檢、漏檢。該機(jī)制主要是利用“不應(yīng)期”的概念,在檢測到一個QRS波后,在0.24 s內(nèi)不再檢出QRS波,通過回溯已經(jīng)檢測過的波形信號來達(dá)到防止漏檢和錯檢的目的[8]。
1.1.2 自適應(yīng)閾值的設(shè)置
(1)自適應(yīng)閾值要跟隨波形信號即時變化。在連續(xù)監(jiān)護(hù)過程中,心電信號的幅值、形態(tài)都會隨著時間發(fā)生變化,因此算法的2個檢測閾值不能一直固定不變[9]。為了讓閾值更加準(zhǔn)確,采用雙閾值的方法,設(shè)置一高一低2個閾值。當(dāng)信號中的某個波峰超過設(shè)定的低閾值時,就判定為一個QRS波,依據(jù)高低閾值與波峰振幅之間的聯(lián)系,調(diào)整閾值的大小。
(2)為了保持心電信號波形變化的穩(wěn)健,閾值還需進(jìn)行調(diào)整,調(diào)整的依據(jù)是之前檢測到的正確波峰振幅變化,保證閾值不會太高或者太低。
綜上所述,本文設(shè)計的自適應(yīng)機(jī)制如式(1)、式(2)所示:
式中,THR1為高閾值;mean(peak_buffer)為峰值均值;peak為此刻檢測到的信號峰值;THR1_lim為經(jīng)驗常數(shù),代表閾值變化的上界,在本文中取值為0.3;THR2為低閾值;peak_buffer為存儲此刻峰值之前的8個連續(xù)峰值的緩沖值;THR2_lim也為經(jīng)驗常數(shù),代表閾值變化的下界,在本文中取值為0.23。
(3)防漏檢與錯檢。設(shè)計雙閾值可以在一定程度上防漏檢。因為設(shè)置高、低2個閾值,相比只有一個閾值來講,可以在很大程度上捕捉到更多層次的波峰。在防錯檢方面,采用了“不應(yīng)期”的方式。當(dāng)2個波峰距離較近時,只選取較大的波峰。這個“過近”指的是時間距離低于0.24 s,即不應(yīng)期的長度;雙閾值的數(shù)值存在下界,也在某種程度上防止了一些噪聲被錯檢為QRS波。另外,雙閾值的初始化參數(shù)是被提前設(shè)置好的經(jīng)驗系數(shù),一旦確定就不會因記錄的不同而改變。
(1)預(yù)處理總體步驟
在對心電信號預(yù)處理時,首先使用帶通濾波器去除頻率在15~20 HZ之間的噪聲成分,采用“雙斜率”方法,獲得QRS波群的斜率信息后,將低通濾波器的截止頻率設(shè)定為5 Hz,以濾除高于截止頻率的波形,最后使用滑動窗口積分對波形信號進(jìn)行平滑處理。
(2)使用“雙斜率”方法預(yù)處理濾波后的波形信號?!半p斜率”的基本算法思想是:在一個點(diǎn)左側(cè)的某個區(qū)間內(nèi)尋找最大平均斜率和最小平均斜率,然后在這個點(diǎn)的右側(cè)的某個區(qū)間內(nèi)尋找最大平均斜率和最小平均斜率,即可得到4個斜率值,接著求左側(cè)最大平均斜率與右側(cè)最小平均斜率之差,求右側(cè)最大平均斜率與左側(cè)最小平均斜率之差,最后再求兩個差值中的最大值[10]?!半p斜率”基本思想主要在于QRS波群的寬度相對固定[11],其基本動機(jī)主要利用QRS波兩側(cè)較陡的性質(zhì),其尖峰在經(jīng)過雙斜率處理時會有很大的響應(yīng),一般設(shè)置尋找斜率的區(qū)間是左右兩側(cè)0.015~0.060 s處為經(jīng)驗參數(shù)。
(3)滑動窗口積分。心電信號的波形由于受到濾波或是求斜率的影響,其幅度值會越來越小,而過小的幅值其實不利于檢測,利用滑動窗口積分[12],會讓絕對振幅的值變大,波形更加光滑,本文中設(shè)置滑動窗口寬度為17個采樣點(diǎn)的經(jīng)驗參數(shù)。
2.2.1 SVM算法原理
(1)線性不可分問題
在現(xiàn)實應(yīng)用中,樣本一般都是線性不可分的問題,對于給定的樣本集:
其中,yi∈Y={+1,-1}表示類標(biāo)記,分別用+1和-1表示,分別對應(yīng)正樣本和負(fù)樣本。支持向量機(jī)最終的優(yōu)化問題可以轉(zhuǎn)化為:
其中,x為輸入向量;w是權(quán)重向量;b是偏置項;ξi是松弛變量;C為懲罰因子。
(2)對偶問題
由于上面的優(yōu)化問題帶有大量不等式約束,不易求解,因而使用拉格朗日函數(shù),將其轉(zhuǎn)化為對偶問題。構(gòu)造拉格朗日函數(shù):
事情過去兩天后,項目部副經(jīng)理開始找我談話。主題是我在這件事情上欠考慮,影響了正常的生產(chǎn)工作。我腦子熱的已經(jīng)冷靜不下來了,心里倍感委屈,覺得自己并未做錯什么,冷冷地甩下兩句話:“我履行了自己的職責(zé),處罰通報也是經(jīng)你們同意的,如果你不滿意我的工作,可以換人?!彪S后奪門而出。接下來的幾天時間里,我完全沒有工作的心,每天就在辦公室做做資料,瀏覽一下網(wǎng)頁,再也沒去現(xiàn)場。
其中,α和β是拉格朗日乘子,為求得對偶問題的解,即求:
求拉格朗日函數(shù)的極小值,則對w、b、ξ求偏導(dǎo)數(shù),并令其都為0。將w代回拉格朗日函數(shù)中,消除w和b,即可得到關(guān)于α和β的函數(shù)。經(jīng)過一系列轉(zhuǎn)化后,等價于最大化函數(shù)為:
其約束條件為:
(3)核函數(shù)
雖然加入松弛變量和懲罰因子后可以處理線性不可分問題,但支持向量機(jī)還是一個線性分類器,只是允許錯分樣本的存在。因此,引入核函數(shù)使得支持向量機(jī)成為非線性分類器,決策邊界不再是線性的超平面,而是形狀非常復(fù)雜的曲面,從而可以將樣本從原始空間映射到更高維度的特征空間,使問題得到有效地處理。
假設(shè)φ(x)為映射后的特征向量,則在該特征空間上的討論模型即可變?yōu)?
同樣求得對偶問題:
也就是求解:
約束條件為:
假設(shè)核函數(shù):
于是可以解得:
常見的核函數(shù)有線性核、多項式核、高斯核、sigmoid核等。
2.2.2 基于SVM在心電信號中的應(yīng)用
(1)心電信號特征提取。首先加載ECG信號數(shù)據(jù)集,然后對數(shù)據(jù)集中的每個心拍進(jìn)行5階的小波分解,小波函數(shù)利用db6小波[14]。經(jīng)過5階小波分解和2倍下采樣后,取小波變換系數(shù)中原信號的“近似”系數(shù),即5階分解后的a系數(shù),選取這些系數(shù)作為每個心拍的特征值。
(2)數(shù)據(jù)集選取與劃分。對于數(shù)據(jù)集,隨機(jī)劃分訓(xùn)練集和測試集,即訓(xùn)練集和測試集各有10 000個樣本。隨機(jī)選取可通過立建randperm函數(shù)隨機(jī)打亂樣本索引,然后截取前10 000個索引對應(yīng)的樣本作為訓(xùn)練集,剩余的作為測試集來實現(xiàn)。
(3)特征歸一化。為了加快SVM的收斂,對數(shù)據(jù)進(jìn)行了特征歸一化處理。實際操作時,先使用歸一化函數(shù)的正常模式,對訓(xùn)練集特征歸一化到0~1之間,得到歸一化后的訓(xùn)練集和歸一化信息后,使用歸一化函數(shù)的apply模式,將訓(xùn)練集得到的歸一化信息應(yīng)用至測試集,完成測試集的歸一化。
(4)模型訓(xùn)練與測試。調(diào)用libsvmtrain函數(shù)和libsvmpredict函數(shù)訓(xùn)練和測試模型。libsvmtrain函數(shù)訓(xùn)練的默認(rèn)核函數(shù)為RBF核函數(shù),需要人為設(shè)定2個超參數(shù)——懲罰因子系數(shù)c和核函數(shù)參數(shù)g,分別將其設(shè)定為2和1。不同取值的c和g可能會導(dǎo)致差異較大的結(jié)果,如果想要取得更好的效果,必須進(jìn)行“調(diào)參”,減輕欠擬合與過擬合問題。常用的調(diào)參方法除了手動調(diào)整,還有網(wǎng)格搜索、隨機(jī)搜索、啟發(fā)式尋優(yōu)等方法[15]。
本實驗使用的心電信號均來自于MIT-BIH Arrhythmia Database數(shù)據(jù)庫。該數(shù)據(jù)庫是PhysioBank項目的子數(shù)據(jù)庫,是一套用于評估心律失常檢測器的通用標(biāo)準(zhǔn)測試數(shù)據(jù)。其中包括48條雙導(dǎo)聯(lián)ECG記錄,約65萬個采樣點(diǎn)。實驗平臺為Core i7-8700、8GB內(nèi)存的64位Windows10操作系統(tǒng);代碼基于matlab語言編寫,每條記錄對應(yīng)3個文件:
(1).atr標(biāo)記文件。記錄人工標(biāo)注的心拍位置和類型,格式為二進(jìn)制數(shù)。
(2).dat:數(shù)據(jù)文件。記錄所需要的心電信號。
(3).hea頭文件。存儲記錄的附加信息。如,記錄編號、信號通道、導(dǎo)聯(lián)數(shù)、采樣率、采樣點(diǎn)數(shù)、文件的格式編碼等。
首先讀取了編號為100的記錄,指定讀取的點(diǎn)數(shù)為1024,繪制出的2個導(dǎo)聯(lián)的信號如圖1所示。在命令行輸入plot(M(:,1));grid on;之后即可單獨(dú)繪制出第一個導(dǎo)聯(lián)的信號圖,如圖2所示。
圖1 記錄號為100的心電信號Fig.1 ECG signal recorded as 100
圖2 第一個導(dǎo)聯(lián)的信號Fig.2 Signal diagram of the first lead
經(jīng)過雙斜率處理后,波形模式更為單一,QRS波的變化更為突出。但是,心電信號波形出現(xiàn)了雙峰現(xiàn)象,從某個角度來看,檢測的精準(zhǔn)度不夠高。
因此在雙斜率處理之后,須采用低通濾波方法以使波形變得非常光滑,雜波基本消失,模式也非常單一,基本上達(dá)到了進(jìn)一步閾值處理的要求。
滑動窗口積分后的波形如圖3所示。
圖3 滑動窗口積分后波形圖Fig.3 Waveform after sliding window integration
為了評估所提出方法的性能,采用QRS波檢測算法的2個慣用指標(biāo):敏感度(Sensitivity,SE)和正預(yù)測率(P+)。其敏感度和正預(yù)測率指標(biāo)定義如下:
其中,TP(true positive,TP)代表正樣本中被分類器判定為正確的心拍個數(shù);FP(false positive,F(xiàn)P)代表檢測錯誤的心拍個數(shù);FN(false negative,F(xiàn)N)代表正樣本中被分類器檢測為漏檢的心拍個數(shù)。對整個數(shù)據(jù)庫的實驗結(jié)果見表1。
從表1中可以看出,共錯檢出648個心拍,漏檢了380個心拍,總體Se達(dá)到了99.65%,P+達(dá)到了99.41%。
表1 數(shù)據(jù)庫的實驗結(jié)果Tab.1 Database experiment results
經(jīng)典的pan_tompkin算法開發(fā)了一種QRS波群檢測算法。該算法采用了帶通濾波器,利用坡度、振幅和寬度檢測了QRS波群,最終檢測的正預(yù)測率達(dá)到了99.3%。而本文不僅采用了自適應(yīng)閾值算法、雙斜率算法,還設(shè)置了漏檢和錯檢機(jī)制,最終檢測到的正預(yù)測率為99.38%。本文實現(xiàn)的算法與經(jīng)典的pan_tompkin的99.3%相比,正預(yù)測率提高了約0.08%,具有較高的準(zhǔn)確率和可用度。
基于高效的QRS波算法,本文采用支持向量機(jī)對心電信號進(jìn)行了分類。經(jīng)過特征提取、選取與劃分?jǐn)?shù)據(jù)集、特征歸一化、訓(xùn)練與測試等操作后,可以看出:在本次實驗中,SVM模型的總體預(yù)測準(zhǔn)確率為96.69%。其中4類目標(biāo)類型的準(zhǔn)確率分別為:正常(N)99.68%,室性早搏(V)90.90%,右束支阻滯(R)97.58%,左束支阻滯(L)98.49%.
本文通過對MIT-BIH數(shù)據(jù)庫進(jìn)行預(yù)處理后,使用自適應(yīng)閾值對心電信號進(jìn)行波形處理,最后使用敏感度以及正預(yù)測率對算法進(jìn)行了評估,實驗表明其結(jié)果優(yōu)于傳統(tǒng)的pan_tompkin算法??傮w而言,本文提出的算法為心電信號的預(yù)處理和精確特征提取進(jìn)行了拓展。在未來的工作中,還需要進(jìn)一步改進(jìn)算法,減少計算時間,提高魯棒性。