林 鑫,李 晉2,劉 蕾3,梁 晨,任慧玲
隨著人口老齡化和人們生活方式的轉(zhuǎn)變,糖尿病患病率呈直線上升趨勢,目前我國已成為全球糖尿病第一大國[1-2]。其中,二型糖尿病患者作為我國糖尿病人群的主體,其臨床發(fā)病率呈逐步上升趨勢,其并發(fā)癥發(fā)生率也相對較高。目前我國大約有20%~40%二型糖尿病患者并發(fā)腎病,現(xiàn)已成為慢性腎臟病和終末期腎病的重要原因[3]。二型糖尿病腎病的臨床特征主要以蛋白尿排泄異常為主,嚴(yán)重時常合并腎功能衰竭,一旦發(fā)展至終末期,將會比其他腎臟疾病的治療更加棘手[4]。因此有效的早期預(yù)測及相關(guān)的風(fēng)險預(yù)測模型研究對于二型糖尿病腎病的早期預(yù)防和降低并發(fā)率具有重要的意義。
目前臨床上對糖尿病腎病進(jìn)行診斷的依據(jù)主要包括實驗室檢查、病理學(xué)診斷、糖尿病視網(wǎng)膜病變等,診斷過程繁瑣且耗時[5]。本文以二型糖尿病腎病風(fēng)險預(yù)測為目的,對解放軍總醫(yī)院提供的糖尿病數(shù)據(jù)集進(jìn)行預(yù)處理后,依據(jù)數(shù)據(jù)集中已有的各項臨床檢查指標(biāo),選用隨機(jī)森林、BP神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)3種較為成熟的算法建立風(fēng)險預(yù)測模型,并利用查準(zhǔn)率、召回率等指標(biāo)對三種模型的性能進(jìn)行比較,以選出在二型糖尿病腎病風(fēng)險預(yù)測方面更具優(yōu)勢的算法,實現(xiàn)對二型糖尿病腎病的發(fā)生風(fēng)險進(jìn)行簡便快捷的預(yù)測。
本文數(shù)據(jù)來自國家人口與健康科學(xué)數(shù)據(jù)共享服務(wù)平臺臨床醫(yī)學(xué)科學(xué)數(shù)據(jù)中心(中國人民解放軍總醫(yī)院)提供的2009-2010年糖尿病數(shù)據(jù)集[6]。該數(shù)據(jù)集包含診斷表、尿常規(guī)檢查表、生化檢查表等記錄了患者的ID號、診斷結(jié)果、各項身體指征,以及包括尿白細(xì)胞、直接膽紅素、血清白蛋白等在內(nèi)的多項檢查結(jié)果。每個表通過患者的唯一ID號進(jìn)行關(guān)聯(lián),并對檢查表中各項檢查的正常值進(jìn)行了說明。
由于原始數(shù)據(jù)被分為多個表格,且存在缺失值、異常值等噪聲數(shù)據(jù),故需要對原始數(shù)據(jù)進(jìn)行預(yù)處理,以控制數(shù)據(jù)的完整性和準(zhǔn)確性,保證結(jié)果的準(zhǔn)確性。本文所做預(yù)處理步驟如下。
數(shù)據(jù)整合:由于原始數(shù)據(jù)被劃分為診斷、尿常規(guī)和生化等多個表格,故首先依據(jù)診斷表中的信息篩選出單純二型糖尿病及二型糖尿病并發(fā)腎病的記錄,依據(jù)這些記錄對應(yīng)的患者ID以及診斷時間從診斷、尿常規(guī)、生化檢查等表格中提取距離診斷時間最近的一次患者檢查信息,利用Excel的lookup和min函數(shù)對診斷、尿常規(guī)和生化等多個表格中的檢查數(shù)據(jù)進(jìn)行整合。
缺失值處理:數(shù)據(jù)的缺失會增加分析過程的難度,造成分析結(jié)果的偏倚,降低結(jié)果的準(zhǔn)確性。由于均值插補(bǔ)法計算量相對較小,可高效快速地對缺失值進(jìn)行處理[7],對整合后的數(shù)據(jù)進(jìn)行整理,然后分別求各列數(shù)據(jù)平均值后對空缺數(shù)據(jù)進(jìn)行填補(bǔ)。
異常值處理:在處理異常值時,利用拉依達(dá)準(zhǔn)則[8],即以給定的置信概率99.7%為標(biāo)準(zhǔn),以3倍數(shù)據(jù)列標(biāo)準(zhǔn)差為依據(jù),凡大于3倍標(biāo)準(zhǔn)差的誤差則認(rèn)為是粗大誤差,即異常值,刪除篩選出的異常值。
經(jīng)過對數(shù)據(jù)集的預(yù)處理,共得到472條二型糖尿病并發(fā)腎病數(shù)據(jù)和422條單純二型糖尿病數(shù)據(jù)。經(jīng)過預(yù)處理后得到的數(shù)據(jù)集部分截圖如圖1所示。
圖1預(yù)處理后的數(shù)據(jù)截圖(部分)
將整合各檢查表得到38個檢查指標(biāo),賦值后,利用SPSS 19.0進(jìn)行單因素邏輯回歸分析。部分賦值情況見表1。最終篩選出24個具有統(tǒng)計學(xué)意義的指標(biāo)(P<0.05),分別為年齡、尿比重、尿膽原、尿紅細(xì)胞、尿糖、尿液結(jié)晶、尿液顏色、尿蛋白、總蛋白、血清白蛋白、總膽紅素、直接膽紅素、尿素、谷氨?;D(zhuǎn)移酶、肌酐、葡萄糖、血清尿酸、總膽固醇、肌酸激酶、乳酸脫氫酶、鈣、鉀、氯化物以及無機(jī)磷。
表1 數(shù)據(jù)集字段賦值對應(yīng)表(部分)
在明確具有統(tǒng)計學(xué)意義的檢查指標(biāo)后,運用機(jī)器學(xué)習(xí)中的監(jiān)督學(xué)習(xí)方法構(gòu)建疾病風(fēng)險預(yù)測模型。其中,隨機(jī)選擇數(shù)據(jù)集的70%(共626條)作為訓(xùn)練集,30%(共268條)作為測試集。結(jié)合不同算法特點選擇的機(jī)器學(xué)習(xí)算法及相應(yīng)的參數(shù)設(shè)置如下。
隨機(jī)森林(Random Forest,RF)是一種基于集成學(xué)習(xí)的思想將多棵決策樹進(jìn)行組合從而對數(shù)據(jù)進(jìn)行分類的機(jī)器學(xué)習(xí)算法[9]。最后的分類結(jié)果是由所有決策樹進(jìn)行投票來決定的,其分類結(jié)果比C5.0決策樹模型更加精確,且具有更少的過擬合傾向[10]。本文利用R語言中的RandomForest函數(shù)進(jìn)行模型構(gòu)建,由于隨機(jī)森林對參數(shù)并不敏感,因此使用默認(rèn)參數(shù)。
BP神經(jīng)網(wǎng)絡(luò)是一種按照誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),由輸入層、隱藏層和輸出層組成,是目前應(yīng)用最為廣泛的神經(jīng)網(wǎng)絡(luò)模型之一[11]。該模型對自變量的要求比較低,可以是離散型,也可以是連續(xù)型。在BP神經(jīng)網(wǎng)絡(luò)模型的構(gòu)建中,加載R語言中的nnet包,利用nnet建立BP神經(jīng)網(wǎng)絡(luò)模型。設(shè)定神經(jīng)網(wǎng)絡(luò)的輸入節(jié)點數(shù)為24,輸出節(jié)點數(shù)為1,權(quán)值的衰減參數(shù)為0.05,通過不斷試驗改變隱藏節(jié)點個數(shù),不斷優(yōu)化神經(jīng)網(wǎng)絡(luò)模型,最終在中間隱藏節(jié)點數(shù)為10時,模型效果達(dá)到最優(yōu)。
支持向量機(jī)(Support Vector Machine,SVM)是基于統(tǒng)計學(xué)習(xí)理論、VC維理論以及結(jié)構(gòu)風(fēng)險最小化原理的一種機(jī)器學(xué)習(xí)方法[12],在小樣本、非線性以及高維模式下具有很大優(yōu)勢[13]。運用SVM算法對數(shù)據(jù)進(jìn)行處理時,利用R語言中的ksvm函數(shù)和高斯RBF核函數(shù),對數(shù)據(jù)進(jìn)行訓(xùn)練和預(yù)測。
利用R語言中相關(guān)函數(shù)包分別建立隨機(jī)森林、BP神經(jīng)網(wǎng)絡(luò)和支持向量機(jī)3種風(fēng)險預(yù)測模型,并依據(jù)7:3的比例將數(shù)據(jù)集隨機(jī)劃分為訓(xùn)練集和測試集,分別用于訓(xùn)練和對二型糖尿病并發(fā)腎病的預(yù)測。3種模型對于二型糖尿病并發(fā)腎病及單純二型糖尿病的預(yù)測結(jié)果如表2至表4所示。
表2 隨機(jī)森林預(yù)測結(jié)果
表3 BP神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果
表4 支持向量機(jī)預(yù)測結(jié)果
本文選擇查準(zhǔn)率(Precision)、召回率(Recall)、正確率以及F1值等4個度量值對各個模型的性能進(jìn)行評價,以檢測模型預(yù)測結(jié)果與真實結(jié)果之間的差異,為模型的選擇提供依據(jù)。其中,查準(zhǔn)率越高,算法的敏感性就越高;召回率越高,算法的特異性就越高;正確率越高,算法的精確度越好;而F1度量值越高則可確保召回率和查準(zhǔn)率都越高,算法的總體性能越好[14-15]。這4個度量值的公式如下。
除此之外,本文還引入ROC曲線對模型進(jìn)行評估。在ROC曲線中,橫軸為假陽性率,縱軸為真陽性率[16],ROC曲線下面積在0.5~0.7之間的準(zhǔn)確度較低,在0.7~0.9之間的準(zhǔn)確度一般,在0.9以上的準(zhǔn)確度較高,小于0.5則不符合真實情況[17]。
依據(jù)預(yù)測結(jié)果及R語言的ROCR包,分別計算這3種算法的查準(zhǔn)率、召回率、正確率、F1及ROC曲線下面積。結(jié)果如表5所示。
由表5可知,對于ROC曲線下面積,隨機(jī)森林效果最優(yōu);對于正確率,隨機(jī)森林效果最優(yōu);對于查準(zhǔn)率,支持向量機(jī)效果最優(yōu);對于召回率,隨機(jī)森林效果最優(yōu)。但由于查準(zhǔn)率和召回率是一組此消彼長的評價指標(biāo),僅用單個指標(biāo)無法對算法的效果進(jìn)行總體評價[14]。因此可以用F1值對這3種算法的綜合性能進(jìn)行評價,其結(jié)果為:隨機(jī)森林>支持向量機(jī)>BP神經(jīng)網(wǎng)絡(luò)。綜合上述指標(biāo)來看,隨機(jī)森林性能最優(yōu),這3種算法的訓(xùn)練效果均較好。
表5 3種算法的結(jié)果
由于糖尿病腎病是二型糖尿病患者常見的并發(fā)癥,目前國內(nèi)外針對二型糖尿病腎病風(fēng)險預(yù)測模型的建模已有相關(guān)嘗試,常用的建模方法主要包括邏輯回歸、分類與決策樹模型、支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)模型等[18]。本文在綜合前人研究成果的基礎(chǔ)上,結(jié)合不同算法的特點及優(yōu)缺點,充分考慮所選數(shù)據(jù)集的實際記錄情況,最終選取隨機(jī)森林、BP神經(jīng)網(wǎng)絡(luò)以及支持向量機(jī)這3種機(jī)器學(xué)習(xí)算法,并綜合多種指標(biāo)驗證其應(yīng)用于二型糖尿病腎病風(fēng)險預(yù)測時的性能,為算法的選擇提供依據(jù)。本文結(jié)合單因素邏輯回歸進(jìn)行指標(biāo)篩選,再選擇相關(guān)算法建立預(yù)測模型的方法具有普適性,其不僅可用于對二型糖尿病其他并發(fā)癥進(jìn)行預(yù)測,也可用于其他疾病的風(fēng)險預(yù)測。
本文也存在局限性。考慮到數(shù)據(jù)集的數(shù)量和質(zhì)量對模型的可靠性和可擴(kuò)展性具有重要影響[19],本文采用的數(shù)據(jù)共894例,這些數(shù)據(jù)對于建模來說還相對較少,會直接影響到模型的效果。未來將進(jìn)一步擴(kuò)大數(shù)據(jù)量并對相關(guān)算法進(jìn)行改進(jìn),使模型綜合性能得以提高。
二型糖尿病腎病由于存在復(fù)雜的代謝紊亂,一旦發(fā)展至終末期,其治療將會更加棘手,因此早期對二型糖尿病腎病進(jìn)行風(fēng)險預(yù)測具有十分重要的意義。本文利用解放軍總醫(yī)院提供的2009-2010年度糖尿病數(shù)據(jù)集,采用均值插補(bǔ)法及拉依達(dá)準(zhǔn)則對原始數(shù)據(jù)進(jìn)行預(yù)處理,得到894條數(shù)據(jù)。利用單因素邏輯回歸從原數(shù)據(jù)集的38個檢查指標(biāo)中篩選出24個有效指標(biāo)并構(gòu)建訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,同時基于隨機(jī)森林、BP神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)3種算法分別構(gòu)建二型糖尿病腎病風(fēng)險預(yù)測模型。通過利用查準(zhǔn)率、查全率、正確率、F1值以及ROC曲線下面積等5個度量值分別對這3種模型的性能進(jìn)行比較,發(fā)現(xiàn)基于隨機(jī)森林算法構(gòu)建的風(fēng)險預(yù)測模型性能最佳。本文結(jié)果可為二型糖尿病腎病的早期篩查及相關(guān)風(fēng)險預(yù)測模型的算法選擇提供參考及幫助。