胡 揚,魏毅強
據(jù)世界衛(wèi)生組織統(tǒng)計,目前全球范圍內(nèi)包含心血管疾病在內(nèi)的心臟病導致每年死亡人數(shù)將近2 000萬人,由國家心血管病中心組織編撰的《中國心血管病報告 2018》(2019年4月)指出:我國心血管病患病率持續(xù)上升,心血管病現(xiàn)患人數(shù)推測有2.9億人。心血管病死亡率仍居首位,高于腫瘤及其他疾病,每5例中就有2例死于心血管病,且農(nóng)村死亡率高于城市。同時更令人擔憂的是發(fā)病年齡也呈現(xiàn)出年輕化的趨勢,形勢非常嚴峻。誘發(fā)心臟病的風險因素很多,包括心臟病家族史、吸煙、膽固醇、高血壓、肥胖和缺乏鍛煉等,而治療該類疾病最好的方法是預(yù)防,關(guān)鍵在于早發(fā)現(xiàn)、早診斷和早治療。如何有效預(yù)防心臟病,對潛在患病人群進行準確檢查診療,具有重要的理論和現(xiàn)實意義。
近年來,隨著信息與大數(shù)據(jù)技術(shù)的應(yīng)用,使得數(shù)理醫(yī)學在疾病診斷與預(yù)測領(lǐng)域取得了長足的進步和飛速的發(fā)展。在數(shù)據(jù)處理方面,很多學者都采用核主成分分析(KPCA)方法對數(shù)據(jù)進行核變換及降維,Deng等[1]提出了一種增強的KPCA方法,從而可以更好地挖掘數(shù)據(jù)的信息;Chen等[2]通過KPCA提取數(shù)據(jù)主要特征進行降維;Long等[3]通過KPCA提取缺陷的主要特征使得分類效果明顯提升;Xie 等[4]處理高維數(shù)據(jù)時使用了KPCA來降維。在疾病分類方面,F(xiàn)an等[5]將KPCA與AdaBoost等算法結(jié)合提高了阿爾茨海默病病人的分類正確率;Choi等[6]通過卷積神經(jīng)網(wǎng)絡(luò)對大腦磁共振圖像進行分析,從而對老年癡呆癥病人進行分類;Shankar等[7]用多核向量機提高了甲狀腺疾病分類的準確率和靈敏度;Tufail等[8]構(gòu)建了多個深度二維卷積神經(jīng)網(wǎng)絡(luò),從局部大腦圖像中學習不同的特征,并結(jié)合這些特征進行最終分類,用于阿爾茨海默病的診斷。Deng等[9]基于改進的Mel-frequency倒譜系數(shù)特征和卷積遞歸神經(jīng)網(wǎng)絡(luò)對心音進行分類;Chen等[10]通過改進的頻率小波變換和卷積神經(jīng)網(wǎng)絡(luò)對心音進行高效分類;Yang等[11]通過決策樹、隨機森林和人工神經(jīng)網(wǎng)絡(luò)方法對主動脈狹窄進行分類;Soares等[12]提出了一種新的擴展零階自主學習多模型神經(jīng)模糊方法,可以通過心音對不同的心臟疾病進行分類;Tang等[13]使用旋轉(zhuǎn)線性核支持向量機分類器對心律失常進行分類;Wang等[14]提出了對偶全連接神經(jīng)網(wǎng)絡(luò)模型來對心律進行精確分類;Wang等[15]對心律失常的分類也提出了一種改進的卷積神經(jīng)網(wǎng)絡(luò)模型并得到了很好的結(jié)果;Bzl等[16]不僅提出了一種新的基于深度剩余網(wǎng)絡(luò)的心律失常深度學習分類方法,還使用二聯(lián)導心電信號結(jié)合深度學習方法來自動識別5種不同類型的心跳。以上研究雖然對心臟疾病的診斷和分類有不少幫助,但由于心臟數(shù)據(jù)的復雜性、特殊性、高度非線性等因素導致對于疾病的準確判斷比較困難。
本研究以描述心臟單質(zhì)子發(fā)射計算機斷層掃描數(shù)據(jù)集為基礎(chǔ),該數(shù)據(jù)集有267個病人樣本,每個樣本有44個連續(xù)特征模式并被分為正常和異常。但由于數(shù)據(jù)非線性而且維數(shù)較高,給正確分類造成很大困難和影響。本研究通過核主成分將數(shù)據(jù)集進行核變換和降維,從而去掉非線性影響并降低分類難度,經(jīng)過核變換后的數(shù)據(jù)集進行正態(tài)分布檢驗。由于高斯徑向基的參數(shù)難以選定,本研究采用非參數(shù)統(tǒng)計中的Friedman秩方差分析法對參數(shù)的取值進行了檢驗,并最終選擇了最合適的參數(shù)值。選定參數(shù)值后,在此基礎(chǔ)上選用k近鄰(KNN)分類方法對267例病人進行分類,并與未進行核變換的主成分分析-k近鄰(PCA-KNN)方法比較結(jié)果,可以看出本研究提出的方法得到了較好的性能提升。
1.1 主成分分析 信息維數(shù)過高是處理多特征數(shù)據(jù)最大的挑戰(zhàn)之一,多數(shù)情況下不同特征變量之間都具有一定的相關(guān)性。主成分分析是一種最為常見的數(shù)據(jù)降維方法,它可以將大量具有相關(guān)性的變量線性組合成一些不相關(guān)的新變量,同時還能盡可能保留原始數(shù)據(jù)集的大部分信息,這些新變量就叫做主成分。主成分分析的應(yīng)用十分廣泛,比如人臉識別、聲音識別、綜合評價等。通過主成分分析,可以簡化問題的處理難度,并且提高工作效率。
1.2 核主成分分析 主成分分析僅僅是原始特征變量的線性組合,適用于具有線性特征的數(shù)據(jù)集,在處理非線性問題時往往不能達到很好的效果,而核主成分分析可以較好地對非線性問題進行線性化并降維。KPCA將輸入空間中的數(shù)據(jù)通過映射φ映射到高維特征空間中,使映射后的數(shù)據(jù)集在高維特征空間中是線性可分的。核主成分犧牲的是維度,通過不同的核函數(shù)進行映射,再對特征降維,進行主成分分析。
常用的核函數(shù)有以下3種:
①q階多項式核函數(shù)
K(Ai,Aj)=[(Ai,Aj)+1]q
②線性核函數(shù)
K(Ai,Aj)=(Ai,Aj)
③高斯徑向基(RBF)核函數(shù)
KPCA實現(xiàn)的優(yōu)良程度取決于核函數(shù)的選取。多項式核函數(shù)適用于圖像處理,線性核函數(shù)適用于線性可分且特征數(shù)量較多的情況,高斯核函數(shù)是最常用的核函數(shù),具有良好的局部特征提取能力和平滑特性。本研究選取的是高斯徑向基核函數(shù)(RBF)。
將原始數(shù)據(jù)空間變換為特征空間,并在特征空間中對數(shù)據(jù)進行主成分分析,本研究中僅選取第一次貢獻率達到97%的主成分個數(shù)。
k近鄰方法是有監(jiān)督的機器學習分類算法之一[17-19]。在k近鄰方法中,事先確定k值、距離度量等并提前準備好訓練集及測試集,通過訓練集把特征空間劃分成一些子空間,訓練集中的每個樣本占據(jù)其中一部分空間。當k=1時,是k近鄰的特殊情況,也被稱為最近鄰。在最近鄰中,當測試樣本落在某個訓練樣本的子空間內(nèi)時,該測試樣本就劃分為這個訓練樣本所屬的類別。 當k>1時,給定訓練數(shù)據(jù)集X,對于測試數(shù)據(jù)Y,在X中找到與之距離最近的k個樣本,在這k個樣本中,若大部分樣本屬于某一類S,則將Y歸為S類。最常用的距離度量是歐式距離,也有Manhatan距離,Minkowski距離等。
k值的選擇十分重要,會對其分類結(jié)果產(chǎn)生重要影響。k值選擇較小,則整體分類模型就會變得更加復雜,容易產(chǎn)生過擬合現(xiàn)象;k值選擇較大,整體分類模型會過于簡單,分類結(jié)果正確率容易降低。k值的選擇一般為奇數(shù),避免出現(xiàn)無法判斷的情況。通過在訓練數(shù)據(jù)集上的分類結(jié)果正確率顯示,k=3時分類效果最好,因此,本研究中選取k=3。
設(shè)一共有t個處理和b個區(qū)組,首先在每1個區(qū)組內(nèi)排秩,得到表1。
表1 完全隨機區(qū)組秩排序表(Rij)
其中Rij為第i個處理中第j個區(qū)組的秩。
進行假設(shè)檢驗:
H0:各個處理中無差異;
H1:各個處理中有差異。Friedman統(tǒng)計量為:
(1)
(2)
Friedman檢驗依賴于每個區(qū)組內(nèi)所排列的秩的大小,對試驗誤差沒有正態(tài)分布的要求。
本研究選取了描述心臟單質(zhì)子發(fā)射計算機斷層掃描的SPECIF數(shù)據(jù)集,該數(shù)據(jù)集有267個病人樣本,每個病人有44個連續(xù)特征變量,并被分為兩類:正常和異常。從中選取部分作為訓練集,余下的作為測試集,對其進行核主成分-k近鄰分類。
首先,將訓練集T標準化以消除量綱帶來的影響,然后進行核變換。由于高斯徑向基的參數(shù)難以選定,對核參數(shù)分別選取了240,600,1 000參數(shù),分別采用Fisher判別,k近鄰,Logistic回歸3種分類方法進行試運算,將得到的9個心臟疾病分類正確率進行比較??梢钥闯鲈谕环N分類方法中,心臟疾病分類的正確率對于核參數(shù)的選擇是魯棒的[20]。隨機選取18個2σ2的不同取值,分別為240,300,360,400,420,480,500,540,600,660,700,720,780,800,840,900,960,1 000。核變換后進行主成分分析,分別使用了Fisher判別,k近鄰分類,Logistic回歸(臨界概率值選為0.5)對不同參數(shù)下的主成分分析的結(jié)果進行心臟疾病分類,得到了在18個不同參數(shù)下的3種分類方法的正確率。通過表2可以看出k近鄰分類方法的正確率高于其余兩種。
表2 在不同參數(shù)下的3種分類方法的正確率
得到表2后對其數(shù)值進行排秩,得到表3,從表3中看到有相同秩,因此,F(xiàn)riedman秩方差檢驗中選用c統(tǒng)計量。由表3可以計算得到c27.587。接受H0,即認為各個參數(shù)之間的正確率無差異。在k近鄰心臟疾病分類結(jié)果中選取正確率最高的且主成分個數(shù)最少的參數(shù),即2σ2=720,其中訓練集的主成分個數(shù)為5。
表3 在不同參數(shù)下的3種分類方法的心臟疾病分類正確率秩排序
選定參數(shù)及分類方法后,將其用于心臟疾病分類測試集M。通過高斯徑向基核函數(shù)將M進行變換,并且通過R中MVN包對變換后的心臟疾病測試集M′進行了多元正態(tài)性檢驗,如果測試集服從多元正態(tài)分布,則這些點應(yīng)與直線有著較好的擬合。由圖1可以看出,這些點與直線的擬合并不是很好,由此可以說明變換后的測試集并不服從多元正態(tài)分布。
圖1 心臟疾病測試集M′的多元正態(tài)性檢驗
接下來對變換后的心臟疾病測試集進行主成分分析,主成分的個數(shù)為5。之后進行k近鄰分類,其正確率可以達到92%。如果直接使用主成分分析-k近鄰,其主成分個數(shù)在心臟疾病訓練集有25個,心臟疾病測試集達到28個,這使得計算代價大大提高。心臟疾病測試集上使用KPCA與PCA的結(jié)果(取前5個主成分)比較見表4。由表4可以看出,KPCA方法不僅僅主成分個數(shù)更少,僅需要5個主成分即可達到97%的貢獻率,且第一主成分的方差極大,表明KPCA中第一主成分所含信息量極多。而PCA前5個主成分僅僅達到了65%的貢獻率,并且一共需要28個主成分才能夠符合本研究97%的選擇條件,第一主成分所含的信息量也只能與KPCA的第二主成分相當。由此可以看出,KPCA的計算代價與PCA的計算代價相比很小。
表4 KPCA與PCA結(jié)果比較
在心臟疾病訓練集上PCA的降維效果也不理想。心臟疾病訓練集中PCA需要25個主成分,而KPCA僅需要5個。心臟疾病訓練集上PCA的分類正確率僅有81.25%,而KPCA可以達到88.75%。詳見表5。
表5 心臟疾病數(shù)據(jù)集上KPCA與PCA的分類正確率 單位:%
不管是在主成分個數(shù)還是所含信息量,相對于PCA來講,KPCA的優(yōu)勢非常明顯,其降維效果有顯著提升,極大地減小了心臟疾病數(shù)據(jù)集中非線性因素的影響,從而使后面的數(shù)據(jù)處理更加簡單快捷。
本研究基于KPCA-KNN方法對心臟疾病分類。
方法上,通過Friedman秩方差檢驗法對高斯徑向基核函數(shù)的參數(shù)進行了選取,使用了核主成分分析-k近鄰方法對心臟疾病數(shù)據(jù)集進行分類;理論上,通過Q-Q圖檢驗了核變換后的心臟疾病數(shù)據(jù)的多元正態(tài)性與高斯徑向基核函數(shù)參數(shù)的魯棒性;最后將KPCA-KNN方法應(yīng)用于心臟疾病SPECIF數(shù)據(jù)集上,與PCA-KNN方法相比,可以看出KPCA-KNN方法對心臟疾病數(shù)據(jù)集分類降維效果較好,在心臟疾病測試集上其分類準確率可達92%,并且分類準確率比原始的CLIP3算法提高了15%??傮w看來,在處理心臟疾病數(shù)據(jù)這一類非線性分類問題時,KPCA-KNN方法使得解決問題又多了一條有效的途徑。