張春富,王 松,吳亞東,王 勇,張紅英
(西南科技大學(xué) a.信息工程學(xué)院; b.計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院; c.特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室,四川 綿陽 621010)
糖尿病是一種嚴(yán)重危害人類身體健康的慢性病,是由于胰島素分泌不足或外圍組織對(duì)胰島素不敏感而引起的代謝性疾病,其以持續(xù)的高血糖狀態(tài)為特征,容易致使各種組織器官長期受損。
根據(jù)國際糖尿病聯(lián)盟(IDF)統(tǒng)計(jì),2017年全球糖尿病患者約有4.25億人,每11名成年人中就有1人患有糖尿病,每2名患者中就有1名未確診[1]。預(yù)計(jì)到2045年,全球?qū)⒂薪?億人患糖尿病。據(jù)統(tǒng)計(jì),2017年我國成年糖尿病患病人數(shù)達(dá)到1.14億,相應(yīng)醫(yī)療支出高達(dá)1 100億美元,超過130萬人死于糖尿病及其并發(fā)癥,其中41%以上的人年齡低于60歲,逐漸呈年輕化趨勢(shì)[1-2]。
糖尿病無法根治,且容易引發(fā)多種并發(fā)癥,為社會(huì)和家庭帶來沉重的經(jīng)濟(jì)負(fù)擔(dān)。全球每年用于糖尿病人群的醫(yī)療支出費(fèi)用為8 270億美元,占所有醫(yī)療支出的12%。目前糖尿病已經(jīng)嚴(yán)重影響到居民健康水平和經(jīng)濟(jì)的快速發(fā)展,糖尿病預(yù)測(cè)問題亟待解決。因此,本文針對(duì)糖尿病的臨床指標(biāo),結(jié)合Xgboost的預(yù)測(cè)優(yōu)勢(shì)和遺傳算法的搜索能力,建立GA_Xgboost預(yù)測(cè)模型,對(duì)血糖值進(jìn)行預(yù)測(cè),確定高危人群并提前預(yù)警,輔助醫(yī)生進(jìn)行早期干預(yù),從而降低糖尿病發(fā)病率。
目前,大量學(xué)者對(duì)糖尿病預(yù)測(cè)進(jìn)行了深入研究,構(gòu)建了許多預(yù)測(cè)模型。這些預(yù)測(cè)模型根據(jù)不同應(yīng)用場(chǎng)景而建立,對(duì)于推動(dòng)糖尿病的快速診斷進(jìn)而提高醫(yī)生診斷效率具有重要作用。
回歸模型是一種研究因變量和自變量關(guān)系的預(yù)測(cè)性建模技術(shù),該模型綜合考慮各種可能危險(xiǎn)因素,通常以多元回歸模型或Cox比例風(fēng)險(xiǎn)模型預(yù)測(cè)未來一定時(shí)間內(nèi)糖尿病的發(fā)病概率。
多元回歸模型是應(yīng)用較廣泛的一種方法,既可以用于個(gè)體糖尿病發(fā)病風(fēng)險(xiǎn)的預(yù)測(cè),如文獻(xiàn)[3]建立的糖尿病視網(wǎng)膜病變預(yù)測(cè)模型,也可以用于群體糖尿病危險(xiǎn)因素的研究,如文獻(xiàn)[4]對(duì)我國農(nóng)村居民糖尿病患病因素的分析。多元回歸模型解釋性強(qiáng)但精度欠佳,不適用于大量指標(biāo)的預(yù)測(cè)。
Cox回歸模型以生存結(jié)局和生存時(shí)間為因變量,可同時(shí)分析眾多因素對(duì)生存期的影響,常用于醫(yī)學(xué)隨訪研究。文獻(xiàn)[5]用Cox回歸模型建立了適合中國人群的糖尿病風(fēng)險(xiǎn)預(yù)測(cè)模型,文獻(xiàn)[6]則用Cox回歸模型研究胰島素依賴型糖尿病患者的死亡率。然而Cox回歸模型要求對(duì)數(shù)據(jù)連續(xù)觀測(cè)且追蹤時(shí)間不宜過短,成本較高。
決策樹作為從大規(guī)模數(shù)據(jù)中探索概念構(gòu)成的代表,是弱化模型結(jié)構(gòu)僅從數(shù)據(jù)出發(fā)構(gòu)建概念的典型?;跊Q策樹建立的預(yù)測(cè)模型,能對(duì)預(yù)測(cè)結(jié)果提供相應(yīng)的分析依據(jù)。文獻(xiàn)[7-8]采用決策樹建立了糖尿病臨床治療決策系統(tǒng),提高了糖尿病的診治效率。文獻(xiàn)[9-10]探索決策樹模型在糖尿病預(yù)測(cè)中的應(yīng)用,發(fā)掘糖尿病患病的得病風(fēng)險(xiǎn)規(guī)律。
實(shí)際上,決策樹作為一種模仿人類思考的建模思路,一般并不單獨(dú)用于模型的建立,而是以其為基函數(shù),根據(jù)集成思想建立預(yù)測(cè)模型。
支持向量機(jī)是一種建立在VC維的統(tǒng)計(jì)學(xué)理論和結(jié)構(gòu)風(fēng)險(xiǎn)最小化原理基礎(chǔ)上的機(jī)器學(xué)習(xí)算法,通過核函數(shù)將輸入向量映射到高維空間,從而得到最優(yōu)分類超平面。文獻(xiàn)[11]建立了基于支持向量機(jī)的預(yù)測(cè)模型,探討環(huán)境因素和遺傳因素對(duì)2型糖尿病患病的影響。文獻(xiàn)[12-13]基于支持向量機(jī)分別建立了糖尿病前期篩查模型和標(biāo)準(zhǔn)化糖尿病診斷模型。
支持向量機(jī)具有解決小樣本學(xué)習(xí)、非線性、高維和泛化等問題的獨(dú)特優(yōu)勢(shì),但對(duì)于高維數(shù)據(jù),它更多考慮通過核函數(shù)來解決,很少從物理降維出發(fā),耗費(fèi)大量的機(jī)器內(nèi)存和運(yùn)算時(shí)間。
神經(jīng)網(wǎng)絡(luò)是一種基于大腦和神經(jīng)系統(tǒng)研究而建立的計(jì)算模型。在這種模型中,大量節(jié)點(diǎn)之間相互聯(lián)結(jié)構(gòu)成網(wǎng)絡(luò),以達(dá)到處理信息的目的。文獻(xiàn)[14]以某綜合性醫(yī)院收集的調(diào)查資料為基礎(chǔ),探討改進(jìn)BP人工神經(jīng)網(wǎng)絡(luò)在2型糖尿病發(fā)病危險(xiǎn)因素中的應(yīng)用特點(diǎn)。文獻(xiàn)[15]將中醫(yī)指標(biāo)與臨床檢驗(yàn)指標(biāo)結(jié)合,探討神經(jīng)網(wǎng)絡(luò)在糖尿病并發(fā)癥建模上的應(yīng)用。文獻(xiàn)[16]基于神經(jīng)網(wǎng)絡(luò)建立了1型糖尿病患者胰島素注射量的查詢系統(tǒng)。
神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的自組織、自適應(yīng)和容錯(cuò)能力,在處理非線性問題上具有獨(dú)特優(yōu)勢(shì),但它在模型建立方面需要大量參數(shù),輸出結(jié)果難以解釋,解釋性欠佳限制了它在醫(yī)療領(lǐng)域的廣泛應(yīng)用。
Xgboost(eXtreme Gradient Boosting)也稱為極端梯度提升[17],是一種通過Boosting思想將基函數(shù)與權(quán)重進(jìn)行組合形成的集成算法。Xgboost算法具有快速、高效、泛化能力強(qiáng)等優(yōu)點(diǎn),廣泛應(yīng)用于回歸和分類領(lǐng)域。
遺傳算法(Genetic Algorithm,GA)是模擬生物界的遺傳和進(jìn)化過程而建立的一種自適應(yīng)全局優(yōu)化概率搜索算法[18]。遺傳算法中種群的每個(gè)個(gè)體都是解空間上的一個(gè)可行解,通過模擬生物的進(jìn)化過程,從而在解空間內(nèi)自適應(yīng)地搜索最優(yōu)解。
Xgboost參數(shù)較多,調(diào)節(jié)繁瑣,且參數(shù)對(duì)算法的預(yù)測(cè)性能影響較大,需要對(duì)調(diào)參進(jìn)行優(yōu)化。據(jù)此,本文提出了GA_Xgboost模型,以多顆決策樹集成的Xgboost為基礎(chǔ),利用遺傳算法良好的全局搜索能力和靈活性來彌補(bǔ)Xgboost模型參數(shù)眾多、收斂較慢、易陷入局部最優(yōu)的缺陷,以真實(shí)值和預(yù)測(cè)值的均方誤差作為適應(yīng)度函數(shù)來優(yōu)化參數(shù),通過精英選擇策略保證每一輪的進(jìn)化結(jié)果最佳。
首先根據(jù)問題的復(fù)雜度設(shè)置初始種群數(shù)量、迭代次數(shù)、被優(yōu)化參數(shù)數(shù)量和每代被保留的個(gè)體數(shù),然后在限定范圍內(nèi)隨機(jī)生成P組參數(shù)值,若不滿足要求,則用這些參數(shù)組分別訓(xùn)練Xgboost模型并對(duì)測(cè)試集進(jìn)行預(yù)測(cè),對(duì)預(yù)測(cè)結(jié)果計(jì)算均方誤差,從中保留M組優(yōu)秀參數(shù),對(duì)它們運(yùn)用遺傳算法進(jìn)行交叉、變異,從而產(chǎn)生新參數(shù),循環(huán)這個(gè)過程直到滿足停止條件為止。GA_Xgboost偽代碼如下:
輸入種群數(shù)量P,迭代時(shí)間J,參數(shù)數(shù)量N,優(yōu)秀個(gè)體數(shù)量M
輸出最優(yōu)參數(shù)組合
1.for i←1 to P do
2.Initialize (θi1,θi2,…,θiN)θi1,θi2,…,θiN
3.end for
4.while termination criterion not met do
5.The Train Set train Xgboost model
6.Predict the Test Set and calculate fitness value
7.Preserve the optimal parameters of M group according to fitness value
8.GA(P,J,N,M)
9.Produce new parameters
10.end while
糖尿病預(yù)測(cè)模型的設(shè)計(jì)思路如圖1所示,包含數(shù)據(jù)處理、數(shù)據(jù)探索以及數(shù)據(jù)擬合3個(gè)部分。整個(gè)過程采用Python語言實(shí)現(xiàn)。
圖1 糖尿病預(yù)測(cè)流程
2.2.1 特征工程
特征工程是一個(gè)把原始數(shù)據(jù)轉(zhuǎn)變?yōu)橛?xùn)練數(shù)據(jù)的過程,它的目的是獲取更好的訓(xùn)練特征,使得機(jī)器學(xué)習(xí)逼近模型上限。本文主要的特征工程有數(shù)據(jù)處理和數(shù)據(jù)探索。
原始數(shù)據(jù)主要包括體檢信息和個(gè)人信息,部分特征存在缺失值。刪除缺失值超過一半的乙肝類特征,用均值對(duì)缺失值較少的數(shù)值型特征進(jìn)行填充,對(duì)填充好的數(shù)據(jù)進(jìn)行l(wèi)og、歸一化等變換,如圖2所示,將不具有正態(tài)分布的特征變換成具有正態(tài)分布的特征,最后對(duì)特征兩兩之間進(jìn)行加減乘除組合,從而得到新特征,對(duì)新特征進(jìn)行交叉驗(yàn)證,若有提升則添加該特征。
圖2 血糖值log變換
圖2顯示了血糖值的log變換,橫坐標(biāo)代表血糖值,縱坐標(biāo)代表該血糖值的人數(shù)。血糖真實(shí)值主要分布在5和6之間,這種極端數(shù)據(jù)分布不利于建模預(yù)測(cè),因此對(duì)其進(jìn)行l(wèi)og變換,使數(shù)據(jù)接近正態(tài)分布,以適用于預(yù)測(cè)任務(wù)及算法的需要。
2.2.2 參數(shù)優(yōu)化
Xgboost有7項(xiàng)主要參數(shù),不同參數(shù)有不同功能,這些參數(shù)設(shè)定是否合理,對(duì)于模型的好壞有重要影響。調(diào)參通常取決于經(jīng)驗(yàn)判斷和遍歷實(shí)驗(yàn),傳統(tǒng)方法效果不佳且缺乏理論依據(jù)。因此,本文基于遺傳算法進(jìn)行參數(shù)優(yōu)化,保留每次迭代的優(yōu)秀個(gè)體,在優(yōu)秀個(gè)體中進(jìn)行交叉、變異等操作,交換并產(chǎn)生優(yōu)秀基因,從而朝著全局最優(yōu)進(jìn)化。
根據(jù)遺傳算法的特點(diǎn),結(jié)合Xgboost的參數(shù)范圍以及糖尿病數(shù)據(jù)的問題性質(zhì)進(jìn)行相應(yīng)設(shè)定。設(shè)置初始種群數(shù)量為32,每個(gè)個(gè)體包含7個(gè)參數(shù),參數(shù)在待選范圍內(nèi)隨機(jī)生成;迭代100次,以均方誤差作為適應(yīng)度函數(shù),每次迭代根據(jù)適應(yīng)度值保留8個(gè)最優(yōu)個(gè)體;使用均勻交叉,隨機(jī)選擇一個(gè)參數(shù)進(jìn)行突變,這樣既保證了優(yōu)秀基因的交換,又能跳出局部最優(yōu)。由于遺傳算法隨機(jī)生成初始群體,具有一定的隨機(jī)性,因此通過多次實(shí)驗(yàn)?zāi)軌虼蟾怕收业浇鼉?yōu)甚至最優(yōu)參數(shù)。GA_Xgboost調(diào)參實(shí)驗(yàn)如圖3所示。
圖3 GA_Xgboost調(diào)參實(shí)驗(yàn)結(jié)果
通過進(jìn)行3次GA_Xgboost實(shí)驗(yàn),在迭代40次左右時(shí)效果均優(yōu)于默認(rèn)參數(shù),當(dāng)?shù)螖?shù)達(dá)到100時(shí),均方誤差均小于0.61。相比于默認(rèn)參數(shù),GA_Xgboost調(diào)參后的均方誤差有較明顯的提升。
本文以天池競(jìng)賽平臺(tái)提供的某三甲醫(yī)院2017年9月—10月的糖尿病數(shù)據(jù)為數(shù)據(jù)源,目標(biāo)是從乙肝、血常規(guī)、肝功能、腎功能等41個(gè)特征字段中預(yù)測(cè)血糖值,共計(jì)7 642條數(shù)據(jù),其中,6 642條用于訓(xùn)練,剩余數(shù)據(jù)用于測(cè)試。
經(jīng)GA_Xgboost調(diào)參實(shí)驗(yàn)后,當(dāng)前Xgboost最佳參數(shù)組合及參數(shù)解釋如表1所示。在最佳參數(shù)組合下,均方誤差為0.606,明顯優(yōu)于默認(rèn)參數(shù)下的0.628。
表1 Xgboost最佳參數(shù)及默認(rèn)值Table 1 Xgboost best parameters and default values
使用最佳參數(shù)組合對(duì)糖尿病血糖值進(jìn)行預(yù)測(cè),圖4給出了1 000條測(cè)試數(shù)據(jù)的血糖預(yù)測(cè)值和真實(shí)值分布??梢园l(fā)現(xiàn)位于5~8的常見值預(yù)測(cè)比較準(zhǔn)確,對(duì)于較大值的預(yù)測(cè)則有所偏差。原因可能在于訓(xùn)練過程中較大值出現(xiàn)的次數(shù)少,從而權(quán)重較小,導(dǎo)致模型趨向于預(yù)測(cè)常見值。
圖4 血糖預(yù)測(cè)值和真實(shí)值分布
Fig.4 Distribution of blood glucose prediction values and actual values
圖5給出了與糖尿病最相關(guān)的20項(xiàng)特征的重要性評(píng)估。結(jié)果顯示,對(duì)血糖值影響最大的變量依次為年齡、天門冬氨酸氨基轉(zhuǎn)移酶和甘油三酯。
圖5 特征重要性
研究結(jié)果表明,糖尿病的發(fā)病率隨著年齡的增長而增長,50歲之后的肥胖人士極易患糖尿病[19];天門冬氨酸氨基轉(zhuǎn)移酶的測(cè)定有助于判定肝細(xì)胞有無壞死及損傷程度;甘油三酯偏高會(huì)影響血糖代謝,高甘油三酯血癥與糖尿病發(fā)病密切相關(guān)[20]。此外,丙氨酸氨基轉(zhuǎn)移酶、尿素、尿酸、紅細(xì)胞計(jì)數(shù)等對(duì)血糖值都有較大影響,而性別、血小板體積、嗜酸細(xì)胞等因素對(duì)糖尿病沒有太大影響。
為驗(yàn)證GA_Xgboost方法的有效性,在糖尿病風(fēng)險(xiǎn)預(yù)測(cè)中將GA_Xgboost模型與各常用模型進(jìn)行對(duì)比分析。
采用4項(xiàng)指標(biāo)評(píng)估算法優(yōu)劣,其中,MAE表示平均絕對(duì)誤差,MSE表示均方誤差,MAPE表示平均絕對(duì)百分比誤差,這三者用于評(píng)估真實(shí)值和預(yù)測(cè)值的差異,它們是回歸任務(wù)中最常用的性能指標(biāo),值越小代表預(yù)測(cè)越準(zhǔn)確。R-squared用于評(píng)估模型的解釋度,值越大模型解釋性越強(qiáng)。評(píng)價(jià)指標(biāo)具體公式如下:
(1)
(2)
(3)
(4)
各算法性能對(duì)比結(jié)果如表2所示。從表2中可以看出,在回歸問題上Xgboost預(yù)測(cè)精度優(yōu)于線性回歸、決策樹、支持向量機(jī)和神經(jīng)網(wǎng)絡(luò),在解釋性方面不如線性回歸。經(jīng)過遺傳算法優(yōu)化的GA_Xgboost模型不僅提高了預(yù)測(cè)精度,而且在解釋性方面也有所增強(qiáng)。
表2 不同算法性能對(duì)比Table 2 Performance comparison of different algorithms
將GA_Xgboost與常用的調(diào)參方式進(jìn)行比較,驗(yàn)證其在精度和效率上的優(yōu)勢(shì)。
網(wǎng)格搜索是業(yè)界調(diào)參最常用的方法,其思想是窮舉搜索,在所有候選的參數(shù)中進(jìn)行遍歷,找到待選參數(shù)的最佳值,其缺點(diǎn)是耗費(fèi)時(shí)間長且只能在給定候選集中選擇。隨機(jī)游走(random walk)是一種全局優(yōu)化算法,根據(jù)大數(shù)定律,只要隨機(jī)的次數(shù)夠多,總能找到最優(yōu)或近優(yōu)參數(shù),其缺點(diǎn)是高度依賴初始值且隨機(jī)結(jié)果可能不一致。經(jīng)文獻(xiàn)[21]研究結(jié)果證明,在進(jìn)行參數(shù)優(yōu)化時(shí)隨機(jī)搜索比網(wǎng)格搜索更有效。遺傳算法的思想是優(yōu)勝劣汰,每次留下最佳的數(shù)個(gè)樣本,有一定的幾率發(fā)生交叉、變異從而產(chǎn)生新樣本,因此遺傳算法也是全局優(yōu)化算法。當(dāng)變異概率較大時(shí),遺傳算法會(huì)退化成隨機(jī)搜索。
GA_Xgboost與網(wǎng)格搜索調(diào)參、隨機(jī)游走調(diào)參以及Xgboost默認(rèn)參數(shù)進(jìn)行對(duì)比,結(jié)果如表3所示。其中,參數(shù)列表的順序?yàn)閷W(xué)習(xí)率、基學(xué)習(xí)器個(gè)數(shù)、最大樹深、最小葉子權(quán)重、懲罰項(xiàng)系數(shù)、訓(xùn)練數(shù)據(jù)占比和訓(xùn)練特征占比。
表3 Xgboost調(diào)參方式對(duì)比Table 3 Comparison of Xgboost parameter adjustment modes
表3使用MSE和運(yùn)行時(shí)間做評(píng)價(jià)指標(biāo),從表3可以發(fā)現(xiàn),網(wǎng)格搜索精度低且極度耗時(shí),隨機(jī)游走精度和運(yùn)行時(shí)間都居中,GA_Xgboost效果最佳。因?yàn)殡S機(jī)游走和遺傳算法都有一定的隨機(jī)性,增加迭代次數(shù)或者多次實(shí)驗(yàn)?zāi)軌虼蟾怕十a(chǎn)生較佳參數(shù)組合。
實(shí)驗(yàn)結(jié)果表明,GA_Xgboost在預(yù)測(cè)精度上優(yōu)于線性回歸、支持向量機(jī)等常用算法,在運(yùn)行時(shí)間和調(diào)參效果上優(yōu)于網(wǎng)格搜索和隨機(jī)游走方法。相比于Xgboost算法,GA_Xgboost在花費(fèi)一定時(shí)間的情況下,預(yù)測(cè)精度有明顯提升。
本文針對(duì)Xgboost算法存在參數(shù)眾多、收斂較慢的問題,結(jié)合遺傳算法全局優(yōu)化的優(yōu)點(diǎn),提出GA_Xgboost模型。實(shí)驗(yàn)結(jié)果表明,基于GA_Xgboost模型進(jìn)行的血糖值預(yù)測(cè),精度優(yōu)于線性回歸、支持向量機(jī)等傳統(tǒng)算法,效率高于網(wǎng)格調(diào)參和隨機(jī)調(diào)參方法。雖然GA_Xgboost模型預(yù)測(cè)精度和調(diào)參時(shí)間都有所提高,但在實(shí)驗(yàn)過程中發(fā)現(xiàn),模型對(duì)于少數(shù)血糖值較大的記錄預(yù)測(cè)效果較差,運(yùn)行時(shí)間也不夠快,如何增加較大值的權(quán)重、降低調(diào)參時(shí)間有待進(jìn)一步研究。本文提出的GA_Xgboost模型還可以用于其他疾病的輔助診斷,該模型能夠識(shí)別和處理其他回歸預(yù)測(cè)和分類問題,下一步將結(jié)合Lasso方法對(duì)模型進(jìn)行優(yōu)化,利用Lasso回歸進(jìn)行正則化和特征選擇,以提高模型的預(yù)測(cè)精度。