馬晶,蔡文杰,楊利
受人口老齡化等因素影響,我國(guó)心血管疾病的發(fā)病率和死亡率近年來(lái)快速增長(zhǎng)。據(jù)國(guó)家心血管病中心編撰的《中國(guó)心血管病報(bào)告2016》顯示,心血管病死亡占城鄉(xiāng)居民死亡原因的首位,占疾病死亡構(gòu)成的40%以上,及早診斷與及時(shí)治療是應(yīng)對(duì)這一危機(jī)的有效措施[1]。心臟聽診操作簡(jiǎn)單,但主要靠醫(yī)生的主觀經(jīng)驗(yàn)來(lái)判斷病癥。在大數(shù)據(jù)的熱潮下,通過(guò)機(jī)器學(xué)習(xí)方法來(lái)判斷心臟是否健康成為了一個(gè)備受關(guān)注的研究熱點(diǎn)。機(jī)器學(xué)習(xí)是人工智能的核心,通過(guò)計(jì)算機(jī)模擬和實(shí)現(xiàn)人類的學(xué)習(xí)行為,利用已有數(shù)據(jù)尋找規(guī)律,并對(duì)未知的數(shù)據(jù)進(jìn)行預(yù)測(cè),目前已廣泛應(yīng)用于圖像、音頻、語(yǔ)言處理等領(lǐng)域[2]。
機(jī)器學(xué)習(xí)已在心臟信號(hào)輔助診斷方面取得了很多成功。Zheng等[3]提出了基于心臟儲(chǔ)備指數(shù)的混合特征提取方法,并采用最小二乘支持向量機(jī)實(shí)現(xiàn)慢性心力衰竭計(jì)算機(jī)輔助智能診斷,診斷準(zhǔn)確率、靈敏度和特異性均達(dá)到了90%。Hadi 等[4]提出了用STransform(S變換)技術(shù)提取特征,并運(yùn)用多層感知器網(wǎng)絡(luò)進(jìn)行心音病例的分類,達(dá)到了很高的正確分類率。Maragoudakis 等[5]提出了一種基于馬爾科夫鏈的貝葉斯推理方法,在198個(gè)心音信號(hào)數(shù)據(jù)集中已得到驗(yàn)證,分類效果高于其他分類器。
心音是心臟搏動(dòng)過(guò)程中產(chǎn)生的一種振動(dòng)信號(hào),能夠很好地反映心臟活動(dòng)、血液流動(dòng)和心臟的健康情況,特別在診斷血流動(dòng)力學(xué)異常方面比心電圖更具優(yōu)勢(shì)[6]。心音在疾病診斷中提供初步線索,有助于醫(yī)生對(duì)疾病進(jìn)行評(píng)估,因其方便快捷在臨床上被廣泛應(yīng)用[7]。目前將數(shù)據(jù)挖掘應(yīng)用到分析心音特征重要性的研究非常少見。本研究將基于多種新型機(jī)器學(xué)習(xí)算法的心音特征進(jìn)行分類預(yù)測(cè),并運(yùn)用數(shù)據(jù)挖掘算法分析心音特征的重要性排序,實(shí)現(xiàn)了高準(zhǔn)確率的心音正異常分類。
1.1.1 獲取數(shù)據(jù)集實(shí)驗(yàn)數(shù)據(jù)來(lái)源于physionet的開源數(shù)據(jù)庫(kù)[8]。心音記錄(wav 格式)共3 153 條,其中正常心音記錄2 488條、異常心音記錄665條。
1.1.2 心音特征提取特征提取的第一步是心音分割?;陔[半馬爾科夫模型的分割算法是目前分割心音效果較好的算法[9]。圖1為運(yùn)用隱半馬爾科夫模型分割心音的結(jié)果,可看出圖中信號(hào)共有5個(gè)完整的心動(dòng)周期。
圖1 心音信號(hào)分割結(jié)果Fig.1 The result ofheart sound signal segmentation
特征提取算法主要有時(shí)頻域、梅爾頻率倒譜系數(shù)(Mel Frequency Cepstral Coefficents,MFCC)[10]、連續(xù)小波變換。時(shí)域分析方法是將信號(hào)x(t)的能量分布表示為時(shí)間t的函數(shù);頻域分析方法是通過(guò)傅里葉變換獲得信號(hào)頻域及其能量頻域分布。信號(hào)x(t)的小波變換為:
其中,a為伸縮因子,b為平移因子,ψ(t)為母小波。本文取單頻率正弦Morlet小波為母小波,運(yùn)用Matlab小波工具箱中的一維連續(xù)變換函數(shù)cwt對(duì)信號(hào)進(jìn)行小波變換。
MFCC表達(dá)了一種常用的從語(yǔ)言頻率到“感知頻率”的對(duì)應(yīng)關(guān)系[11]。通常對(duì)梅爾頻率[12]做以下轉(zhuǎn)換:
MFCC特征提取的具體步驟為:對(duì)信號(hào)進(jìn)行預(yù)加重,幀移位取10 ms,幀長(zhǎng)取25 ms 對(duì)信號(hào)進(jìn)行分幀,加海明窗并進(jìn)行快速傅里葉變換,通過(guò)26 個(gè)濾波器進(jìn)行濾波和刻度轉(zhuǎn)換,對(duì)取對(duì)數(shù)能量后的信號(hào)做離散余弦變換和均值歸一化。
1.1.3 心音特征數(shù)據(jù)預(yù)處理由于數(shù)據(jù)樣本的異常樣本數(shù)量要遠(yuǎn)少于正常樣本數(shù)量,若數(shù)據(jù)非線性可分,則會(huì)導(dǎo)致在分類過(guò)程中判斷失誤,分類效率嚴(yán)重下降。本研究采用smote 人工合成數(shù)據(jù)的方法擴(kuò)充異常心音數(shù)據(jù)[13]。smote 算法的實(shí)現(xiàn)步驟可描述為:①?gòu)乃挟惓颖局姓业疆惓颖緓m的K個(gè)近鄰,記為n。②從n中隨機(jī)抽取一個(gè)樣本xn,生成一個(gè)范圍為(0,1]的隨機(jī)數(shù)δ,按照xm1=xm+δ*(xn-xm),生成新樣本xm1。③重復(fù)步驟②i次,即可生成i個(gè)新樣本。
對(duì)缺失值的處理方法為:用數(shù)據(jù)集中缺失值所在的特征(列)的均值來(lái)代替缺失值。使用零均值標(biāo)準(zhǔn)化方法對(duì)數(shù)據(jù)集進(jìn)行歸一化處理。
所用機(jī)器學(xué)習(xí)分類器主要有Light Gradient Boosting Machine(LightGBM)、支持向量機(jī)(Support Vector Machine,SVM)、eXtreme Gradient Boosting(XGBoost)、梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)、隨機(jī)森林。本文采用Python語(yǔ)言調(diào)用分類器工具包實(shí)現(xiàn)該功能。
LightGBM 采用梯度提升的方式,將基于學(xué)習(xí)算法的分類樹和回歸樹進(jìn)行有效的疊加。SVM 建立在統(tǒng)計(jì)學(xué)習(xí)理論的VC 理論和結(jié)構(gòu)風(fēng)險(xiǎn)最小化原理基礎(chǔ)之上[14]。SVM 的主要思想是將訓(xùn)練數(shù)據(jù)通過(guò)一定的函數(shù)變化到高維度的空間,在高維空間尋找最優(yōu)的分類面。XGBoost 是華盛頓大學(xué)陳天奇對(duì)Gradient Boosting Machine 算法的C++實(shí)現(xiàn)[15],能夠自動(dòng)利用單機(jī)CPU 的多核進(jìn)行并行計(jì)算降低計(jì)算復(fù)雜度。GBDT 最早由Friedman 提出這個(gè)概念。GBDT通過(guò)采用加法模型,以及不斷減小訓(xùn)練過(guò)程中產(chǎn)生的殘差來(lái)將數(shù)據(jù)進(jìn)行分類[15]。隨機(jī)森林是一個(gè)包含多個(gè)決策樹的分類器,并將它們合并在一起以獲得準(zhǔn)確率更高的預(yù)測(cè)[16]。
在實(shí)際應(yīng)用中比較常用的參數(shù)優(yōu)化方法有網(wǎng)格搜索法和隨機(jī)參數(shù)優(yōu)化法。本文使用隨機(jī)參數(shù)優(yōu)化法尋找最優(yōu)參數(shù)。
數(shù)據(jù)挖掘是從大量、隨機(jī)的數(shù)據(jù)中,提取隱含在其中并且潛在有用信息的過(guò)程[17]。本研究采用遞歸特征消除(Recursive Feature Elimination,RFE)方法進(jìn)行數(shù)據(jù)挖掘,其通常和很多分類算法聯(lián)合使用[18]。RFE 的主要流程為:(1)用預(yù)處理后的特征訓(xùn)練所選擇的分類器;(2)按照最優(yōu)特征子集進(jìn)行特征的篩選,保留最優(yōu)特征。
在分類學(xué)習(xí)中,常用的分類評(píng)估指標(biāo)有準(zhǔn)確率(Accuracy)、靈敏度(Sensitivity)、精確率(Precision)、F1 值。在實(shí)驗(yàn)中,TP 代表將正常信號(hào)預(yù)測(cè)為正常的總數(shù),TN 代表將異常信號(hào)預(yù)測(cè)為異常的總數(shù),F(xiàn)P 代表將異常信號(hào)預(yù)測(cè)為正常的總數(shù),F(xiàn)N 代表將正常信號(hào)預(yù)測(cè)為異常的總數(shù)。
準(zhǔn)確率表達(dá)式為:
靈敏度表達(dá)式為:
精確率表達(dá)式為:
F1值表達(dá)式為:
心音信號(hào)經(jīng)過(guò)濾波、去波峰、降采樣等處理后,運(yùn)用隱半馬爾科夫模型分割每個(gè)心動(dòng)周期的S1、收縮期、S2、舒張期,利用時(shí)域、頻域、MFCC以及小波變換算法共提取145個(gè)特征。第1~36個(gè)特征為時(shí)域特征;第36~72個(gè)特征為頻域特征;第73~90個(gè)特征為MFCC特征;第91~145個(gè)特征為小波變換、時(shí)間復(fù)雜度和光譜復(fù)雜度特征,提取的特征數(shù)據(jù)集的維度為3 153×145。在正常和異常心音特征數(shù)據(jù)中隨機(jī)抽取800條作為測(cè)試集,其余數(shù)據(jù)作為訓(xùn)練集和驗(yàn)證集,通過(guò)smote 算法將異常的訓(xùn)練數(shù)據(jù)由465 條擴(kuò)充為1 860條,即擴(kuò)充之后訓(xùn)練集和驗(yàn)證集中正常心音特征數(shù)據(jù)與異常心音特征數(shù)據(jù)分別為1 888條和1 860條,比例接近1:1。表1為在采用相同分類器LightGBM的情況下原始數(shù)據(jù)集與擴(kuò)充數(shù)據(jù)集的分類效果對(duì)比,可看出擴(kuò)充前的各項(xiàng)分類指標(biāo)都較低,擴(kuò)充后數(shù)據(jù)集比原始數(shù)據(jù)集在分類準(zhǔn)確率、靈敏度、精確度、F1值上分別提高了16.05%、24.6%、12.92%、20.58%,可證明數(shù)據(jù)擴(kuò)充的必要性和有效性。
表1 擴(kuò)充數(shù)據(jù)前后分類效果對(duì)比圖(%)Tab.1 Comparison of classification effects before and after data expansion(%)
將數(shù)據(jù)集隨機(jī)打亂,按照4:1的比例分配給訓(xùn)練集和驗(yàn)證集。測(cè)試集的維度為800×145。實(shí)驗(yàn)中分別采用LightGBM、SVM、XGBoost、GBDT、隨機(jī)森林對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練和預(yù)測(cè)。參數(shù)優(yōu)化結(jié)果如下:對(duì)于LightGBM, learning_rate=0.15, max_depth=60,n_extimators=150,num_leaves=300;對(duì)于SVM 模型,高斯徑向基函數(shù)為核函數(shù),C=1,gamma=0.01;對(duì)于XGBoost 模 型,colsample_bytree=0.8,gamma=0.1,learning_rate=0.3, max_depth=10, reg_alpha=0.1,min_child_weight=1,subsample=0.6;對(duì) 于GBDT,learning_rate=0.1,max_depth=40,n_extimators=200,min_samples_split=70;對(duì)于隨機(jī)森林模型,max_depth=156,max_features=30;n_extimators=120,min_samples_leaf=70。
經(jīng)過(guò)填充均值、歸一化、調(diào)節(jié)最優(yōu)參數(shù)等處理后,各分類器預(yù)測(cè)后得到的分類效果如表2表示,其中各分類指標(biāo)結(jié)果均為正常與異常兩種類別的的平均值。
在分類準(zhǔn)確率方面,由表2可看出,在相同的數(shù)據(jù)集下,LightGBM 效果最好,準(zhǔn)確率為90.32%,XGBoost次之。由于正樣本更被醫(yī)學(xué)上重視,將正樣本誤判為負(fù)樣本的代價(jià)要遠(yuǎn)遠(yuǎn)大于將負(fù)樣本誤判為正樣本的代價(jià),因此靈敏度、精確率、F1 值往往也是很好的評(píng)判標(biāo)準(zhǔn)。每個(gè)分類器指標(biāo)中的準(zhǔn)確率、靈敏度、精確率、F1 值差距較小,除了隨機(jī)森林外基本差距在1%左右。結(jié)合這4個(gè)指標(biāo)可看出,LightGBM效果最好。
表2 各分類器心音分類效果(%)Tab.2 Heart sounds classification effects of each classifier(%)
根據(jù)分類效果的對(duì)比可看出LightGBM效果最好,故本文選用LightGBM與RFE結(jié)合,選擇LightGBM算法作為遞歸特征消除算法的分類器。通過(guò)數(shù)據(jù)挖掘從145個(gè)特征中提取出重要性前8名的特征,分別是第75、73、77、17、78、93、79、52個(gè)特征,代表的含義依次為“倒譜系數(shù)偏度中心距離”、“倒譜系數(shù)最小值”、“信號(hào)譜分析系數(shù)”、“收縮期和S1振幅比”、“信號(hào)譜分析頻率”、“小波變換譜系數(shù)”、“線性預(yù)測(cè)系數(shù)”、“收縮期加窗傅里葉變換中位數(shù)值”。
在數(shù)據(jù)集劃分比例相同、分類器均為L(zhǎng)ightGBM、調(diào)參參數(shù)設(shè)置相同的情況下,這8 個(gè)特征構(gòu)成一個(gè)特征子集,分別將145個(gè)特征組成的數(shù)據(jù)子集和從145 個(gè)特征中隨機(jī)抽取8 個(gè)特征組成的特征子集進(jìn)行比較評(píng)估各項(xiàng)指標(biāo)。對(duì)比結(jié)果如表3所示,可以看出:數(shù)據(jù)挖掘特征子集與由145個(gè)特征組成的特征集分類效果差不多,而隨機(jī)抽取的特征子集從準(zhǔn)確率、靈敏度、精確率、F1 值上看效果都跟前兩者有很大差距。數(shù)據(jù)挖掘的特征子集比隨機(jī)抽取特征子集分類準(zhǔn)確率高0.225 1,提高了33.51%;靈敏度高0.114,提高了14.54%;精確率高0.155,提高了20.61%;F1 值高0.173 9,提高了24.04%。以上足以證明數(shù)據(jù)挖掘的8個(gè)特征的重要性。
表3 數(shù)據(jù)挖掘效果對(duì)比圖(%)Tab.3 Comparison chart of data mining(%)
為了提高模型的性能,采用Stacking 模型融合方法將所用的5 種模型進(jìn)行5 折交叉驗(yàn)證輸出預(yù)測(cè)結(jié)果,然后將其合并為新特征并使用新模型加以訓(xùn)練得到最終結(jié)果。圖2展示了不同數(shù)量模型融合與分類指標(biāo)F1 值的關(guān)系圖,分別取LightGBM、XGBoost、SVM、GBDT、RandomForest 這5 個(gè)模型的第1 個(gè)、前2個(gè)、前3個(gè)、前4個(gè)、前5個(gè)模型做模型融合。實(shí)驗(yàn)結(jié)果表明,LightGBM、XGBoost 和SVM 模型融合的效果最好,準(zhǔn)確率、靈敏度、精確率和F1 值分別為92.6%、92.6%、92.7%、92.6%。
圖2 模型數(shù)量與分類指標(biāo)F1值關(guān)系圖Fig.2 Relationship between number of models and F1 value
近年來(lái),智能輔助診斷成為了不少學(xué)者研究的熱點(diǎn),在特征分類和圖像分類方面有很好的應(yīng)用。在實(shí)際訓(xùn)練時(shí),為了提高模型的魯棒性和泛化能力,本研究所收集的數(shù)據(jù)來(lái)源于physionet的公開數(shù)據(jù)集,并從中剔除了信號(hào)。在心音特征分類診斷過(guò)程中,采取了多種方法解決分類不平衡問(wèn)題,發(fā)現(xiàn)smote人工合成數(shù)據(jù)能夠有效擴(kuò)充異常信號(hào);對(duì)比各分類器的分類效果,發(fā)現(xiàn)相比于傳統(tǒng)機(jī)器學(xué)習(xí)方法,新興機(jī)器學(xué)習(xí)方法如lightGBM在保持各項(xiàng)分類指標(biāo)的同時(shí)大大提高了工作效率,在實(shí)際應(yīng)用中是一個(gè)很好的優(yōu)點(diǎn)。
通過(guò)數(shù)據(jù)挖掘的分類效果對(duì)比可看出,數(shù)據(jù)挖掘出的特征子集在各項(xiàng)指標(biāo)中都表現(xiàn)很好。145 個(gè)特征組成的特征集雖然在準(zhǔn)確率、靈敏度、精確率、F1值這4個(gè)指標(biāo)上略高于數(shù)據(jù)挖掘特征子集,但是數(shù)據(jù)量卻是后者的19 倍。在臨床實(shí)際應(yīng)用中,不影響分類效果的前提下,提取的特征數(shù)目由145個(gè)減少到8 個(gè),這不僅大大減少了特征提取所需要的時(shí)間,也提高了機(jī)器學(xué)習(xí)訓(xùn)練和測(cè)試的效率,可以在相同的時(shí)間內(nèi)進(jìn)行更多的預(yù)測(cè)。數(shù)據(jù)挖掘出來(lái)的8個(gè)特征,包含MFCC、時(shí)頻域分析等,對(duì)于診斷心血管疾病來(lái)說(shuō)是重要的指標(biāo),具有較強(qiáng)的臨床參考價(jià)值。
運(yùn)用Stacking 模型融合方法將多種分類器結(jié)合以提高模型性能,是有效提高分類效果的方法之一,但并不是分類器越多越好,若某個(gè)單獨(dú)分類器本身性能不佳則會(huì)影響整個(gè)模型的效果。本研究結(jié)合了多種心音特征類型進(jìn)行心音診斷,目的是充分利用心音的信息以提高分類準(zhǔn)確率,運(yùn)用Stacking 模型融合方法準(zhǔn)確率可達(dá)到92.6%。盡管本文的初步研究取得良好的心音分類效果,但physionet 的心音數(shù)據(jù)來(lái)源于國(guó)外多家醫(yī)院,不同品牌數(shù)字聽診器和不同環(huán)境下采集的心音信號(hào)可能會(huì)夾雜一定的干擾信息,應(yīng)進(jìn)一步進(jìn)行廣泛的研究和測(cè)試。
本研究通過(guò)將機(jī)器學(xué)習(xí)與遞歸特征消除算法相結(jié)合挖掘到其中最重要的8個(gè)特征,在提高模型運(yùn)行效率的同時(shí)也從某些程度上代表了診斷心血管疾病的參考指標(biāo),并采用Stacking 模型融合方法將心音分類準(zhǔn)確率提高至92.6%,該方法具有潛在的臨床應(yīng)用價(jià)值。