林 鑫,李 晉2,劉 蕾3,梁 晨,任慧玲
隨著人口老齡化和人們生活方式的轉變,糖尿病患病率呈直線上升趨勢,目前我國已成為全球糖尿病第一大國[1-2]。其中,二型糖尿病患者作為我國糖尿病人群的主體,其臨床發病率呈逐步上升趨勢,其并發癥發生率也相對較高。目前我國大約有20%~40%二型糖尿病患者并發腎病,現已成為慢性腎臟病和終末期腎病的重要原因[3]。二型糖尿病腎病的臨床特征主要以蛋白尿排泄異常為主,嚴重時常合并腎功能衰竭,一旦發展至終末期,將會比其他腎臟疾病的治療更加棘手[4]。因此有效的早期預測及相關的風險預測模型研究對于二型糖尿病腎病的早期預防和降低并發率具有重要的意義。
目前臨床上對糖尿病腎病進行診斷的依據主要包括實驗室檢查、病理學診斷、糖尿病視網膜病變等,診斷過程繁瑣且耗時[5]。本文以二型糖尿病腎病風險預測為目的,對解放軍總醫院提供的糖尿病數據集進行預處理后,依據數據集中已有的各項臨床檢查指標,選用隨機森林、BP神經網絡、支持向量機3種較為成熟的算法建立風險預測模型,并利用查準率、召回率等指標對三種模型的性能進行比較,以選出在二型糖尿病腎病風險預測方面更具優勢的算法,實現對二型糖尿病腎病的發生風險進行簡便快捷的預測。
本文數據來自國家人口與健康科學數據共享服務平臺臨床醫學科學數據中心(中國人民解放軍總醫院)提供的2009-2010年糖尿病數據集[6]。該數據集包含診斷表、尿常規檢查表、生化檢查表等記錄了患者的ID號、診斷結果、各項身體指征,以及包括尿白細胞、直接膽紅素、血清白蛋白等在內的多項檢查結果。每個表通過患者的唯一ID號進行關聯,并對檢查表中各項檢查的正常值進行了說明。
由于原始數據被分為多個表格,且存在缺失值、異常值等噪聲數據,故需要對原始數據進行預處理,以控制數據的完整性和準確性,保證結果的準確性。本文所做預處理步驟如下。
數據整合:由于原始數據被劃分為診斷、尿常規和生化等多個表格,故首先依據診斷表中的信息篩選出單純二型糖尿病及二型糖尿病并發腎病的記錄,依據這些記錄對應的患者ID以及診斷時間從診斷、尿常規、生化檢查等表格中提取距離診斷時間最近的一次患者檢查信息,利用Excel的lookup和min函數對診斷、尿常規和生化等多個表格中的檢查數據進行整合。
缺失值處理:數據的缺失會增加分析過程的難度,造成分析結果的偏倚,降低結果的準確性。由于均值插補法計算量相對較小,可高效快速地對缺失值進行處理[7],對整合后的數據進行整理,然后分別求各列數據平均值后對空缺數據進行填補。
異常值處理:在處理異常值時,利用拉依達準則[8],即以給定的置信概率99.7%為標準,以3倍數據列標準差為依據,凡大于3倍標準差的誤差則認為是粗大誤差,即異常值,刪除篩選出的異常值。
經過對數據集的預處理,共得到472條二型糖尿病并發腎病數據和422條單純二型糖尿病數據。經過預處理后得到的數據集部分截圖如圖1所示。

圖1預處理后的數據截圖(部分)
將整合各檢查表得到38個檢查指標,賦值后,利用SPSS 19.0進行單因素邏輯回歸分析。部分賦值情況見表1。最終篩選出24個具有統計學意義的指標(P<0.05),分別為年齡、尿比重、尿膽原、尿紅細胞、尿糖、尿液結晶、尿液顏色、尿蛋白、總蛋白、血清白蛋白、總膽紅素、直接膽紅素、尿素、谷氨酰基轉移酶、肌酐、葡萄糖、血清尿酸、總膽固醇、肌酸激酶、乳酸脫氫酶、鈣、鉀、氯化物以及無機磷。

表1 數據集字段賦值對應表(部分)
在明確具有統計學意義的檢查指標后,運用機器學習中的監督學習方法構建疾病風險預測模型。其中,隨機選擇數據集的70%(共626條)作為訓練集,30%(共268條)作為測試集。結合不同算法特點選擇的機器學習算法及相應的參數設置如下。
隨機森林(Random Forest,RF)是一種基于集成學習的思想將多棵決策樹進行組合從而對數據進行分類的機器學習算法[9]。最后的分類結果是由所有決策樹進行投票來決定的,其分類結果比C5.0決策樹模型更加精確,且具有更少的過擬合傾向[10]。本文利用R語言中的RandomForest函數進行模型構建,由于隨機森林對參數并不敏感,因此使用默認參數。
BP神經網絡是一種按照誤差逆傳播算法訓練的多層前饋網絡,由輸入層、隱藏層和輸出層組成,是目前應用最為廣泛的神經網絡模型之一[11]。該模型對自變量的要求比較低,可以是離散型,也可以是連續型。在BP神經網絡模型的構建中,加載R語言中的nnet包,利用nnet建立BP神經網絡模型。設定神經網絡的輸入節點數為24,輸出節點數為1,權值的衰減參數為0.05,通過不斷試驗改變隱藏節點個數,不斷優化神經網絡模型,最終在中間隱藏節點數為10時,模型效果達到最優。
支持向量機(Support Vector Machine,SVM)是基于統計學習理論、VC維理論以及結構風險最小化原理的一種機器學習方法[12],在小樣本、非線性以及高維模式下具有很大優勢[13]。運用SVM算法對數據進行處理時,利用R語言中的ksvm函數和高斯RBF核函數,對數據進行訓練和預測。
利用R語言中相關函數包分別建立隨機森林、BP神經網絡和支持向量機3種風險預測模型,并依據7:3的比例將數據集隨機劃分為訓練集和測試集,分別用于訓練和對二型糖尿病并發腎病的預測。3種模型對于二型糖尿病并發腎病及單純二型糖尿病的預測結果如表2至表4所示。

表2 隨機森林預測結果

表3 BP神經網絡預測結果

表4 支持向量機預測結果
本文選擇查準率(Precision)、召回率(Recall)、正確率以及F1值等4個度量值對各個模型的性能進行評價,以檢測模型預測結果與真實結果之間的差異,為模型的選擇提供依據。其中,查準率越高,算法的敏感性就越高;召回率越高,算法的特異性就越高;正確率越高,算法的精確度越好;而F1度量值越高則可確保召回率和查準率都越高,算法的總體性能越好[14-15]。這4個度量值的公式如下。



除此之外,本文還引入ROC曲線對模型進行評估。在ROC曲線中,橫軸為假陽性率,縱軸為真陽性率[16],ROC曲線下面積在0.5~0.7之間的準確度較低,在0.7~0.9之間的準確度一般,在0.9以上的準確度較高,小于0.5則不符合真實情況[17]。
依據預測結果及R語言的ROCR包,分別計算這3種算法的查準率、召回率、正確率、F1及ROC曲線下面積。結果如表5所示。
由表5可知,對于ROC曲線下面積,隨機森林效果最優;對于正確率,隨機森林效果最優;對于查準率,支持向量機效果最優;對于召回率,隨機森林效果最優。但由于查準率和召回率是一組此消彼長的評價指標,僅用單個指標無法對算法的效果進行總體評價[14]。因此可以用F1值對這3種算法的綜合性能進行評價,其結果為:隨機森林>支持向量機>BP神經網絡。綜合上述指標來看,隨機森林性能最優,這3種算法的訓練效果均較好。

表5 3種算法的結果
由于糖尿病腎病是二型糖尿病患者常見的并發癥,目前國內外針對二型糖尿病腎病風險預測模型的建模已有相關嘗試,常用的建模方法主要包括邏輯回歸、分類與決策樹模型、支持向量機、神經網絡模型等[18]。本文在綜合前人研究成果的基礎上,結合不同算法的特點及優缺點,充分考慮所選數據集的實際記錄情況,最終選取隨機森林、BP神經網絡以及支持向量機這3種機器學習算法,并綜合多種指標驗證其應用于二型糖尿病腎病風險預測時的性能,為算法的選擇提供依據。本文結合單因素邏輯回歸進行指標篩選,再選擇相關算法建立預測模型的方法具有普適性,其不僅可用于對二型糖尿病其他并發癥進行預測,也可用于其他疾病的風險預測。
本文也存在局限性??紤]到數據集的數量和質量對模型的可靠性和可擴展性具有重要影響[19],本文采用的數據共894例,這些數據對于建模來說還相對較少,會直接影響到模型的效果。未來將進一步擴大數據量并對相關算法進行改進,使模型綜合性能得以提高。
二型糖尿病腎病由于存在復雜的代謝紊亂,一旦發展至終末期,其治療將會更加棘手,因此早期對二型糖尿病腎病進行風險預測具有十分重要的意義。本文利用解放軍總醫院提供的2009-2010年度糖尿病數據集,采用均值插補法及拉依達準則對原始數據進行預處理,得到894條數據。利用單因素邏輯回歸從原數據集的38個檢查指標中篩選出24個有效指標并構建訓練數據集和測試數據集,同時基于隨機森林、BP神經網絡、支持向量機3種算法分別構建二型糖尿病腎病風險預測模型。通過利用查準率、查全率、正確率、F1值以及ROC曲線下面積等5個度量值分別對這3種模型的性能進行比較,發現基于隨機森林算法構建的風險預測模型性能最佳。本文結果可為二型糖尿病腎病的早期篩查及相關風險預測模型的算法選擇提供參考及幫助。