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