姚麗娟,李冬冬,王 喆
1.華東理工大學 信息科學與工程學院,上海 200237
2.蘇州大學 江蘇省計算機信息處理技術重點實驗室,江蘇 蘇州 215006
心力衰竭(簡稱心衰)是一種復雜的臨床癥候群,是各種心血管疾病的終末階段[1-3]。根據心衰發生的緩急,臨床可分為急性心力衰竭和慢性心力衰竭,根據心力衰竭發生的部位可分為左心、右心和全心衰竭,還有收縮性或舒張性心力衰竭之分[3]。心衰是指由于心臟的收縮功能和(或)舒張功能發生障礙,不能將靜脈回血充分排出心臟,導致靜脈系統血液淤積,動脈系統血液灌注不足,從而引發起心臟循環障礙癥候群[4-5]。心衰是全球慢性心血管疾病的重要組成部分。大多數嚴重的心血管疾病都會引起心力衰竭,如冠狀動脈疾?。–AD)、高血壓、瓣膜性心臟病和糖尿病均可引起或導致慢性心力衰竭的失代償[4-5]。
近年來,它的發病率和死亡率在不斷地增加,尤其是老年人。據國內外報道,因受試人群的不同,心力衰竭患者1年的全因死亡率達30%,重癥心力衰竭患者在確診后第1年內全因死亡率超過20%[6]。隨著年齡的增長,70歲以上的老年人患心衰的可能性高達10%。心衰是威脅人類生命的一大疾病,因此心衰死亡率的預測是重要的,在醫療領域有重大意義。心衰病人的預測死亡率提供了重要的決策信息去輔助醫生治療病人。醫生可以根據心衰病人病情的嚴重程度選擇合適的治療方案以提高病人的存活率。對于高死亡率的病人,可以及時采取有針對性的措施,避免錯過最佳治療時機或不恰當的治療;對于低死亡率的病人,也可避免藥物的過度使用,有利于醫院資源的合理分配[7]。
近年來,醫院積累了大量心衰病人的臨床診斷信息,包括專家診斷,檢查,用藥,手術等臨床數據。這些數據原先分散在電子病歷系統EMRS(Electronic Medical Record System)、醫院信息系統HIS(Hospital Information System)、實驗室信息系統LIS(Laboratory Information System)等不同的系統中[8]。近年來,大多醫院也意識到這些臨床信息的隱藏價值,構建臨床數據中心CDR(Clinical Data Repository)將這些信息系統地集成在一起。通過CDR系統,研究學者們可以拿到較為全面、系統的數據,這對于分析挖掘數據中的有用信息是十分有益的。
早期專家學者們只是對患上心衰的原因和導致心衰病人死亡的因素做一些分析,期望找到決定性的因素來避免心衰的發生或降低心衰死亡率。文獻[3]發現有多種因素參與了導致心衰發生的病理生理過程,并詳細分析了多方面的因素,如心衰病因、臨床因素、心率失常因素。本文中獲取的心衰病人數據集涵蓋了病人的很多信息,例如:基本信息、診斷信息、用藥信息、檢查信息,一共有1 302個特征。但并不一定所有的特征都是與心衰死亡相關的,因此對原始特征集進行特征選擇。特征選擇本質就是將重要的特征選擇出來,將無關和冗余特征進行剔除,這樣便于精煉模型和提高模型的準確率[9]。研究表示,有效的特征選擇可以降低系統的計算時間,提高分類的精確度,降低對系統硬件的需求[9-13]。傳統的特征選擇方法有基于相關度的Correlation-based Feature Selection(CFS)[9]、Relief[11]等,基于特征信息增益的 Information Gain(IG)[10]等,本文選取了經典的Relief方法,選擇出重要的特征,同時也在實驗部分證明了該方法的有效性。
本文獲取的心衰數據集是不平衡數據集,死亡的病例相對較少,存活病例較多。不平衡問題會使分類界面往少數類偏移,少數類的識別率低。解決不平衡問題一般有兩種方法,一種是基于數據層面,通過對多數類進行降采樣,或者對少數類進行過采樣,或者降采樣和過采樣兩者同時進行,來解決不平衡數據的問題[14]。文獻[15]提出了一種運用K-means原理進行聚類降采樣方法。文獻[16]提出SMOTE過采樣方法,采用啟發式的策略,有選擇地復制少數類樣本。另一種是從算法方面,例如代價敏感學習。賦予各個類別不同的錯分代價,賦予少數類比多數類更大的錯分代價來解決不平衡問題。文獻[17]在SVM的基礎上對其做了改進,通過增大少數類的權重,減少多數類權重,來解決不平衡問題,稱為biased penalties SVM(bp-SVM)[17-18]。極限學習機(ELM)在不平衡問題上,忽略了樣本的離散程度,可能導致局部最優結果。文獻[19]對此做出了改進,提出了基于類依賴的代價規則極限學習機(CCR-ELM)。文獻[20]提出了一種基于重力的局部近鄰方法GFRNN。通過對少數類和多數類賦予不同的質量來解決不平衡問題。另一種算法層面的改進為集成學習,文獻[21]提出了適用于不平衡數據分類的Adaboost算法(ILAdaboost)。原始的集成算法Bagging在不平衡數據集上仍然存在不足,文獻[22]通過引入一種大致平衡的采樣方法改進后得到RB Bagging模型,能較大地體現出多樣性。
隨著機器學習的快速發展,它也為醫療領域提供了有效的支持,一些學者將機器學習應用到心衰的診斷課題。心衰診斷的相關工作主要是采用傳統模型:邏輯回歸(Logistic Regression,LR)、支持向量機(Support Vector Machines,SVM)、決策樹(Decision Tree,DT)。文獻[23]運用決策樹建立模型分析與充血性心衰相關的因素,提取出關鍵因素。文獻[24]用決策樹模型預測剛出院的心衰病人一年內死亡或心衰惡化的概率,起到提早監控病人病情的作用。實驗中與LR算法做出了對比,實驗表明決策樹模型的性能比邏輯回歸模型好。文獻[25]結合SVM和Adaboost建立心力衰竭分期模型,提高了心力衰竭診斷和分期準確度。文獻[26]用SVM建立模型從自主和復極化心電圖標記中心源性猝死和泵衰竭死亡,它們是慢性心衰病人不同的死因。文獻[27]構建模型去預測心衰病人死亡或再次住院率。實驗結果表明,預測30天后再次住院或死亡率時,SVM效果最好。在這些分類器中,SVM的應用最為廣泛并取得了優越的預測性能。另外,本文的心衰數據集為不平衡數據集,因此本文采用bp-SVM[17-18]分類模型來實現對心衰病人死亡率的預測。
本文心衰病人的數據來自于上海曙光醫院。上海曙光醫院是一所中西醫結合的綜合性醫院,它擁有完善的臨床數據中心CDR系統,記錄了病人大量的臨床信息,其中包括心衰病人的數據信息。本文基于心衰病人的臨床數據去預測心衰病人本次住院后30天內的死亡率。根據醫院提供的數據,篩選得到心衰病人的樣本庫。心衰病人的樣本庫包含2009年3月至2016年4月期間在上海曙光醫院有住院記錄的心衰病人。樣本庫是基于以下標準選擇的:(1)至少要有以下ICD-10-CM編碼中的一個作為病人該次入院的首要診斷(編碼:I11.0,I13.0,I13.2,I50,I50.1,I50.2,I50.3,I50.4,I50.9);(2)心衰病人在該次住院的前兩天內需要有至少一次有心衰用藥治療方案的記錄。通過上述兩個標準進行篩選,留下了4 682個心衰病人的信息,其中有539個在醫院死亡,病人平均隨訪時間為0.96年。這4 682個心衰病人一共有10 203條住院記錄,每條記錄都記錄了病人的一些基本信息,例如,年齡,性別和一些結構化的臨床診斷信息,包括心率,用藥情況,常規檢查,診斷信息。
心衰病人部分臨床信息是以數值存儲,如年齡;部分是以文本形式存儲,如用藥情況。這些非數值化的信息無法直接利用,所以需要對這些信息進行預處理,將這些信息全部轉換為數值化的數據,以便后續可以用機器學習算法來處理。
對于年齡和心率,保留原始數值。性別轉化為數字,男性用1表示,女性用0表示。為了使CDR數據中的臨床事件可以被表示為可計算事件序列,為每一個心衰案例構建一個向量表示。向量的維度等于不同的特征出現在CDR系統中的數量。每個維度的值代表在特定時間段內對應醫療事件是否出現。根據挑選出來的心衰案例,不同的ICD-10-CM診斷編碼有1 222種,所以診斷信息被轉化為1 222維的向量。醫院專家手動將中國61種廣泛使用的藥物挑選出來,并進一步根據功能將它分為11個大類,即藥物被轉化為11維的向量,如表1中的藥物類別所示。同時專家選出了22個有關心衰的檢查,如表1中的檢查項目所示。 參照每項檢查的參考值,將檢查的結果分為三類,偏高,偏低,正常。每項檢查被轉化為三維的向量,所有的向量都是用0,1數值表示。

表1 11類藥物和22項檢查內容
經過上述的數據特征處理后可以得到一個數值化的數據集被命名為SSHF(Shanghai Shuguang Heart Failure)。SSHF數據集一共有10 203條心衰病人的住院記錄,每條記錄有1 302個特征。數據集對應的特征如表2所示。

表2 SSHF數據集的特征解釋
由于本文預測的是心衰病人本次住院后30天內的死亡率,所以根據原始數據集SSHF,對數據進行篩選,將不能確定30天內是否死亡的案例剔除,最后留下6 260條住院記錄。其中有562條死亡記錄,5 608條存活記錄,樣本特征維度仍為1 302,特征與SSHF數據集一致。所提取的數據是不平衡的,不平衡率為9.98。將預測心衰病人30天后死亡率的數據稱為SSHFmonth數據集以便區分。
Relief算法是由Kira和Rendel首次提出來的[11]。算法的思想和K-NN分類算法有點相近。主要思想是:同一類中最近的樣本比不同類中最近的樣本更接近。假設這有N個訓練樣本:{F(1),c(1)},{F(2),c(2)},…,{F(N),c(N)}。其中,F(k)=[F1(k),F2(k),…,Fn(k)]表示樣本k的特征向量,c(k)表示樣本k的類標號。在Relief算法中,特征Fi的相關性s計算如下:

Relief算法為每個特征計算出一個分數,分數的高低代表該特征的相關性與可識別性,重要特征的特征得分會比較高。因此可以根據閾值來篩選特征,剔除特征得分不大于閾值的特征。
支持向量機(SVM)是由Vapnik等學者提出的,支持向量機的目標是構造一個目標函數,尋找分割超平面ωx+b=0。
假定大小為N的樣本集{(xi,yi),i=1,2,…,N},對于二分類問題,yi為樣本類標號 yi∈{+1,-1}。對于線性可分問題,求最優超平面可轉換為目標函數的優化問題。即:

參數C為懲罰系數,用于控制目標函數中兩項的權重。
bp-SVM是為了解決不平衡問題對SVM做出的改進[17-18]。bp-SVM的模型為:

C1表示正類樣本的權重,C1=N/(2×N1),C2表示負類樣本的權重,C2=N/(2×N2)。N1和N2分別為正負類樣本的數量,N為樣本總數量。
當樣本集線性不可分時,通過核函數可以將原樣本集數據x映射到一個高維線性空間。不同的核函數可以對應不同的最優超平面。本實驗中,選用徑向基核函數(RBF)。公式如下:

徑向基核是一種局部性強的核函數,其可以將一個樣本映射到一個更高維的空間內。該核函數是應用最廣的一個,無論大樣本還是小樣本都有比較好的性能。
本實驗中,bp-SVM模型選用徑向基核(RBF)來預測心衰病人的死亡率,并采用5輪交叉驗證作為超參數的選擇,參數c與σ的范圍都設置為[0.01~100]。因為SSHFmonth數據具有不同的量綱和量綱單位,這會影響后續的實驗結果,所以采用Z-score歸一化心衰數據,使各個特征處于同一數量級。考慮到數據的不平衡性質,選擇三個度量標準來表示本文的實驗結果:TPR(True Positive Rate),TNR(True Negatives Rate),AA(Average Accuracy metric)。TPR和TNR反映的是每一類的識別率,而AA反映的是整體性能。這三個度量標準的計算如下:

TP,TN,FP,FN分別為混淆矩陣的元素。所有的實驗都是在載有英特爾四核的處理器,主頻2.20 GHz,16 GB內存的Linux操作系統上,Matlab環境。
Relief特征選擇的閾值,對應閾值下的保留的特征維度以及三個度量標準下的結果、對應的方差和SVM訓練時間都被記錄在表3中,最好結果加粗表示。

表3 特征維度,預測結果及對應的方差描述
由表3可知,Relief算法設置不同的閾值,就可以得到不同維度的數據。閾值越大,所保留的數據特征就越少。當閾值為0.02時,系統達到了最好的性能,AA指標可以達到80.81%。此時的維度被降為231,相比于原始的1 302維,特征維度大幅度減少。計算時間也由最初的49.46 s降低到15.48 s,系統速度有了很大的提升,而且,系統性能并沒有因為維度的減少而降低,由78.3%提高到80.81%。這正說明了有效的特征選擇可以降低特征維度,減少計算時間,提高系統性能。
TPR代表正類的識別率,當系統達到最好性能時,TPR為79.59%,與最高的80.36%相當。TNR最高可達91.65%,系統性能最好時的TNR為82.03%,并不是最高的。TNR只是反映了負例的識別率,并不代表整體性能。一般來說,TNR變高時,TPR會變低,因為TNR的提高是以犧牲TPR為代價,如圖1所示。而對于心衰數據,在保證整體性能的前提下,更關心的應該是指標TPR,因為希望心衰死亡案例都可以被識別出來。如果將高死亡率病人識別為低死亡率病人,那可能會耽誤病人的救治,使病人錯過最佳治療時間和治療方案。所以指標TPR的準確度比TNR更為重要,這樣更符合現實意義。

圖1 特征維度與系統性能關系圖
從圖1中,隨著特征維度的減少,TPR和TNR指標逐漸趨于穩定,平均精度AA也逐漸保持穩定。當特征維度降到20維左右,系統性能并沒有下降很多,仍保持在一個較高的水平70%以上,TPR和TNR也沒有大幅度下降的情況。根據圖2,可以得知特征維度的降低與SVM訓練時間的關系。隨著特征維度的減少,系統訓練時間會降低,最后趨于穩定。這也說明了特征選擇可以減少計算時間。有效的特征選擇會提高系統準確度,而且根據表3所示,系統維度降低到11維時,系統性能仍能達到72.38%,指標TPR也仍能達到73%。但并不是意味著特征可以無限度減少,當特征維度減少到一定值后,系統性能會下降。因為過少的特征會損失很多信息,導致分類結果準確度下降,影響系統性能。所以需要選擇一個合適的維度,既能保證系統性能,又減少了計算時間和特征維度。所選特征的維度是根據Relief算法的閾值來設置的,可以根據實際情況來定義。

圖2 特征維度與系統訓練時間關系圖
在眾多傳統特征選擇算法中,本文采用的是Relief特征選擇方法,來對心衰數據進行特征選擇。為了證明所選用的Relief特征選擇算法的有效性,將Relief與傳統的CFS和IG特征選擇算法進行對比,對比實驗基于bp-SVM分類模型。實驗結果如表4所示,結果粗體表示每個指標下最好的結果。

表4 Relief與其他特征選擇算法效果對比%
在對心衰疾病的分析和預測中,最為普遍采用的預測模型是SVM、邏輯回歸、決策樹、K近鄰,正如相關工作中所示案例,一般情況下,SVM模型更優。為了證明本文預測系統采用的bp-SVM模型的正確性和有效性,將bp-SVM與邏輯回歸(LR)、決策樹(DT)、K近鄰(KNN)模型進行對比。bp-SVM和對比算法都是基于特征選擇后的數據樣本上,Relief閾值為0.02。算法參數如下:K-NN,K的取值集合為{1,3,5,7,9},取其中最好結果作為K近鄰的最好結果,bp-SVM參數見5.1節中參數設置。結果如表5所示,粗體為最好結果。

表5 bp-SVM與其他模型的效果對比
由表4可以看出,Relief特征選擇方法相對于CFS和IG效果更好一些。雖然IG在負類識別率TNR上占很大優勢,但是在TPR上表現不佳。在整體性能AA上,IG與CFS表現相似。而Relief方法在TPR和AA標準上都是表現最優。實驗證明了Relief特征選擇方法在心衰數據集上的有效性。此外,由表5可以看出,bp-SVM相比較于K-NN、LR、DT,預測效果最好。bp-SVM在平均分類精度AA上比K-NN和LR高出了約12%,比DT高出了26.96%,這體現了bp-SVM模型的優越性。而且,本文的實驗數據是不平衡數據集,所以更加關注正例的識別率TPR,希望能識別出高死亡率的心衰病人,以便醫生能及時采取醫療措施,提高病人的治愈率。雖然就負例識別率TNR而言,bp-SVM比K-NN和邏輯回歸模型低了約10%,和決策樹模型相當,但是bp-SVM較其他對比算法,在正例識別率更加準確,大大超越了K-NN、LR和DT。所以bp-SVM在總體性能AA上仍然保持了它的良好性能。實驗證明采用bp-SVM模型構建心衰死亡率預測系統可以在一定程度上提高預測準確率。
本文根據真實數據和需求,提出了一個死亡率預測系統,可以預測心衰病人本次住院后的30天內的死亡率。系統性能可以達到80.81%,該系統可以應用到心衰死亡率的預測。系統預測心衰病人的死亡率,醫生可以根據死亡率的高低,提出有針對性的治療方案以便提高臨床診斷。同時也避免了心衰病人潛在的死亡危險不能及時被發現而導致錯失治療時間。同時,該系統用少量的特征就可以達到較高的準確率,減少了計算時間,讓系統預測更加快速。因此這個心衰預測系統在現實生活中是有價值和實際意義的。