徐 澄,彭 丹
(徐州醫(yī)科大學附屬醫(yī)院,江蘇 徐州 221000)
糖尿病腎病是糖尿病最常見的并發(fā)癥之一,易引發(fā)終末期腎病,給患者的身體健康帶來極大損害[1]。進行糖尿病腎病風險預測模型研究,實現(xiàn)對糖尿病腎病的早發(fā)現(xiàn)、早干預、早治療,能夠在診療活動中為醫(yī)生提供幫助,減少患者的痛苦。機器學習即設計算法,通過對輸入的數(shù)據(jù)自動學習,建立相關模型,實現(xiàn)對新的數(shù)據(jù)進行預測[2]。相關患者在就醫(yī)過程中留下了海量數(shù)據(jù),包括患者的基本信息、臨床檢查檢驗結果、治療記錄、醫(yī)療文書、病歷等,為機器學習的研究提供了豐富的資料。本文從中收集、分析和篩選出糖尿病腎病的影響因素,建立臨床數(shù)據(jù)集,利用機器學習算法建立風險預測模型,輔助醫(yī)生進行糖尿病腎病診斷。
數(shù)據(jù)來源于徐州醫(yī)科大學附屬醫(yī)院內分泌科,時間跨度范圍2020年4月至2021年11月,參閱病歷4 231份,共納入1 351個案例。分為糖尿病組682例和糖尿病腎病組669例。案例納入標準:(1)患者符合2型糖尿病診斷標準,參照2020 版《中國2型糖尿病防治指南》中糖尿病診斷標準[3];(2)患者符合糖尿病腎病診斷標準,參照2019 版《中國糖尿病腎臟疾病防治臨床指南》中糖尿病腎病診斷標準[4]。排除標準:(1)患者一年內重復入院只收集第一次入院數(shù)據(jù);(2)患者病歷不符合質量控制標準,有嚴重質量缺陷;(3)患者患有除糖尿病腎病以外其他嚴重腎臟損傷疾病。滿足任何一項排除標準的患者被排除。通過查閱相關文獻資料[4],結合專家訪談和臨床實踐經驗,考慮到醫(yī)院實際開展檢驗檢測項目和患者臨床診療情況,每個患者納入55個風險因素。本研究已通過徐州醫(yī)科大學附屬醫(yī)院倫理委員會審查,審查編號:XYFY2022-KL203-01。
近年來機器學習領域的研究與應用取得了巨大的進展。機器學習用于疾病預測診斷是使用機器學習領域有監(jiān)督學習中分類方法,過程是將數(shù)據(jù)集劃分為訓練集和驗證集,利用訓練集建立模型,通過驗證集評估模型[5]。機器學習的推理過程與醫(yī)生對疾病的診斷過程是非常相似的,都是基于現(xiàn)有有限的信息,對未知的情況做出分析預測。本研究使用到的機器學習算法有:
(1)K近鄰(K-Nearest Neighbor,KNN)。是一種基本分類方法,通過測量不同特征值之間的距離進行分類。思路是:如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個類別,則該樣本也屬于這個類別。
(2)邏輯回歸(Logistic Regression,LR)。是一類比較特殊的分類算法,名字中帶有“回歸”,實際上用于解決分類的問題,其解決問題的思路還是參照回歸的思路。邏輯回歸算法的核心思想就是在空間中找到一條線(面),按照待定位點與分界線(分界面)的相對位置進行分類,其處理二分問題階躍函數(shù)普遍使用Sigmoid函數(shù)。
(3)決策樹(Decision Tree,DT)。是一種基本的分類方法,從根節(jié)點開始,對實例的某一特征進行測試,根據(jù)測試結果將實例分配到其子節(jié)點,此時每個子節(jié)點對應著該特征的一個取值,如此遞歸地對實例進行測試并分配,直到到達葉節(jié)點,最后將實例分到葉節(jié)點的類中。
(4)隨機森林(Random Forest,RT)。隨機森林由多個決策樹組成,采用多個決策樹的投票機制來改善決策樹,是以決策樹為估計器的Bagging算法。
(5)提升算法(AdaBoost)。是一種重要的集成學習技術,能夠將預測精度僅比隨機猜度略高的弱學習器增強為預測精度高的強學習器,這在直接構造強學習器非常困難的情況下,為學習算法的設計提供了一種有效的新思路和新方法。
(6)支持向量機(Support Vector Machine,SVM)。是尋找一個能最大化訓練數(shù)據(jù)集中分類間距的超平面來給數(shù)據(jù)分類(超平面即n維空間中的n-1維空間)。當訓練樣本線性不可分時,通過核技巧和軟間隔最大化,學習一個非線性支持向量機,可以將訓練樣本從原始空間映射到一個更高維的空間,使得樣本在這個空間中線性可分。
(7)樸素貝葉斯(Naive Bayes,NB)。是以貝葉斯定理為基礎的分類算法,思路是:對于給出的待分類項,求解在此項出現(xiàn)的條件下各個類別出現(xiàn)的概率,哪個最大,就認為此待分類項屬于哪個類別。
(8)前饋神經網(wǎng)絡,又稱多層感知機(Multilayer Perceptron,MLP)。神經網(wǎng)絡可以視為由一系列互相連接的層組成的網(wǎng)絡,它的一端連接一個觀察目標的特征值,另一端連接著對應的目標值(如分類標簽),中間是隱藏層,其實質是線性模型的擴展和深化。
評估模型性能的主要指標有準確率、精確度、召回率和F1分數(shù)(F1 score)等[6],此外通過受試者工作特征(Receiver Operating Characteristic,ROC)曲線可以直觀觀察模型性能,ROC曲線下的面積(Area Under Curve,AUC)被定義為ROC曲線下與坐標軸圍成的面積,AUC的取值范圍在0.5和1之間,AUC越接近1.0,檢測方法真實性越高。將數(shù)據(jù)集拆分成訓練集和測試集兩部分,采用K-折交叉驗證法,代入模型獲取評分,選取預測能力最好的模型。
依據(jù)患者資料整理生成數(shù)據(jù)集共包含1 351個樣本,每個樣本包含55個特征。數(shù)據(jù)集中數(shù)據(jù)存儲方式為二維表形式,表中每一行對應一個樣本(一個患者),每一列對應一個特征(如年齡、身高、體重等)。表結構滿足數(shù)據(jù)庫第一范式(1NF)。數(shù)據(jù)集中特征包括計量資料和計數(shù)資料。計量資料包括年齡、身高、體重、體重指數(shù)(BMI)、血壓等有連續(xù)數(shù)值的數(shù)據(jù),即數(shù)值變量;計數(shù)資料在本研究中可以認為是分類資料,包括性別、籍貫、婚姻史、是否患有糖尿病腎病等分組數(shù)據(jù),即分類變量。對數(shù)據(jù)集進行預處理,包括重復數(shù)據(jù)刪除、異常值校驗糾正、缺項數(shù)據(jù)填充等,保證數(shù)據(jù)的完整性和一致性,提高數(shù)據(jù)集質量,減少因數(shù)據(jù)集自身問題對預測模型的影響。
糖尿病腎病的發(fā)生與許多因素有著潛在聯(lián)系,而醫(yī)院數(shù)據(jù)包含了患者詳細信息,往往是高維的,通過特征篩選,可以去除掉對模型預測結果影響不大的特征,降低算法的計算開銷,提高算法性能。
本文利用Logistic回歸進行特征篩選。使用SPSS軟件二元Logistic回歸處理,結果如表1所示。
表1 Logistic回歸結果分析
續(xù)表1
在所有特征中,糖尿病病程、視網(wǎng)膜病變、尿肌酐、尿免疫球蛋白G、尿微量白蛋白、a1-微球蛋白、尿酸、腎小球濾過率(eGFR)、中性粒細胞計數(shù)9個特征P<0.05,與糖尿病腎病的發(fā)生有顯著性聯(lián)系,納入風險預測模型訓練集中。
本研究中,機器學習算法實現(xiàn)和建模使用Python語言編譯。機器學習算法使用Python機器學習庫Scikit-learn[7],Scikit-learn是基于 Python 語言的機器學習工具,是機器學習中的常用第三方模塊。建模過程將數(shù)據(jù)集按照8-2比例拆分成訓練集和測試集兩部分,利用訓練集訓練機器學習模型,利用測試集進行驗證,選取預測能力最好的模型。為減少偶然性,采用K-折交叉驗證法,代入模型獲取評分,計算模型評價指標平均值。建模過程建立算法管道模型,將數(shù)據(jù)預處理、模型訓練、參數(shù)調優(yōu)等過程鏈接在一起,形成流水線模式,減少代碼復雜度,提高運行效率。
研究使用K近鄰、邏輯回歸、決策樹、隨機森林、提升算法、支持向量機、樸素貝葉斯和前饋神經網(wǎng)絡8種算法建模,對建立的模型經10折交叉驗證,得到模型的準確率、精確度、召回率和F1分數(shù)作為評價標準,繪制其ROC曲線并計算AUC值,從中選擇預測效果最好的模型。評價標準結果如表2所示。
表2 模型比較
同時繪制AUC較高的4種模型ROC曲線,如圖1所示。
圖1 模型ROC曲線
在所有算法中,準確率最高的是隨機森林算法,達到92.74%,提升算法、決策樹和前饋神經網(wǎng)絡預測準確率也達到90%左右;精確度最高的是樸素貝葉斯算法,達到93.53%,隨機森林、提升算法和前饋神經網(wǎng)絡均達到90%以上;召回率最高的是提升算法,達到91.87%,隨機森林和其接近,達到91.72%;F1分數(shù)最高的是隨機森林算法,達到0.924 8,提升算法也達到0.917 4,其他算法有一定差距;AUC最高的是隨機森林算法,達到0.980 2,邏輯回歸、提升算法、支持向量機、樸素貝葉斯和前饋神經網(wǎng)絡達到0.9以上。綜合5個評價標準,可以得出利用隨機森林算法建立的模型預測效果最好。
本文研究了利用機器學習算法建立糖尿病腎病風險預測模型。數(shù)據(jù)來源于醫(yī)院病歷,基于患者就診信息,建立了糖尿病-糖尿病腎病患者數(shù)據(jù)集,共納入1 351個樣本。使用Logistic回歸進行特征篩選,從55個特征中篩選出糖尿病病程、視網(wǎng)膜病變、尿肌酐、尿免疫球蛋白G、尿微量白蛋白、a1-微球蛋白、尿酸、腎小球濾過率(eGFR)、中性粒細胞計數(shù)9個糖尿病腎病影響因素,并納入模型訓練集。使用K近鄰、邏輯回歸、決策樹、隨機森林、提升算法、支持向量機、樸素貝葉斯和前饋神經網(wǎng)絡8種算法建立模型,進行10折交叉驗證,從準確率、精確度、召回率、F1分數(shù)和AUC值5個方面進行比較,并繪制其ROC曲線,得出結論使用隨機森林算法建立的模型預測效果最好。最終得到的模型預測準確率達到92.74%,在2型糖尿病患者人群中可以實現(xiàn)糖尿病腎病風險精準預測,對糖尿病腎病早期診斷提供幫助。許多算法具有超參數(shù)(如隨機森林算法中決策樹的數(shù)量、神經網(wǎng)絡算法中層數(shù)和節(jié)點數(shù)),通過參數(shù)調優(yōu)可以提高算法性能,下一步研究將對建立的模型進行參數(shù)調優(yōu)和模型融合,進一步提升模型預測效能。