汪藝璇
(河北地質(zhì)大學(xué)經(jīng)濟(jì)學(xué)院,石家莊 050030)
糖尿病是一種慢性疾病,目前還無(wú)法徹底治愈,其以高血糖為主要發(fā)病特征,會(huì)引發(fā)一系列的并發(fā)癥。由于知曉率較低,往往患者發(fā)現(xiàn)患病時(shí)已經(jīng)產(chǎn)生了一系列的并發(fā)癥。若能找出糖尿病患者的相關(guān)特征,對(duì)其進(jìn)行早期預(yù)測(cè),防患于未然,可令患者更早的接受治療,有助于更好地預(yù)防。目前,關(guān)于糖尿病分類(lèi)預(yù)測(cè)的研究取得了一定的進(jìn)展,汪迎歸[1]提出優(yōu)化及改進(jìn)的Stacking分類(lèi)預(yù)測(cè)模型,取得了較好的預(yù)測(cè)結(jié)果。楊雨含等[2]基于隨機(jī)森林及序聯(lián)合搜索的Wrapper式特征選擇算法精度達(dá)到81.13%。劉文博等[3]基于迭代隨機(jī)森林對(duì)糖尿病數(shù)據(jù)集進(jìn)行分類(lèi),得到的分類(lèi)結(jié)果較好。苗豐順[4]使用了一種新型的Boosting算法進(jìn)行糖尿病分類(lèi),預(yù)測(cè)效果較好。但目前基于樹(shù)模型預(yù)測(cè)方法的糖尿病分類(lèi)研究文獻(xiàn)較少,樹(shù)模型是以決策為基礎(chǔ)的分類(lèi)方法,包含單一的決策樹(shù)及決策樹(shù)組合模型。本研究以糖尿病分類(lèi)為研究對(duì)象,分析對(duì)比了一系列樹(shù)模型,如C4.5決策樹(shù)生成算法、CART決策樹(shù)生成算法、Bagging算法、隨機(jī)森林、Adaboost算法等在糖尿病分類(lèi)預(yù)測(cè)中的性能。
樹(shù)模型是一種以決策樹(shù)模型為基礎(chǔ)的模型,包括單一的決策樹(shù)模型及組合的決策樹(shù)模型。其中單一的決策樹(shù)模型又發(fā)展出了不同的決策樹(shù)生成算法,如C4.5與CART算法可用來(lái)生產(chǎn)決策樹(shù),這兩種算法的區(qū)別在于特征選擇方式不同,C4.5算法使用了信息增益比,CART算法則采用了基尼指數(shù)對(duì)特征進(jìn)行分類(lèi)。組合決策樹(shù)模型是以單一的決策樹(shù)模型組合生成一系列的樹(shù)集體進(jìn)行決策,如Bagging算法。主要思想是隨機(jī)采樣,即在訓(xùn)練集上隨機(jī)采樣,建立不同的決策樹(shù),合成一個(gè)強(qiáng)分類(lèi)器,合成的方法為簡(jiǎn)單投票法,得到票數(shù)最多的標(biāo)簽類(lèi)別作為投票結(jié)果。隨機(jī)森林算法也稱(chēng)為Bagging的加強(qiáng)版,對(duì)決策樹(shù)的建立做了一些改進(jìn),在建立過(guò)程中引入隨機(jī)特征選擇。Adaboost算法是用加權(quán)多數(shù)表決的一種決策樹(shù)集成方法,在訓(xùn)練過(guò)程中如果某個(gè)樣本在前一輪決策樹(shù)的建立中被錯(cuò)分,那么在建立下一棵決策樹(shù)時(shí)就會(huì)給它較大的權(quán)重,令其受到更多的關(guān)注。
決策樹(shù)模型整體結(jié)構(gòu)像一棵樹(shù),從最開(kāi)始的一個(gè)節(jié)點(diǎn)出發(fā),通過(guò)數(shù)據(jù)訓(xùn)練選擇最優(yōu)特征并不斷分叉下去,是很好的一種分類(lèi)方法,當(dāng)決策數(shù)據(jù)結(jié)果訓(xùn)練好以后,輸入樣本便能預(yù)測(cè)出該樣本屬于哪種類(lèi)別,適用于糖尿病分類(lèi)問(wèn)題。本研究主要探究決策樹(shù)生成算法中的C4.5與CART算法。
在C4.5生成算法[5]中,以信息增益比進(jìn)行特征選取,若設(shè)訓(xùn)練集為D,特征為A,信息增益為g(D,A),訓(xùn)練集D關(guān)于特征A的值的熵為HA(D),具體表達(dá)式如下:
(1)
其中,n為特征A取值的個(gè)數(shù),特征A對(duì)訓(xùn)練集D的信息增益比為其信息增益與HA(D)的比,具體表達(dá)式為:
(2)
在CART生成算法[6]中,以基尼指數(shù)進(jìn)行特征選擇,假設(shè)有K個(gè)類(lèi),樣本點(diǎn)屬于第k類(lèi)的概率為pk,那么概率分布的基尼指數(shù)定義表達(dá)式為:
(3)
由于糖尿病分類(lèi)是一個(gè)二分類(lèi)問(wèn)題,若設(shè)樣本屬于糖尿病的概率為p,則概率分布的基尼指數(shù)表達(dá)式具體為:
Gini(p)=2p(1-p)
(4)
對(duì)于一個(gè)給定的樣本集合D,基尼指數(shù)按照如下公式定義:
(5)
其中,K是類(lèi)總共的數(shù)目,Ck是D中屬于第k類(lèi)的樣本的一個(gè)子集。
決策樹(shù)組合模型則是把許多的樹(shù)組合在一塊進(jìn)行分類(lèi)預(yù)測(cè),單棵樹(shù)的學(xué)習(xí)能力一般不如許多個(gè)樹(shù)一塊學(xué)習(xí),這樣集成起來(lái)的分類(lèi)預(yù)測(cè)能力強(qiáng)。若把單棵樹(shù)看做弱分類(lèi)器,那么決策樹(shù)組合模型就是合成多個(gè)樹(shù),每個(gè)樹(shù)的結(jié)果綜合在一塊,然后一起給出最終結(jié)果,根據(jù)特征選擇方式及弱分類(lèi)器集成方式的不同形成了多種決策樹(shù)組合模型,包括Bagging算法、隨機(jī)森林算法、Adaboost算法。
Bagging算法是一種相對(duì)于隨機(jī)森林與AdaBoost算法簡(jiǎn)單得多的算法。這種算法的思想很簡(jiǎn)單,是把每個(gè)決策樹(shù)看做是一個(gè)人,很多人組成一個(gè)群體,那么要決策一件事情時(shí),每個(gè)人都形成一種自己的判斷,然后所有人一塊進(jìn)行投票,得到最多的類(lèi)別作為最終的決策。以糖尿病分類(lèi)預(yù)測(cè)為例,在Bagging算法中,設(shè)樣本集為D={(x1,y1),(x2,y2),…,(xm,ym)},其中m代表樣本量,為768,xi(i=1,2,…,m)∈R8,yi(i=1,2,…,m)∈R,t=1,2,…,T,每次采樣m′( (6) 隨機(jī)森林算法[7]是一種使用廣泛的集成樹(shù)分類(lèi)算法,因其良好的分類(lèi)性能得到了人們的認(rèn)可,是Bagging算法的升級(jí)版,對(duì)t=1,2,…,T每次在集合D中隨機(jī)采樣形成集合Dm′,但是整個(gè)過(guò)程與Bagging算法不同,在訓(xùn)練決策樹(shù)模型節(jié)點(diǎn)時(shí),只選取一部分樣本特征,在其中選擇一個(gè)最優(yōu)特征來(lái)做決策樹(shù)的下一步分叉決策,形成弱分類(lèi)器Mt(Dm′),最終綜合成強(qiáng)分類(lèi)器,其表達(dá)式為: (7) Adaboost算法[8]的總體思想是形成一系列弱分類(lèi)器,再組合成強(qiáng)分類(lèi)器,但與前兩種組合算法存在極大的不同。如弱分類(lèi)器組成強(qiáng)分類(lèi)器的方法不同,不再采用簡(jiǎn)單隨機(jī)投票得票多勝出的方法,而是進(jìn)行一定的綜合,這種綜合體現(xiàn)為偏重多數(shù)的決策辦法,即在決策時(shí)向分類(lèi)誤差率小的樹(shù)進(jìn)行偏斜。在構(gòu)建下一輪弱分類(lèi)器時(shí),更加重視被前一輪樹(shù)分錯(cuò)的樣本,算法步驟是對(duì)數(shù)據(jù)的權(quán)值分布進(jìn)行初始化,即: (8) 對(duì)t=1,2,…,T用具有Wt的訓(xùn)練集進(jìn)行學(xué)習(xí)得到分類(lèi)樹(shù)Ηt,計(jì)算它的分類(lèi)誤差率: (9) 計(jì)算它的系數(shù)為: (10) 更新訓(xùn)練集的權(quán)值分布為: (11) 構(gòu)建多個(gè)樹(shù)的線性組合,得到最終的模型為: (12) 數(shù)據(jù)來(lái)源為UCI上的糖尿病數(shù)據(jù)集,該數(shù)據(jù)集共有樣本768條,數(shù)據(jù)中給出了每個(gè)樣本的分類(lèi)標(biāo)簽,其中為糖尿患者的樣本為268,非糖尿病患者的數(shù)據(jù)500條,可見(jiàn)樣本標(biāo)簽分類(lèi)較為均衡,比值約為3∶5。數(shù)據(jù)集的特征變量共有8個(gè),變量名稱(chēng)分別為Pregnancies、Glucose、BloodPressure、SkinThickness、Insulin、BMI、DiabetesPedigreeFunction、Age,取值均為連續(xù)型數(shù)據(jù)。利用這8個(gè)特征數(shù)據(jù)訓(xùn)練分類(lèi)器之前,檢查原始數(shù)據(jù)集,觀察其中是否有缺失,發(fā)現(xiàn)數(shù)據(jù)集較完整,無(wú)缺失,較為理想,將數(shù)據(jù)格式調(diào)整為數(shù)值型數(shù)據(jù)即可投入分類(lèi)器訓(xùn)練中。 對(duì)數(shù)據(jù)的描述性統(tǒng)計(jì)分析可以從總體上掌握統(tǒng)計(jì)特征,故對(duì)糖尿病患者的8個(gè)特征變量數(shù)據(jù)進(jìn)行描述性統(tǒng)計(jì),包括數(shù)據(jù)最大值、最小值等,結(jié)果如表1所示。 表1 特征變量的描述性統(tǒng)計(jì)分析 通過(guò)對(duì)8個(gè)特征變量的描述性統(tǒng)計(jì)分析可知,Pregnancies的最小值為0,最大值為17,平均值為3.8451,標(biāo)準(zhǔn)差為3.36958,偏度為0.902,峰度為0.159,Age的最小值為21歲,最大值為81歲,平均為33歲,以此類(lèi)推,可以得到其他各特征變量的描述性統(tǒng)計(jì)結(jié)果。2.3 兩種決策樹(shù)模型的建立與結(jié)果分析 C4.5算法下的模型,利用R軟件進(jìn)行決策樹(shù)的建立及結(jié)果分析,利用數(shù)據(jù)訓(xùn)練出決策樹(shù),繪制出原始的決策樹(shù),發(fā)現(xiàn)其枝葉較為繁茂,故需要對(duì)決策樹(shù)進(jìn)行修剪,主要通過(guò)參數(shù)U進(jìn)行設(shè)置,參數(shù)U代表不對(duì)決策樹(shù)進(jìn)行剪枝,默認(rèn)值為T(mén)rue,將模型的參數(shù)U設(shè)置為False,并將剪枝過(guò)程的置信閾值設(shè)為0.05,每個(gè)葉結(jié)點(diǎn)最小觀察樣本量設(shè)置為6。參數(shù)B代表每個(gè)節(jié)點(diǎn)僅分為兩個(gè)分支,默認(rèn)值為T(mén)rue,設(shè)置為False。繪制簡(jiǎn)化版的決策樹(shù)如圖1所示。 圖1 決策樹(shù)C4.5 建立CART算法生成的決策樹(shù)模型,利用數(shù)據(jù)訓(xùn)練出原始的決策樹(shù),發(fā)現(xiàn)訓(xùn)練出的模型較為復(fù)雜,故綜合模型復(fù)雜度及預(yù)測(cè)精度進(jìn)行了決策樹(shù)剪枝,計(jì)算復(fù)雜度列表并進(jìn)行可視化,繪制了模型復(fù)雜度與模型錯(cuò)誤率的關(guān)系圖,如圖2所示。 圖2 復(fù)雜度與模型錯(cuò)誤率關(guān)系圖 經(jīng)過(guò)綜合考量,選取復(fù)雜度為0.01,建立決策樹(shù)如圖3所示。 圖3 決策樹(shù)CART 給出以上兩種算法下決策樹(shù)的分類(lèi)混淆矩陣及模型預(yù)測(cè)精度。經(jīng)過(guò)分析,訓(xùn)練并建立最終的決策樹(shù)模型,為了比較分析兩種模型的預(yù)測(cè)性能,給出分類(lèi)預(yù)測(cè)混淆矩陣如表2、表3所示。 表2 決策樹(shù)C4.5分類(lèi)預(yù)測(cè)混淆矩陣 表3 決策樹(shù)CART分類(lèi)預(yù)測(cè)混淆矩陣 由表2、表3可見(jiàn),決策樹(shù)C4.5將30名未患糖尿病的人錯(cuò)分成了糖尿病患者,還有131名糖尿病患者沒(méi)有識(shí)別出來(lái),而決策樹(shù)CART將44名未患糖尿病的人分成了糖尿病患者,還有88名糖尿病患者沒(méi)有識(shí)別出來(lái)。根據(jù)這兩個(gè)混淆矩陣,計(jì)算了C4.5算法與CART算法生成的決策樹(shù)預(yù)測(cè)錯(cuò)誤率分別為20.96%、17.19%,可見(jiàn)CART算法生成的決策樹(shù)對(duì)糖尿病的分類(lèi)預(yù)測(cè)效果更好一些。 Bagging算法較為簡(jiǎn)單,主要通過(guò)建立多個(gè)決策樹(shù)進(jìn)行投票,觀察哪個(gè)得票最多,從而做出決策。在隨機(jī)森林算法中,可根據(jù)OBB錯(cuò)判率來(lái)決定樹(shù)的棵數(shù),故繪制隨機(jī)森林的OBB錯(cuò)判率及決策樹(shù)棵樹(shù)之間的關(guān)系圖進(jìn)行判斷。利用R軟件繪制的OBB錯(cuò)判率及決策樹(shù)棵樹(shù)之間的關(guān)系如圖4所示: 圖4 OBB錯(cuò)判率與決策樹(shù)棵樹(shù)之間的關(guān)系 通過(guò)圖4可以看出,當(dāng)建立的決策樹(shù)棵樹(shù)為100棵時(shí),隨機(jī)森林的模型錯(cuò)判率趨于穩(wěn)定,故采用100棵樹(shù)建立隨機(jī)森林模型。Adaboost算法是通過(guò)多棵樹(shù)建立決策樹(shù)組合預(yù)測(cè),不再采取簡(jiǎn)單投票而是進(jìn)行線性綜合,利用R軟件依據(jù)糖尿病數(shù)據(jù)進(jìn)行模型擬合。 對(duì)建立的3種決策樹(shù)組合模型在糖尿病數(shù)據(jù)集上的分類(lèi)性能進(jìn)行分析比較,給出3種決策樹(shù)組合模型分類(lèi)預(yù)測(cè)的混淆矩陣,如表4、表5、表6所示。 表4 Bgging算法分類(lèi)預(yù)測(cè)混淆矩陣 表5 隨機(jī)森林算法分類(lèi)預(yù)測(cè)混淆矩陣 表6 Adaboost算法分類(lèi)預(yù)測(cè)混淆矩陣 由表4、表5、表6可見(jiàn),Bagging算法只將1名未患糖尿病的人錯(cuò)分成了糖尿病患者,只有8名糖尿病患者沒(méi)有識(shí)別出來(lái)。隨機(jī)森林算法與Adaboost算法則全部分類(lèi)正確,所有糖尿病患者都識(shí)別出來(lái)了,且沒(méi)有把未患糖尿病的人錯(cuò)分為糖尿病患者。根據(jù)這3個(gè)混淆矩陣計(jì)算Bagging算法、隨機(jī)森林算法及Adaboost算法在糖尿病分類(lèi)預(yù)測(cè)中的錯(cuò)誤率分別為1.17%、0%、0%,可見(jiàn)隨機(jī)森林算法與Adaboost算法生成的決策樹(shù)對(duì)糖尿病的分類(lèi)預(yù)測(cè)效果更好一些。 通過(guò)以上2種決策樹(shù)生成算法及3種決策樹(shù)組合預(yù)測(cè)模型的分類(lèi)結(jié)果可知,這5種樹(shù)模型的分類(lèi)預(yù)測(cè)性能從總體上看,3種決策樹(shù)組合分類(lèi)模型皆?xún)?yōu)于單一的決策樹(shù)分類(lèi)預(yù)測(cè)模型,證實(shí)了決策樹(shù)組合模型在糖尿病分類(lèi)預(yù)測(cè)中的優(yōu)越性。選擇Adaboost模型作為糖尿病預(yù)測(cè)模型,進(jìn)行輸入變量的重要性分析,以確定影響糖尿病發(fā)生的重要特征,為糖尿病的預(yù)防提供參考。利用R軟件計(jì)算出8個(gè)糖尿病特征變量的重要性,如表7所示。 表7 特征變量重要性 為了更直觀地看出8個(gè)變量的重要性大小關(guān)系,進(jìn)一步對(duì)8個(gè)變量的數(shù)據(jù)重要性進(jìn)行可視化,繪制成柱形圖如圖5所示。 圖5 輸入變量的重要性 由圖5可知,對(duì)糖尿病患者進(jìn)行分類(lèi)預(yù)測(cè)的過(guò)程中,變量重要性從大到小依次為Glucose、BMI、DiabetesPedigreeFunction、BloodPressure、Age、Pregnancies、SkinThickness、Insulin。其中,Glucose、BMI、DiabetesPedigreeFunction三個(gè)變量的重要性較大,分值均在18分以上,故在糖尿病的預(yù)防及診斷過(guò)程中要特別關(guān)注這3個(gè)特征變量的情況。 分析了決策樹(shù)C4.5、決策樹(shù)CART、Bagging、隨機(jī)森林及Adaboost等5種算法在糖尿病預(yù)測(cè)中的表現(xiàn),發(fā)現(xiàn)決策樹(shù)C4.5將30名未患糖尿病的人錯(cuò)分成了糖尿病患者,還有131名糖尿病患者沒(méi)有識(shí)別出來(lái);決策樹(shù)CART將44名未患糖尿病的人分成了糖尿病患者,還有88名糖尿病患者沒(méi)有識(shí)別出來(lái);Bagging算法只將1名未患糖尿病的人錯(cuò)分成了糖尿病患者,只有8名糖尿病患者沒(méi)有識(shí)別出來(lái);隨機(jī)森林算法及Adaboost算法則全部分類(lèi)正確。這5種樹(shù)模型的分類(lèi)預(yù)測(cè)錯(cuò)誤率分別為20.96%、17.19%、1.17%、0%、0%,從總體上看,3種決策樹(shù)組合分類(lèi)模型皆?xún)?yōu)于單一的決策樹(shù)分類(lèi)預(yù)測(cè)模型,證實(shí)了決策樹(shù)組合模型在糖尿病分類(lèi)預(yù)測(cè)中的優(yōu)越性。選擇Adaboost模型找到糖尿病的影響因素相對(duì)重要性,發(fā)現(xiàn)Glucose、BMI、DiabetesPedigreeFunction 3個(gè)變量的重要性較大,故在糖尿病預(yù)防及診斷過(guò)程中要特別關(guān)注這3個(gè)特征變量的情況。2 模型構(gòu)建與結(jié)果
2.1 數(shù)據(jù)來(lái)源與預(yù)處理
2.2 數(shù)據(jù)的描述性統(tǒng)計(jì)
2.3 三種決策樹(shù)組合模型的建立與結(jié)果分析
2.4 糖尿病分類(lèi)預(yù)測(cè)變量的重要性分析
3 結(jié)論和建議