吳興惠 周玉萍 邢海花,龍海俠
摘要:機(jī)器學(xué)習(xí)技術(shù)在疾病診斷等智能決策問(wèn)題中起著至關(guān)重要的作用,該文主要介紹了機(jī)器學(xué)習(xí)中決策樹、隨機(jī)森林、支持向量機(jī)和k近鄰算法,并將這四種算法建立的模型運(yùn)用在糖尿病診斷上,通過(guò)參數(shù)的優(yōu)化建立各自的模型,比較這四種模型對(duì)醫(yī)學(xué)中的糖尿病數(shù)據(jù)的診斷價(jià)值。然后通過(guò)十折交叉驗(yàn)證方法比較這四種模型在該數(shù)據(jù)上的ROC值,選擇最優(yōu)的模型對(duì)糖尿病數(shù)據(jù)進(jìn)行分析預(yù)測(cè),結(jié)果表明,隨機(jī)森林算法更適合糖尿病數(shù)據(jù)的預(yù)測(cè)。
關(guān)鍵詞:機(jī)器學(xué)習(xí);分類算法;糖尿病; 預(yù)測(cè)
中圖分類號(hào):TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? 文章編號(hào):1009-3044(2018)35-0177-02
1 概述
近年來(lái),隨著人工智能與機(jī)器學(xué)習(xí)的不斷發(fā)展[1-4],針對(duì)醫(yī)療智能診斷的研究工作越來(lái)越多,更多學(xué)者將機(jī)器學(xué)習(xí)技術(shù)用在醫(yī)療領(lǐng)域[7-10]。機(jī)器學(xué)習(xí)將醫(yī)學(xué)知識(shí)的信息自動(dòng)學(xué)習(xí),歸納其中的規(guī)則,自己建立模型,然后進(jìn)行預(yù)判。所以機(jī)器學(xué)習(xí)在醫(yī)療領(lǐng)域中可以起到的作用至關(guān)重要。目前糖尿病已經(jīng)逐漸發(fā)展成為發(fā)病率比較最高的危害人類健康的疾病之一,對(duì)可能導(dǎo)致其的風(fēng)險(xiǎn)因素因素進(jìn)行預(yù)測(cè)研究[5]。并且糖尿病還會(huì)大大增加其他疾病的發(fā)病概率,比如高血壓、血脂異常、中風(fēng)、眼疾和腎臟疾病。糖尿病及其并發(fā)癥的醫(yī)療成本也是非常巨大的。因此早期的診斷與治療是提高糖尿病的治愈率關(guān)鍵。
本文運(yùn)用了機(jī)器學(xué)習(xí)算法中的隨機(jī)森林、支持向量機(jī)、KNN、決策樹四種分類算法[1-8]對(duì)糖尿病數(shù)據(jù)進(jìn)行了數(shù)據(jù)進(jìn)行分析,通過(guò)參數(shù)的選擇建立各自比較好的模型,在選取參數(shù)時(shí),選取測(cè)試集準(zhǔn)確率較高的參數(shù),作為建模最終選用的參數(shù).并運(yùn)用十折交叉驗(yàn)證的方法對(duì)四種算法進(jìn)行準(zhǔn)確率或誤判率的比較,選擇出判別此醫(yī)療數(shù)據(jù)最好的算法進(jìn)行預(yù)測(cè)。
2 機(jī)器學(xué)習(xí)算法
2.1 隨機(jī)森林
2.1.1 隨機(jī)森林(Ramdom Forests,RF)原理
隨機(jī)森林由Leo Breiman提出的一種基于 CART 決策樹的組合分類器[1]。RF是一種組合分類器,由若干樹形分類器[{hs(x,θk),k=1,…}]構(gòu)成,其中x為輸入向量,[θk]為獨(dú)立同分布的隨機(jī)向量,由每個(gè)樹形分類器為x最可能的分類投一票,得票最多的分類結(jié)果為最終輸出。隨機(jī)森林可以處理的屬性是離散的變量,也可以是連續(xù)變量,屬性是離散的變量用ID3算法,連續(xù)的變量用C4.5算法。
2.1.2 隨機(jī)森林構(gòu)建
隨機(jī)森林的構(gòu)建主要包括產(chǎn)生訓(xùn)練集,選出分裂點(diǎn),重復(fù)構(gòu)建分類回歸樹以及投票,其步驟如下:
(1) 應(yīng)用bootstrap法有放回地隨機(jī)抽取N個(gè)新的自助樣本集來(lái)構(gòu)建N棵決策樹,每次不被抽中的樣本集組成了N個(gè)袋外數(shù)據(jù)(Out of Band,OOB)。
(2) 在每個(gè)內(nèi)部節(jié)點(diǎn)處從M個(gè)特征中隨機(jī)挑選m個(gè)特征(m<M),從這m個(gè)特征中按照節(jié)點(diǎn)不純度選出最佳的分裂方式對(duì)該節(jié)點(diǎn)進(jìn)行分裂。這些決策樹均不進(jìn)行剪枝。
(3) 集合 n多個(gè)決策樹的預(yù)測(cè)結(jié)果,根據(jù)投票的方式取票數(shù)最高的類別作為新樣本的類別。
在隨機(jī)森林構(gòu)建過(guò)程中,自助樣本集從原始的訓(xùn)練樣本集中隨機(jī)選取,用于每一個(gè)樹分類器的形成,每一棵樹所應(yīng)用的變量是從所有變量中隨機(jī)選取,每次將有約三分之一的數(shù)據(jù)未被抽中,這部分?jǐn)?shù)據(jù)稱為袋外數(shù)據(jù),它被用來(lái)預(yù)測(cè)分類的正確率,對(duì)每次預(yù)測(cè)結(jié)果進(jìn)行匯總得到錯(cuò)誤率的 OOB 估計(jì),然后評(píng)估組合分類器判別的正確率。隨機(jī)森林用R語(yǔ)言軟件包RandomForest來(lái)實(shí)現(xiàn)。需要設(shè)置三個(gè)主要的參數(shù):隨機(jī)森林決策樹節(jié)點(diǎn)分支所選擇的變量個(gè)數(shù)(mtry),模型中決策樹的數(shù)量(ntree)及終節(jié)點(diǎn)的最小樣本數(shù)(nodesize)。
2.2 支持向量機(jī)
支持向量機(jī)是建立在統(tǒng)計(jì)學(xué)習(xí)理論的 VC 維理論和結(jié)構(gòu)風(fēng)險(xiǎn)最小原理基礎(chǔ)上的,它在解決小樣本、非線性及高維模式識(shí)別中表現(xiàn)出許多特有的優(yōu)勢(shì),已在眾多領(lǐng)域得到了廣泛的應(yīng)用[6,8]。支持向量機(jī)的定義是,根據(jù)給定的訓(xùn)練集
[T={(x1,y1) (x2,y2)…(xn,yn)}∈(X×Y)l]? ?(1)
其中,[xi∈X=Rn],X稱為輸入空間,輸入空間中的每一個(gè)點(diǎn)[xi]由n個(gè)屬性特征組成,[yi∈Y=-1,1,i=1,…,l]。尋找[Rn]上的一個(gè)實(shí)值函數(shù)g(x),使用分類函數(shù)
[fx=sgn(gx)]
推斷任意一個(gè)模式x相對(duì)應(yīng)的y值的問(wèn)題為分類問(wèn)題。
2.3 K近鄰算法
它是根據(jù)測(cè)試集自變量觀測(cè)值與訓(xùn)練集自變量觀測(cè)值距離最近的k個(gè)點(diǎn)對(duì)測(cè)試集的因變量取眾數(shù)來(lái)分類的。對(duì)于訓(xùn)練數(shù)據(jù)集{([yi,xi]),i=1……,L},這里[xi=(xi1,xi2,…,xip)T];代表自變量的值,最近鄰的確定是基于所選擇的距離函數(shù)。顯然,有三個(gè)度量必須選擇的:距離的定義、核函數(shù)以及k。距離的計(jì)算默認(rèn)的是歐氏距離,也是特征空間中數(shù)據(jù)點(diǎn)的臨近度的計(jì)算。其公式如下所示:
歐氏距離(A,B)=[i=1N(pi-qi)2]? ? ? ? ? ? ? ? ? ?(2)
常用的核函數(shù)有矩形核、三角核、三權(quán)核、余弦核等。
K近鄰中的k值選擇對(duì)于算法至關(guān)重要,如果太小,得到的觀測(cè)值會(huì)有很高的方差,太大的話,方差會(huì)減小,但偏差會(huì)變得不可接受,因此必須進(jìn)行交叉驗(yàn)證以確定合適的k值[1]。
2.4 決策樹算法
決策樹是一種倒樹結(jié)構(gòu),它由根結(jié)點(diǎn)、內(nèi)結(jié)點(diǎn)、葉結(jié)點(diǎn)和邊組成。決根節(jié)點(diǎn)是最上面的結(jié)點(diǎn),葉節(jié)點(diǎn)是給出判斷結(jié)論的節(jié)點(diǎn),內(nèi)部節(jié)點(diǎn)是相對(duì)概念。構(gòu)造決策樹的作用就是分類或者回歸,本文研究的是分類,也就是目標(biāo)變量類別和屬性之間的關(guān)系。當(dāng)關(guān)系構(gòu)造出來(lái)以后,我們就可以對(duì)測(cè)試數(shù)據(jù)集的類別進(jìn)行預(yù)測(cè)了。決策樹的構(gòu)建過(guò)程包括兩個(gè)步驟:決策樹的生成和生成樹的剪枝。樹的生成是按照一定的劃分條件逐層分類至不可再分或不需要再分,充分生成樹。而剪枝是先找出固定葉節(jié)點(diǎn)數(shù)下擬合效果最優(yōu)的樹,即局部最優(yōu)模型,再比較各個(gè)葉節(jié)點(diǎn)數(shù)下的局部最優(yōu)模型,最終選擇出全局最優(yōu)模型。決策樹的常用算法是分類回歸樹CART和C4.5算法[8]。
3 實(shí)驗(yàn)結(jié)果與分析
本文的實(shí)驗(yàn)?zāi)康氖怯脵C(jī)器學(xué)習(xí)的以上幾種算法建立模型,比較這幾種模型在糖尿病數(shù)據(jù)集上得到的準(zhǔn)確率,選擇準(zhǔn)確率高的模型作為該數(shù)據(jù)集的模型。所用的數(shù)據(jù)來(lái)自UCI數(shù)據(jù)集里的皮馬印第安人糖尿病數(shù)據(jù)集,該數(shù)據(jù)集含有768樣本,8個(gè)屬性變量和1個(gè)標(biāo)簽變量.其中,標(biāo)簽值為1代表患糖尿病,標(biāo)簽值為-0表示未患糖尿病.這九個(gè)屬性分別是懷孕次數(shù),血糖值,血壓值,皮脂厚度,胰島素量、BMI,糖尿病遺傳函數(shù),年齡。通過(guò)對(duì)類別的統(tǒng)計(jì)發(fā)現(xiàn),值為1的樣本有500個(gè),值為-1的樣本有268個(gè)。
3.1 模型建立
本實(shí)驗(yàn)在R語(yǔ)言的R-Studio環(huán)境下進(jìn)行。首先對(duì)原始數(shù)據(jù)進(jìn)行清洗預(yù)處理,本數(shù)據(jù)集的缺失數(shù)據(jù)采用的是隨機(jī)森林迭代法的missForest( )方法填補(bǔ)缺失值。并且按照70/30的比例劃分?jǐn)?shù)據(jù),建立訓(xùn)練集和測(cè)試集。
隨機(jī)森林建模有2個(gè)參數(shù)需要人為控制,一個(gè)是隨機(jī)森林建模中構(gòu)建決策分支時(shí)隨機(jī)抽樣的變量個(gè)數(shù)mtry,另一個(gè)是每次迭代生成的隨機(jī)森林中決策樹數(shù)量ntree。本次實(shí)驗(yàn)的數(shù)據(jù)共有9個(gè)變量,可通過(guò)遍歷設(shè)定mtry參數(shù)1至8進(jìn)行8次建模,求出每次的錯(cuò)誤率,選取錯(cuò)誤率最低的mtry取值。根據(jù)遍歷結(jié)果,當(dāng)mtry=7時(shí),錯(cuò)誤率達(dá)到最低,將模型錯(cuò)誤率與決策數(shù)量的關(guān)系可視化可得ntree的值為118。
KNN建模的關(guān)鍵是選擇合適的參數(shù)k,在本實(shí)驗(yàn)中采用的是交叉驗(yàn)證方法,使用caret包中的trainControl()函數(shù),得到最優(yōu)的參數(shù)k=15,得到測(cè)試集上的正確率是74%。
構(gòu)建SVM模型,我們使用的是e1071包,對(duì)非線性模型,常用的核函數(shù)有多項(xiàng)式核函數(shù)、徑向基核函數(shù)、Sigmoid核函數(shù)。實(shí)驗(yàn)中使用tune.svm函數(shù)選擇調(diào)優(yōu)參數(shù),使用十折交叉驗(yàn)證對(duì)參數(shù)進(jìn)行調(diào)優(yōu)。最后,選擇Sigmoid核函數(shù)作為最優(yōu)的建模模型。
在決策樹模型建模過(guò)程中用到了Xgboost包,首先先建立模型網(wǎng)格,用十折交叉驗(yàn)證方法來(lái)訓(xùn)練調(diào)優(yōu)參數(shù),得到最優(yōu)的參數(shù)組合來(lái)建立模型,用xgb.train()函數(shù)創(chuàng)建模型,用information包中的函數(shù)找出使誤差最小化的最優(yōu)概率閾值,得到最優(yōu)模型。
3.2 模型評(píng)估
對(duì)于以上模型的評(píng)價(jià)指標(biāo)主要有以下幾個(gè):混淆矩陣(Confusion Matrix)、準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)、平方根誤差(RMSE)、AUC(ROC曲線下面積)。
以下是基于糖尿病數(shù)據(jù)的分類結(jié)果比較:
[分類
模型 class Confusion
Matrix Precision Rccall Accuracy
(%) AUC(ROC曲線下面積) KNN yes 116 32 0.78 0.83 74 0.866 no 23 41 SVM yes 112 39 0.74 0.83 71 0.820 no 22 39 隨機(jī)
森林 yes 124 29 0.81 0.88 78 0.893 no 17 42 決策樹 yes 113 27 0.81 0.79 73 0.857 no 30 42 ]
本實(shí)驗(yàn)采用十折交叉驗(yàn)證預(yù)測(cè)得到AUC值。并紀(jì)錄取值最大的一組,作為最優(yōu)的訓(xùn)練集與測(cè)試集劃分。使用最優(yōu)劃分構(gòu)建線性分類器并預(yù)測(cè)。
從以上分析結(jié)果來(lái)看,在對(duì)糖尿病數(shù)據(jù)的預(yù)判上,隨機(jī)森林模型的效果是這四種里最好的,其次是KNN和決策樹,SVM的效果稍差些。
通過(guò)以上數(shù)據(jù)可以得出四種模型的誤判率,其中,KNN的誤判率為0.259,SVM的為0.287,隨機(jī)森林的為0.217,決策樹的為0.269。最后,選擇誤判率低、精確度高的隨機(jī)森林模型作為糖尿病數(shù)據(jù)的預(yù)判模型。
4 結(jié)論
本文分別機(jī)器學(xué)習(xí)中隨機(jī)森林、支持向量機(jī)、k近鄰算法和決策樹算法,并針對(duì)糖尿病數(shù)據(jù)分別應(yīng)用這四種算法建立相應(yīng)的模型,對(duì)模型的參數(shù)進(jìn)行了優(yōu)化,以靠近該算法的最佳模型。結(jié)果表明隨機(jī)森林的平均準(zhǔn)確率高于其他模型的,其誤判率相對(duì)來(lái)說(shuō)也是比較低的。最后通過(guò)十折交叉驗(yàn)證方法得到的ROC曲線圖表明,隨機(jī)森林模型在對(duì)糖尿病的預(yù)測(cè)精度高于其他模型。
對(duì)于運(yùn)用機(jī)器學(xué)習(xí)對(duì)糖尿病的檢測(cè),最終選擇了最好的隨機(jī)森林模型.其次比較好的就是其次是KNN和決策樹,SVM對(duì)糖尿病數(shù)據(jù)的預(yù)測(cè)效果稍差些。
參考文獻(xiàn):
[1] 楊帆,林琛.基于隨機(jī)森林的潛在k近鄰算法及其在基因表達(dá)數(shù)據(jù)分類中的應(yīng)用[J].系統(tǒng)工程理論與實(shí)踐,2012,32(4):815-825.
[2] 胡峰,程欣怡.基于粗糙集的多分類器集成學(xué)習(xí)算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2016,37(6):1610-1616.
[3] Xue Wang.Daowei Bi.Sheng Wang.Fault Recognitiong with Labeled Multi-category Support Vector Machine[J].IEEE Transaction on Neutral Computation,2007,24(4):45-50.
[4] R.Morpurgo,S.Mussi.An intelligent diagnostic support system[J].Expert Systems,2001,18(l):43-58.
[5] 梁麗軍,劉子先,王化強(qiáng).基于彈性網(wǎng)-SVM的疾病診斷關(guān)鍵特征識(shí)別[J].計(jì)算機(jī)應(yīng)用研究,2015(5):1301-1304.
[6] 陳慧靈.面向智能決策問(wèn)題的機(jī)器學(xué)習(xí)方法研究[D].吉林大學(xué),2012.
[7] 宋辛科.基于支持向量機(jī)和決策樹的多值分類器[J].計(jì)算機(jī)工程,2004.30(4):122-124.
[8] 劉振巖,王萬(wàn)森.機(jī)器學(xué)習(xí)在數(shù)據(jù)挖掘中的應(yīng)用與發(fā)展[J].計(jì)算機(jī)工程與應(yīng)用,2002(38):173-174.
[9] Sela. Rebecca J.,and Simonoff,Jeffey S.RE-EM trees:A data mining approach for Longitudinal and clustered data. Machine Learing,2012(86):169-207.
[10] 曾華軍,張銀奎.機(jī)器學(xué)習(xí)[M].北京:機(jī)械工業(yè)出版社,2003.
[通聯(lián)編輯:光文玲]