劉紀敏,張楷第,文龍日,賈全秋,謝創(chuàng)森,王 菲
(1.山東科技大學智能裝備學院,山東泰安 271000;2.山東科技大學計算機科學與工程學院,山東青島 266000;3.泰山科技學院大數(shù)據(jù)學院,山東泰安 271000)
隨著高科技的發(fā)展以及個人健康管理需求的不斷增加,人類進入了長壽時代,但高危疾病導致的突然死亡給很多家庭帶來巨大的痛苦。據(jù)統(tǒng)計,山東省居民主要死亡原因中排名前三位的疾病分別為心血管疾病、惡性腫瘤和腦血管疾病。從年齡組來看,不同年齡組死因排序有所不同,14 歲以下兒童及青少年組排名前三位的死因分別為傷害、惡性腫瘤和先天異常,占該年齡組死亡人數(shù)的74.28%;15-44 歲青壯年組排名前三位的死因分別為傷害、惡性腫瘤和心血管病,占75.97%;45 歲以上中老年人組排名前三位的死因分別為心血管疾病、惡性腫瘤和腦血管疾病,占88.07%。通過分析,心血管疾?。–ardiovascular Disease,CD)導致的死亡率達到20%[1]。因心血管疾病與日常飲食習慣、運動習慣有著密切關聯(lián),所以早期發(fā)現(xiàn)發(fā)病影響因素并進行預防與治療對降低疾病發(fā)病率具有重要意義。雖然現(xiàn)代醫(yī)學技術發(fā)展迅速,但是針對高危疾病發(fā)病可能性預測與預防方面的技術仍然比較薄弱,缺乏標準的預測模型以及有效的疾病預測服務。
近年來,通過整合信息通信技術(Information and Communication Technology,ICT)與醫(yī)學技術預測疾病發(fā)病率并提高預測結果的精準度成為疾病預測領域研究的焦點。如Jabbar 等[2]提出結合K-最近鄰算法(K-Nearest Neighbor,KNN)與遺傳算法的分類算法提高心血管疾病診斷精準性;Mohan 等[3]對近年來心臟病預測相關研究內(nèi)容進行了匯總;Choudhary 等[4]使用數(shù)據(jù)挖掘算法、決策樹、樸素貝葉斯、神經(jīng)網(wǎng)絡、關聯(lián)分類和遺傳算法從數(shù)據(jù)集中預測與分析心臟病。研究人員在一個數(shù)據(jù)集上進行了一項實驗,使用神經(jīng)網(wǎng)絡和混合智能技術建立一個模型,結果表明,混合智能技術可提高預測精度。Sharma 等[5]在心臟病數(shù)據(jù)倉庫中使用K-均值聚類算法提取與心臟病相關數(shù)據(jù),并應用MAFIA(Maximal Frequency Item Set Algorithm)算法計算對心臟病發(fā)作預測有重要意義的頻繁模式權重;Fadini等[6]將年齡、血壓、血管造影報告等13 個變量輸入神經(jīng)網(wǎng)絡模型中以預測心臟病發(fā)病率,并證明了該模型的可行性;Yan 等[7]提出利用神經(jīng)網(wǎng)絡和遺傳算法預測疾病的模型,并通過實驗證明了該模型可提高疾病預測精準度;Guru 等[8]提出在確定疾病影響因素的前提下,利用神經(jīng)網(wǎng)絡、反向傳播算法進行疾病預測的模型。
研究發(fā)現(xiàn),雖然這些疾病預測模型在一定前提條件下達到了疾病預測的目的,但數(shù)據(jù)特征和維度過多等原因影響了預測模型的時效性和精準度。研究人員大多注重提升疾病預測的正確率,而忽略了疾病預測的時效性,但時效性在臨床診斷中是極為重要的因素。過多的數(shù)據(jù)特征和維度在數(shù)據(jù)處理過程中會增加預測模型的結構復雜度及模型訓練時間復雜度,導致訓練出的模型在預測疾病時的時效性不強。
因此,在保證預測準確率的前提下,為提高疾病預測時效性,本文首先提出基于國家標準查體報告與心血管疾病影響因素的標準化心血管疾病影響因素提取方法,以提高采集醫(yī)療數(shù)據(jù)的標準性和通用性;其次,提出基于隨機森林與Relief 算法的疾病影響因素特征選擇方法,以降低疾病預測模型的結構復雜度、提高時效性,并提出基于誤差反向傳播網(wǎng)絡的心血管疾病預測模型,以提高心血管疾病預測精準度;最后,對傳統(tǒng)預測模型與改進模型的實驗結果進行比較分析,證明了改進模型的優(yōu)越性。
目前國內(nèi)醫(yī)療機構的醫(yī)療數(shù)據(jù)管理系統(tǒng),如Hospital-InformationSystem(HIS)、Electronic Medical Record(EMR)等并未實現(xiàn)規(guī)范化與標準化。為解決這一問題,本文結合國家標準查體數(shù)據(jù)模型與山東省解放軍第九六〇醫(yī)院查體中心個人查體報告模型建立規(guī)范化、標準化的心血管疾病樣本數(shù)據(jù)模型。在心血管疾病發(fā)病影響因素特征選擇中,利用隨機森林和Relief 算法以更準確地選取影響因素。在心血管疾病預測方面,利用神經(jīng)網(wǎng)絡(Artificial Neural Networks,ANN)和誤差反向傳播(Back Propagation,BP)神經(jīng)網(wǎng)絡模型對心血管疾病的發(fā)病可能性進行研究。
本文利用國家標準查體數(shù)據(jù)模型提出個人查體報告書,并基于該報告書建立心血管疾病發(fā)病相關因素標準化數(shù)據(jù)模型。根據(jù)個人查體報告書導出心血管疾病相關特征數(shù)據(jù)如表1 所示。
Table 1 The characteristic data related to cardiovascular diseases表1 心血管疾病相關特征數(shù)據(jù)
在心血管疾病發(fā)病影響因素較多的前提下,有必要在查體數(shù)據(jù)預處理特征集合中選擇有效特征以決定發(fā)病影響因素權重。特征選擇是從經(jīng)過預處理的特征集合中選擇有效特征,以降低數(shù)據(jù)維度、減少計算量。常見的特征選擇方法包括方差過濾、相關系數(shù)、遞歸特征消除、模型選擇等,本文采用隨機森林與Relief 相結合的算法進行發(fā)病影響因素特征選擇。
隨機森林由多個決策樹構成,決策樹中每一個節(jié)點都是關于某個特征的條件,從而將數(shù)據(jù)集按照不同響應變量一分為二,利用不純度可以確定節(jié)點(最優(yōu)條件)。當訓練決策樹時,可計算出每個特征減少了多少樹的不純度。對于一個決策樹森林而言,可計算出每個特征平均減少了多少不純度,并把平均減少的不純度作為特征選擇值。隨機森林具有準確率高、易于使用等優(yōu)點[9-11]。
Relief 算法的基本思路為從訓練集D 中隨機選擇一個樣本R,然后從與R 同類的樣本中尋找k 點的最近鄰樣本H,并從與R 不同類的樣本中尋找k 最近鄰樣本M,最后按照公式更新特征權重,通過篩選屬性值達到降維的目的。為解決隨機森林求權重過程中存在的會將權重大的屬性賦予低權重值的問題,引入Relief 算法。Relief 算法可篩掉中、低影響度的屬性,而不會影響中、高影響度的屬性,從而避免在隨機森林中將影響度高的醫(yī)療屬性篩掉。但Relief 對中、低影響度的屬性區(qū)分不明顯,僅對高影響度的屬性區(qū)分明顯,因此選取隨機森林中權重值高的屬性加以保留[12-14]。
本文用于預測心血管疾病的醫(yī)療數(shù)據(jù)集是從UCI 的機器存儲庫中獲得的,為部分人的體檢數(shù)據(jù),共包含2 121 例樣本,其中包括13 條醫(yī)療屬性以及1 條標簽屬性。13 條醫(yī)療屬性分別為:年齡、性別、胸部疼痛類型、靜息血壓、膽固醇、空腹血糖>120mg/dl、靜息心電圖測量、最高心跳率、運動誘發(fā)心絞痛、運動相對于休息引起的ST 抑制、運動ST 段的峰值斜率、主要血管數(shù)目、血液疾病。
常用于研究疾病在群體中產(chǎn)生與發(fā)展趨勢的預測模型有回歸預測模型、時間序列預測模型、馬爾科夫預測模型、灰色系統(tǒng)預測模型等。由于BP 神經(jīng)網(wǎng)絡具有學習能力,能夠優(yōu)化學習進度,在信號正向傳播過程中,輸入層將數(shù)據(jù)傳送給隱層,隱層將信息傳送給輸出層,若輸出的信息不正確,則將輸出結果轉化為輸入數(shù)據(jù)再反饋給隱層并重新輸入。在反向傳遞時,根據(jù)整體誤差不斷修正各個連接權值和閾值,使得最終整體誤差最小,或達到預設精度后再進行預測[15-17]。
特征選擇是指從經(jīng)過預處理的特征集合中選擇有效特征,在降低數(shù)據(jù)維度的同時,能夠減少計算量。但隨機森林的特征選擇雖然在特征變量特別多的數(shù)據(jù)集中表現(xiàn)良好,但在具有較少屬性值的醫(yī)療數(shù)據(jù)分析中效果不佳,其會對各種屬性賦予不等同于其重要性的權值,因此單純使用隨機森林會導致重要屬性被忽略。為此,本文引入Relief 算法,雖然Relief 算法對于中、低影響度的屬性區(qū)分不明顯,但對于高影響度的屬性區(qū)分明顯。兩種算法的結合使得隨機森林避免了重要屬性的缺失,也彌補了Relief算法無法區(qū)分中、低影響度屬性的缺點,從而在保證重要屬性不丟失的情況下,對各種屬性按其重要程度賦予權值。
2.2.1 屬性指標定義
實驗中所使用的心血管疾病相關屬性信息如表2 所示。
Table 2 Cardiovascular disease related attributes表2 心血管疾病相關屬性
屬性指標中存在如性別、胸部疼痛類型、空腹血糖、靜息心電圖測量、運動ST 段峰值斜率等文本型指標需進行文本轉換,對于二值類數(shù)據(jù),例如在性別特征中,包含男性和女性兩種取值,可將女性映射為0,男性映射為1。在空腹血糖指標中,當空腹血糖大于120mg/dl 時,將其映射為0;當空腹血糖小于120mg/dl 時,將其映射為1。同理,在運動性心絞痛屬性中,當屬性值為真時,將其映射為0,反之映射成1。對于多值型屬性,如在胸部疼痛類型的數(shù)據(jù)特征中,可根據(jù)疼痛由重到輕,將典型心絞痛映射為0,非典型心絞痛映射為1,非心絞痛疼痛映射為2,無臨床癥狀映射為3。同理,在靜息心電圖測量、ST 段坡度值以及地中海貧血嚴重程度屬性中,將其映射成0~3,文本屬性數(shù)據(jù)化后的處理結果如表3 所示。
2.2.2 數(shù)據(jù)歸一化處理
數(shù)據(jù)集中不同屬性值的數(shù)量級與物理含義往往不一致,為加快訓練速度,在訓練樣本進入訓練模型之前,往往需要對訓練數(shù)據(jù)進行歸一化處理,使不同類型的屬性值均在同一數(shù)量級,以對各屬性值進行綜合對比評價。由于每個特征屬性之間具有不同量綱,針對連續(xù)變化的數(shù)值型數(shù)據(jù),需要對其進行數(shù)值歸一化處理,以消除不同量綱對各屬性綜合性能的影響。目前,常見的歸一化方法有最大最小值歸一化、零均值歸一化等,本文采用標準差標準化(Standard Scale)方法,使得處理后的數(shù)據(jù)符合標準正態(tài)分布,即均值為0,標準差為1,其轉化函數(shù)為。其中,μ為所有樣本數(shù)據(jù)均值,σ為所有樣本數(shù)據(jù)標準差。與最大最小值歸一化、零均值歸一化不同,標準差標準化方法是針對每一個特征維度進行的,而不是針對樣本。處理結果如表4 所示。
Table 3 The results processed after the datamation of text attributes表3 文本屬性數(shù)據(jù)化后處理結果
Table 4 Results after normalization of index data表4 指標數(shù)據(jù)歸一化后結果
2.2.3 特征選取
在大數(shù)據(jù)時代,海量的結構化與非結構化數(shù)據(jù)為醫(yī)療數(shù)據(jù)處理增加了一定難度,過多的數(shù)據(jù)特征和維度在數(shù)據(jù)處理中會增加BP 數(shù)據(jù)網(wǎng)絡的結構復雜度,也會加大模型訓練的時間復雜度,使訓練出的模型無法為心血管疾病提供更準確的預測。要通過較少的指標屬性達到理想的預測精度,可運用屬性降維算法來實現(xiàn)。從眾多醫(yī)療指標中選擇與心血管疾病相關性較強的一些指標,同時過濾掉不相關及冗余指標。分別采用隨機森林以及Relief F 求各個醫(yī)療屬性的權重及其排序,結果如表5 所示。
Table 5 The weights of medical attributes and their order表5 醫(yī)療屬性權重及其排序
隨機森林基于不純度的排序結果非常鮮明,除得分最高的幾個特征外,其余特征得分急劇下降。從表中可以看到,得分第5 的特征權重值比得分第1 的特征權重值小一倍,而其他特征選擇算法下降沒有這么劇烈。隨機森林是一種非常流行的特征選擇方法,其易于使用,一般不需要特征工程、調(diào)參等繁瑣的步驟。但是利用隨機森林求權重存在兩個缺陷,一是重要特征有可能得分很低,二是這種方法對特征變量類別越多的特征越有利[17]。因此,僅使用隨機森林進行特征選擇會將重要的醫(yī)療屬性賦予低權重值,導致重要的醫(yī)療屬性被篩掉,從而影響對疾病的預測,大大降低了預測精度[18]。為克服隨機森林的缺陷,引入Relief F 算法可篩掉中、低影響度的屬性,而不會影響中、高影響度的屬性。由于在隨機森林訓練中會將權重大的屬性賦予低權重值,而Relief F 對中低影響度的屬性區(qū)分不明顯,對高影響度的屬性區(qū)分明顯,因此保留隨機森林中權重值靠前的屬性,分別是cp、thalach、thal、oldpeak、age、trestlops,再取在Relief F 算法中權重排名前5 的屬性,分別是sex、restecg、thal、exang、ca。由Relief F 算法訓練結果可發(fā)現(xiàn),sex 及restecg 屬性被賦予了較高權重值,而這兩個屬性在隨機森林訓練中則被賦予了較低屬性值,因此保留sex與restecg 屬性。最終保留的屬性為:cp、sex、thalach、restecg、thal、oldpeak、exang、age、ca、restbps。
2.2.4 神經(jīng)網(wǎng)絡層數(shù)
由于三層神經(jīng)網(wǎng)絡結構簡單、易于實現(xiàn),因此疾病預測系統(tǒng)選擇三層結構進行相關測試,網(wǎng)絡中層數(shù)都被設定為1。
2.2.5 輸入層與輸出層節(jié)點數(shù)確定
本文采用神經(jīng)網(wǎng)絡技術,首先要確定各神經(jīng)網(wǎng)單元數(shù)。神經(jīng)網(wǎng)絡輸入節(jié)點就是心臟病預測時的相關指標數(shù)據(jù),本文所選數(shù)據(jù)通過特征選擇算法之后確定了10 個特征屬性。所以,確定輸入層節(jié)點數(shù)為10,輸出層節(jié)點數(shù)為1。
2.2.6 隱層神經(jīng)單元數(shù)
隱層單元數(shù)選擇是一個十分復雜的問題,也是神經(jīng)網(wǎng)絡研究的熱點問題之一。隱層節(jié)點數(shù)的確定與問題要求、輸入輸出單元數(shù)量及輸入輸出單元分布都有直接關系。節(jié)點數(shù)太多會增加訓練時間,其中隱層神經(jīng)單元數(shù)可自行設定。一般而言,問題越復雜,需要的隱層單元數(shù)越多,隱層單元數(shù)越多,則越容易收斂,但隱層單元過多會增加計算量[19]。本文根據(jù)如下規(guī)則確定隱層神經(jīng)元數(shù)目:隱層神經(jīng)元數(shù)目大于輸入層神經(jīng)元與輸出層神經(jīng)元數(shù)目總和的一半,小于輸入層神經(jīng)元與輸出層神經(jīng)元數(shù)目總和[20]。對于不同的隱層,網(wǎng)絡識別率也不同。因此,統(tǒng)計出不同隱層神經(jīng)元個數(shù)對應的網(wǎng)絡識別正確率,如圖1 所示。
2.2.7 學習率M
較高的學習率會導致網(wǎng)絡誤差較大,或呈現(xiàn)不規(guī)則離散狀態(tài),學習率過低會降低網(wǎng)絡訓練效率,但能保證收斂于某個極小區(qū)間。因此,為使訓練過程收斂速度快且較穩(wěn)定,通常在0.08~0.1 區(qū)間取值[21-22]。經(jīng)反復多次驗證后,將識別率高的平均值篩選出來。通過研究得出結論,當起始學習率取0.08 時,網(wǎng)絡所用時間越少,收斂速度越快。因此,網(wǎng)絡模型將原始識別率設置為0.08,如圖2 所示。
Fig.1 Correct rate of BP neural network with different number of hidden layer neurons圖1 不同隱層神經(jīng)元個數(shù)對應的BP 神經(jīng)網(wǎng)絡正確率
Fig.2 Training time at different learning rates圖2 不同學習率下的訓練時間
在輸出部分,BP 神經(jīng)網(wǎng)絡的訓練函數(shù)trainscg 值域一般區(qū)間為[-1,1],由于本文樣本數(shù)據(jù)的特殊性,都是0 和1,所以對于輸出的數(shù)據(jù),將輸出值大于等于0.6 的數(shù)據(jù)賦值為1,將輸出值小于0.6 的數(shù)據(jù)賦值為0。在正確率計算部分,將訓練樣本與測試樣本的每一位逐一進行比較,若一致即視為正確,若不一致則視為錯誤。
本文將經(jīng)過特征選擇篩選后的屬性帶入BP 模型預測結果,并與直接使用BP 神經(jīng)網(wǎng)絡算法進行預測的結果相比較。改進后的模型運行速度得到了有效提升,大大縮短了運行時間,提高了時效性。兩個模型運算時間對比如圖3所示。
Fig.3 Comparison between operation time of the two models圖3 兩個模型運算時間對比
在圖3 中,分別采用500、1 000、1 500 以及2 000 個例子作比較,系列一為直接使用BP 神經(jīng)網(wǎng)絡進行心血管疾病預測所耗費的時間,系列二為采用與特征選擇相結合的BP神經(jīng)網(wǎng)絡進行心血管疾病預測所耗費的時間。通過對比發(fā)現(xiàn),采用與特征選擇相結合的BP 神經(jīng)網(wǎng)絡模型可以大大提升預測速率,從而增強了數(shù)據(jù)從上傳到診斷的時效性,加快了診斷速率。
為防止過于追求時效性而忽略準確性的情況發(fā)生,圖4、圖5 分別為采用經(jīng)過特征選擇的BP 神經(jīng)網(wǎng)絡與沒有經(jīng)過特征選擇的BP 神經(jīng)網(wǎng)絡預測心血管疾病的混淆矩陣。
Fig.4 Confusion matrix without feature selection圖4 沒有經(jīng)過特征選擇的混淆矩陣
Fig.5 Confusion matrix selected by feature selection圖5 經(jīng)過特征選擇的混淆矩陣
在圖4 與圖5 中,混淆矩陣是對分類結果的矩陣表示。左上方單元格表示當樣本實際為真時被分類為真的樣本數(shù)(即真實陽性),右下方單元格表示當樣本實際為假時被分類為假的樣本數(shù)。其他兩個單元(左下方單元格和右上方單元格)表示錯誤分類的樣本數(shù)。具體來說,左下方單元格表示樣本實際為真(即假陰性)時分類為假的樣本數(shù),右上方單元格表示實際為假(即假陽性)時被分類為真的樣本數(shù)。一旦構建了混淆矩陣,即可輕松計算出分類精度、靈敏度和特異性。分類精度=(TP+TN)/(TP+FP+TN+FN);靈敏度=TP/(TP+FN);特異性=TN/(TN+FP)。其中,TP、TN、FP 和FN 分別表示真陽性、真陰性、假陽性和假陰性。每個模型是根據(jù)分類精度、靈敏度以及特異性進行評估的。對于每種算法,發(fā)現(xiàn)沒有經(jīng)過特征選擇的BP 神經(jīng)網(wǎng)絡分類精度為98.68%,靈敏度為98.78%,特異性為98.56%。經(jīng)過特征選擇的BP 神經(jīng)網(wǎng)絡分類精度為98.68%,靈敏度為98.78%,特異性為98.56%。
通過分析可以得到,經(jīng)過特征選擇后的BP 神經(jīng)網(wǎng)絡可在保持準確率的同時,極大地提高時效性。
本文應用基于隨機森林與Relief 的特征選擇方法對心血管疾病屬性進行權重排序,篩選出權重高的醫(yī)療屬性,應用BP 神經(jīng)網(wǎng)絡算法對心血管疾病數(shù)據(jù)進行預測并得到最終的患病結果,根據(jù)分類精度、靈敏度、特異性進行評估。研究結果表明,經(jīng)過特征選擇后的BP 神經(jīng)網(wǎng)絡能夠在不影響預測準確率的同時,得到更好的時效性,能準確、有效地預測心血管疾病。此外,目前的文獻提出的模型用于預測心血管事件的風險,但大多數(shù)都沒有經(jīng)過臨床驗證來比較其預測效果,所以該模型目前對臨床疾病預測方面的價值尚不可知,更不用說在實踐中加以應用。在大數(shù)據(jù)時代應該關注現(xiàn)有心血管風險模型在臨床中是否可以保證預測效果,最后對最有前途的臨床預測模型進行量化。