謝 爽 范會敏
(西安工業(yè)大學計算機科學與工程學院 陜西 西安 710021)
高血壓和高血脂是常見慢性病,早期一般沒有癥狀,是心腦血管疾病的主要危險因素[1]?!?017中國心血管病報告數(shù)據(jù)》中指出,雙高疾病對我國公民的危害日益加劇,人們對雙高的預(yù)防治療手段的需求也越來越迫切。
在如今信息發(fā)展迅速的現(xiàn)代化社會中,醫(yī)療數(shù)據(jù)大部分都以電子醫(yī)療病歷的形式記錄,其中包含診斷、癥狀、檢查和化驗等信息,具有維度高、稀疏的特點。針對醫(yī)療數(shù)據(jù)維度高、稀疏的特點,一些疾病預(yù)測模型被提出。
傳統(tǒng)的疾病風險預(yù)測主要基于Cox比例風險回歸模型及邏輯回歸模型。Cox比例風險模型是由英國統(tǒng)計學家D.R.Cox提出的一種半?yún)?shù)回歸模型。Wang等[2]利用Cox模型,基于弗雷明漢心臟研究來建立房顫患者發(fā)生腦卒中及死亡的風險預(yù)測模型。該研究腦卒中預(yù)測模型和腦卒中或死亡預(yù)測模型的H-L統(tǒng)計量分別為7.6和6.5,AUC分別為0.66、0.70。
盡管傳統(tǒng)的回歸方法在疾病預(yù)測方面有廣泛的應(yīng)用,但這些方法在預(yù)測準確度和模型可解釋方面仍有提升的空間。近年來,機器學習領(lǐng)域的特征選擇和有監(jiān)督學習建模方法越來越多地用于疾病預(yù)測問題。
Khosla等[3]采用了特征選擇和機器學習方法來預(yù)測5年內(nèi)的腦卒中發(fā)生率。該研究的數(shù)據(jù)來自心血管健康研究數(shù)據(jù)集,采用了四種方法進行缺失值填充,包括均值填充、中位數(shù)填充、線性回歸,及期望最大化方法;特征選擇方法包括前向特征選擇、L1正則化和保守均值特征選擇;建模時嘗試了支持向量機和基于邊緣的刪失回歸方法。使用L1正則化邏輯回歸進行特征選擇,然后使用支持向量機進行預(yù)測,采用十折交叉驗證的平均測試AUC(Area Under Curve)為0.764,優(yōu)于L1正則化Cox模型。將各種特征選擇算法與預(yù)測算法相結(jié)合的平均顯示,保守均值和基于邊緣的刪失回歸相結(jié)合在AUC評價標準中能達到0.777,為性能最佳的結(jié)果。
Choi等[4]在心衰的預(yù)測上率先使用了基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的方法。針對單個臨床事件的建模采用了自然語言理解中常用的one-hot向量的方式,把任何一個臨床事件都表示成N維的向量,但向量的最后一位為事件發(fā)生時間距離預(yù)測時間的間隔,類似于一個時間戳。使用門循環(huán)單元從每個輸入的臨床事件向量計算相應(yīng)的隱狀態(tài),在最終的隱狀態(tài)上應(yīng)用邏輯回歸模型計算最后的心衰風險概率。與線性回歸、支持向量機和K近鄰算法等多種經(jīng)典回歸或機器學習方法實驗對比后發(fā)現(xiàn),基于RNN方法的預(yù)測AUC有提高。
綜上所述,由于電子病歷數(shù)據(jù)高維度、高稀疏的特點,疾病預(yù)測研究的重點主要在特征處理方面。因此,本文提出一種Word2vec和卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合的特征提取方法(WV-CNN),從特征處理方面入手進行雙高疾病的預(yù)測研究。
使用Word2vec進行詞語表示,得到的詞向量為低維稠密性實數(shù),并且很好地保留了語義信息[5],最后利用卷積神經(jīng)網(wǎng)絡(luò)從局部到全局相關(guān)性特征的學習能力,對大量文本向量進行深度學習,將文本特征中的重要信息提取出來,以提高預(yù)測效果。
由于針對醫(yī)學體檢領(lǐng)域的文本特征提取,需要采用該領(lǐng)域的文本進行向量庫的訓練,得出的詞向量更貼合該問題領(lǐng)域。具體詞向量庫構(gòu)建流程如圖1所示。
圖1 詞向量庫構(gòu)建
先對文本Di進行分詞處理Di=[wi,w2,…,wn],n為詞語個數(shù)。再根據(jù)Word2vec詞向量庫把分詞后的文本替換成低維數(shù)值向量Wi=[Vi1,Vi2,…,Vik],k為詞向量的維度,如圖2所示。
圖2 詞向量表示
經(jīng)過上述處理過程使文本特征從高維度、高稀疏數(shù)據(jù),變成了類似圖像的連續(xù)稠密矩陣數(shù)據(jù)表示,并且進一步作為下一步卷積神經(jīng)網(wǎng)絡(luò)的輸入。這種文本向量化表示免去了一般特征處理的繁瑣工作,讓文本原始信息得到了最大限度的保留。
卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,有輸入層、卷積層、池化層、全連接層四層,特征以詞向量的形式輸入到神經(jīng)網(wǎng)絡(luò)中,經(jīng)過卷積層、池化層提取出特征中的重要信息,最后再經(jīng)過全連接層輸出特征。
圖3 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
經(jīng)過Word2vec詞向量,令xi∈Rk為對應(yīng)于文本特征中的第i個詞的k維詞向量,將這些詞向量作為卷積神經(jīng)網(wǎng)絡(luò)的輸入。長度為n的文本表示為:
x1:n=x1⊕x2⊕…⊕xn
(1)
式中:⊕是連接運算符;xi:i+j指的是詞向量xi,xi+1,…,xi+j的連接。
卷積中卷積核w∈Rhk作用在h個詞向量上以產(chǎn)生新特征,h為卷積步長。卷積核掃過詞向量xi:i+h-1生成特征ci,計算式表示為:
ci=f(w·xi:i+h-1+b)
(2)
式中:b∈R是偏置項;f(·)是激勵函數(shù)。文本表述中,單個主語、主語+謂語、主語+謂語+賓語三種文本表述組合就能將一個句子的主要意思簡潔地表述清楚。卷積層中,考慮到上述三種文本表述組合,卷積核大小分別為1個詞向量、2個詞向量和3個詞向量三種。
使用非線性函數(shù)作為激勵函數(shù),使神經(jīng)網(wǎng)絡(luò)表達能力更加強大,不再是輸入的線性組合,幾乎可以逼近任意函數(shù),以協(xié)助表達復(fù)雜特征。常見的激勵函數(shù)有Sigmoid函數(shù)、tanh函數(shù)和ReLU函數(shù)等,本研究中使用tanh函數(shù):
(3)
卷積核作用于文本{x1:h,x2:h+1,…,xn-h+1:n}中產(chǎn)生特征映射,表示為:
c=[c1,c2,…,cn-h+1]c∈Rn-h+1
(4)
然后,在特征映射上進行最大化池化操作,并取最大值c=max{c}作為對應(yīng)于該特定卷積核的特征,這是為了在特征映射找到最據(jù)代表性的特征,最后再經(jīng)過全連接層直接輸出特征。卷積神經(jīng)網(wǎng)絡(luò)的具體參數(shù)設(shè)置如表1所示。
表1 卷積神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置
基于數(shù)據(jù)挖掘的疾病預(yù)測的步驟包括數(shù)據(jù)集的預(yù)處理、特征工程、使用機器學習算法訓練預(yù)測模型,然后使用測試集驗證模型的效果。數(shù)據(jù)預(yù)處理是指對訓練集和測試集中的特征規(guī)范化,如科學計數(shù)法表示數(shù)據(jù)的處理、數(shù)值與字符混合數(shù)據(jù)的處理等。數(shù)據(jù)中含有文本型數(shù)據(jù),運用特征提取方法將文本型數(shù)據(jù)中的關(guān)鍵信息提取出來并轉(zhuǎn)化為向量,作為新的特征合并到數(shù)據(jù)集中,然后利用預(yù)測算法預(yù)測出雙高的具體數(shù)值。
為了驗證WV-CNN的效果,從輸入數(shù)據(jù)量級和預(yù)測算法等幾個不同角度對算法進行對比實驗。
在訓練過程中分別使用Doc2vec算法和WV-CNN算法進行特征處理,將處理后的數(shù)據(jù)特征輸入到訓練后的模型中,對測試集進行預(yù)測,得到對每個個體的收縮壓、舒張壓、甘油三酯、高密度脂蛋白膽固醇和低密度脂蛋白膽固醇五項指標的預(yù)測結(jié)果,并與實際檢測值進行對比。對比實驗設(shè)計如圖4所示。
圖4 實驗設(shè)計
實驗使用均方誤差MSE作為評價指標,其第j項的計算式為:
(5)
(6)
本實驗采用的數(shù)據(jù)集是由體檢中心提供的共10 000條個人體檢信息數(shù)據(jù)集,涉及BMI指數(shù)、心電圖、B超、血液檢驗和尿液檢驗等一系列數(shù)值型和文本型數(shù)據(jù)特征。實驗中,對數(shù)據(jù)集按9 ∶1的比例分為訓練集和測試集,再在訓練集中以9 ∶1的比例分為訓練集和驗證集。其中,訓練集的作用是計算梯度并更新權(quán)重;驗證集的作用為確定正確的超參數(shù),以避免過擬合現(xiàn)象的發(fā)生;測試集的作用為給出實際的評價指標。
在疾病預(yù)測中,樣本數(shù)據(jù)的大小不僅影響預(yù)測的效率還對預(yù)測的準確率有著極大的影響。樣本數(shù)據(jù)不是越大越好,對于每一個具體問題,都有其最合適的樣本數(shù)據(jù)。為驗證在不同樣本數(shù)據(jù)輸入下Doc2vec算法和WV-CNN算法的MSE值變化,本實驗分別在支持向量機(SVM)和梯度提升樹(GBDT)算法下進行對比實驗,結(jié)果如圖5和圖6所示。
圖5 SVM算法預(yù)測
圖6 GBDT算法預(yù)測
實驗結(jié)果表明,相對于其他預(yù)測算法,WV-CNN算法的MSE值在不同的數(shù)量級輸入下基本都要低于Doc2vec算法。
由圖6可見,在輸入樣本數(shù)量在500和1 000左右時,Doc2vec算法的MSE值比WV-CNN算法略微高一些,分析原因主要是因為輸入樣本數(shù)量太少,導致經(jīng)卷積神經(jīng)網(wǎng)絡(luò)提取到特征信息有限。在圖5和圖6中,隨著輸入樣本數(shù)量的增加,MSE值都呈下降趨勢。此外,在輸入樣本數(shù)量為8 000或8 500左右時MSE值較低,且之后MSE值趨于穩(wěn)定。
為了驗證WV-CNN方法在不同預(yù)測算法下的有效性,本實驗分別選取線性回歸、支持向量機、隨機森林、梯度提升樹和極端梯度提升(XGBoost),在輸入樣本數(shù)量為8 000的相同環(huán)境下進行對比實驗,實驗結(jié)果詳細數(shù)據(jù)如表2所示。
表2 Doc2vec方法與WV-CNN方法在不同預(yù)測算法下的對比實驗結(jié)果
實驗結(jié)果表明,在使用不同的預(yù)測算法情況下,本文算法的MSE值都要低于Doc2vec算法??梢钥闯?,支持向量機算法相對于其他算法的預(yù)測效果而言最差,但經(jīng)過WV-CNN算法得到的MSE值相比Doc2vec算法下降了0.314 2,經(jīng)過特征提取改進后預(yù)測效果提升明顯。相對于其他算法,極端梯度提升算法的MSE值變化不明顯,使用了WV-CNN算法特征提取后MSE值下降了0.081 7,但預(yù)測效果最穩(wěn)定。綜合比較,經(jīng)WV-CNN算法提取文本特征后再使用極端梯度提升算法預(yù)測獲得的MSE值最小,達到了0.025 4。
為了驗證WV-CNN算法對文本特征提取的有效性,本文進行了一系列對比實驗,分別從輸入數(shù)據(jù)數(shù)量級、預(yù)測算法兩方面進行實驗,采用MSE值作為評價指標,得到了多組實驗結(jié)果,結(jié)果數(shù)據(jù)匯總?cè)绫?所示。
表3 實驗結(jié)果匯總
實驗結(jié)果表明,本文算法的特征提取能力優(yōu)于Doc2vec算法。本文算法在不同輸入數(shù)據(jù)數(shù)量級的MSE值平均降低了0.192 4,在各個不同預(yù)測算法中MSE值平均降低了0.245 4。經(jīng)過上述對比實驗可以得出,在雙高疾病預(yù)測中,WV-CNN算法的特征提取能力在不同輸入數(shù)據(jù)數(shù)量級和不同預(yù)測方面都有很好的表現(xiàn)。
在雙高疾病預(yù)測過程中,本文提出了一種基于WV-CNN的特征提取方法,對體檢中心提供體檢數(shù)據(jù)進行特征處理,并且使用Doc2vec算法作為對比組對特征進行處理。經(jīng)過不同數(shù)量級樣本數(shù)據(jù)和不同預(yù)測算法兩個對比實驗,結(jié)果表明:基于WV-CNN的特征提取在疾病預(yù)測方面有較低的誤差率,具有不錯的效果。盡管如此,基于WV-CNN的雙高指標預(yù)測方法在疾病預(yù)測方面仍然不夠完善,下一步將繼續(xù)完善預(yù)測模型。今后研究中,將基于WV-CNN的低誤差率預(yù)測,根據(jù)對雙高影響程度大小對體檢項目進行排序,從數(shù)據(jù)分析的角度得到導致雙高的原因,醫(yī)護人員可以以此調(diào)整雙高治療方案。