黃樸文
(慈溪市慈溪中學(xué),浙江寧波,315300)
糖尿病是是一組以高血糖為特征的代表性疾病,目前廣泛在中老年群體發(fā)病,患病者會(huì)導(dǎo)致血糖升高,激素紊亂,破壞人體正常的免疫系統(tǒng)。因此,通過(guò)測(cè)量人體的一些參數(shù)指標(biāo),來(lái)預(yù)測(cè)人體是否患有糖尿病,以便于及時(shí)采取治療手段就顯得十分有必要。
在本文中,將根據(jù)皮馬印第安人糖尿病數(shù)據(jù)集,通過(guò)一些人體的特征,構(gòu)建相應(yīng)的分類(lèi)模型,來(lái)預(yù)測(cè)其是否患有糖尿病。
本研究采用開(kāi)放的皮馬印第安人糖尿病數(shù)據(jù)集,數(shù)據(jù)集包含了768個(gè)皮馬印第安人糖尿病信息樣本(樣本均為女性),每個(gè)樣本包含該女性年齡,懷孕次數(shù),血糖指數(shù),血壓指數(shù)等8個(gè)特征,目標(biāo)值Y表示該女性樣本是否患有糖尿病。
我們總共有768名皮馬印第安人女性樣本,我們將數(shù)據(jù)劃分為500個(gè)樣本作為測(cè)試集,用于訓(xùn)練我們的模型,剩下的268名女性樣本作為測(cè)試集,用來(lái)檢驗(yàn)我們訓(xùn)練出的模型的好壞。
1.1.1 kNN模型原理
kNN(k –Nearest Neighbor)算法,又稱(chēng)之為 k臨近算法,是數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)中最簡(jiǎn)單的分類(lèi)方法之一。K臨近指的是待分類(lèi)樣本點(diǎn)最近的k個(gè)鄰居。kNN 模型最初由 Cover 和 Hart 于 1968 年被提出, 是一個(gè)在理論上比較成熟的方法[1]。
kNN模型的主要思想是,將訓(xùn)練集繪制在特征空間中,然后將待分類(lèi)樣本,通過(guò)特定的距離計(jì)算公式,得到該樣本在該特征空間最近的k個(gè)鄰居,然后采取投票原則,將k個(gè)鄰居中得票最多的類(lèi)別作為待分類(lèi)樣本的類(lèi)別。
在我們要解決的問(wèn)題中,我們的訓(xùn)練集樣本包括500名皮馬印第安人女性以及相關(guān)的8個(gè)特征,將它們繪制在特征空間里。在測(cè)試集的268個(gè)樣本中,我們計(jì)算每一個(gè)樣本與訓(xùn)練集中500個(gè)樣本的距離遠(yuǎn)近,挑選出最近距離的k個(gè)樣本,然后采取投票原則,k個(gè)樣本中所屬類(lèi)別最多的類(lèi)別就是測(cè)試樣本的類(lèi)別。從而判斷該樣本是否患有糖尿病。
1.1.2 結(jié)果分析
我們采用了sklearn機(jī)器學(xué)習(xí)庫(kù)中kNN模型算法,對(duì)我們的數(shù)據(jù)集進(jìn)行了訓(xùn)練。并且嘗試了不同的k取值在該問(wèn)題上的正確率。結(jié)果顯示,在測(cè)試集上的正準(zhǔn)率大概在71.64%左右。
由于我們的訓(xùn)練集比較小,只有500個(gè)訓(xùn)練樣本,但是當(dāng)訓(xùn)練集樣本十分大時(shí),比如上百萬(wàn)時(shí),這個(gè)時(shí)候kNN算法的局限性就暴露出來(lái)了,每預(yù)測(cè)一個(gè)新的樣本的類(lèi)別,我們都需要計(jì)算該樣本與上百萬(wàn)樣本的距離,會(huì)造成算法運(yùn)行速度非常緩慢,效率低下,這時(shí)候需要采用其他的分類(lèi)模型來(lái)解決該問(wèn)題。
1.2.1 邏輯回歸模型原理
邏輯回歸是機(jī)器學(xué)習(xí)中一種常見(jiàn)的分類(lèi)模型,其對(duì)于簡(jiǎn)單的分類(lèi)問(wèn)題具有良好的效果。其基本原理是采用sigmoid函數(shù)作為我們的預(yù)測(cè)函數(shù),來(lái)預(yù)測(cè)條件概率P(y = 1 | x)。在我們的問(wèn)題中,sigmoid函數(shù)的輸出就是該女性患有糖尿病的概率,范圍在[0,1]之間。模型在訓(xùn)練的過(guò)程中,通過(guò)不斷最小化極大似然代價(jià)函數(shù),來(lái)提高模型預(yù)測(cè)的準(zhǔn)確率。在訓(xùn)練的過(guò)程中,加入正則化項(xiàng),可在一定程度上減輕模型過(guò)擬合[2]。
在我們要解決的問(wèn)題中,我們的樣本包括500個(gè)皮馬印第安人女性,模型將通過(guò)這500個(gè)樣本數(shù)據(jù)的8個(gè)特征,通過(guò)梯度下降算法學(xué)習(xí)θ向量的值,最終在268個(gè)測(cè)試樣本上進(jìn)行測(cè)試。
1.2.2 邏輯回歸存在的問(wèn)題
在使用梯度下降法進(jìn)行學(xué)習(xí)時(shí),算法會(huì)不斷的降低代價(jià)函數(shù)的值,隨著代價(jià)函數(shù)的不斷降低,雖然模型在訓(xùn)練集上的準(zhǔn)確率不斷的提高,但是模型的泛化能力也會(huì)下降,模型在測(cè)試集上并不會(huì)有很好的表現(xiàn)。此時(shí)模型就陷入了過(guò)擬合,意味著模型過(guò)度的擬合了訓(xùn)練集,包括一些噪聲數(shù)據(jù)等。因此,為了緩解模型的過(guò)擬合,需要采取一定的措施。
1.2.3 邏輯回歸正則化
為了緩解模型過(guò)擬合,在邏輯回歸的代價(jià)函數(shù)上,我們加入了正則化項(xiàng),常見(jiàn)的正則化手段有L1正則化,L2正則化。正則化主要是通過(guò)限制學(xué)習(xí)參數(shù)θ的取值,來(lái)達(dá)到簡(jiǎn)化模型的目的,它使θ不會(huì)過(guò)大。
對(duì)于我們的問(wèn)題,將采用L1正則化,加入了正則化項(xiàng)的代價(jià)函數(shù)如式1所示。其中的C稱(chēng)為正則化參數(shù),又叫懲罰因子。當(dāng)C過(guò)大時(shí),由于優(yōu)化算法需要最小化J(θ),因此θ的取值就會(huì)被限制在比較小的范圍里,此時(shí)相當(dāng)于正則化的程度比較強(qiáng)。當(dāng)C比較小時(shí),相當(dāng)于θ的取值可以相對(duì)比較大,此時(shí)相當(dāng)于正則化的程度比較弱。yi指的是訓(xùn)練集樣本的標(biāo)簽分布。
1.2.4 結(jié)果分析我們采用了sklearn機(jī)器學(xué)習(xí)庫(kù)中l(wèi)ogsitic模型算法,對(duì)我們的數(shù)據(jù)進(jìn)行了訓(xùn)練。并且嘗試了不同的正則化參數(shù),最終在測(cè)試集上的正確率大概在79.85%左右,這個(gè)性能相對(duì)于KNN模型來(lái)講,有了很大的提升。而且即使當(dāng)樣本數(shù)目十分龐大時(shí),邏輯回歸模型也能夠保證運(yùn)行效率。
1.3.1 集成學(xué)習(xí)基本原理
在機(jī)器學(xué)習(xí)的有監(jiān)督學(xué)習(xí)模型中,我們希望算法能夠?qū)W習(xí)出一個(gè)穩(wěn)定的且在各個(gè)方面性能都表現(xiàn)的較好的模型,但是實(shí)際情況往往不這么理想,因?yàn)槊恳粋€(gè)模型都存在優(yōu)點(diǎn)以及缺點(diǎn)。也就是說(shuō),我們有時(shí)只能得到多個(gè)在某些方面偏好的模型(弱監(jiān)督模型)。而集成學(xué)習(xí)就是組合這里的多個(gè)弱監(jiān)督模型以期得到一個(gè)更好更全面的強(qiáng)監(jiān)督模型,集成學(xué)習(xí)的思想就是綜合多個(gè)弱監(jiān)督模型的優(yōu)點(diǎn),根據(jù)多個(gè)弱監(jiān)督模型的決策結(jié)果來(lái)得到最終的決策結(jié)果。這樣即使某一個(gè)弱分類(lèi)器得到了錯(cuò)誤的預(yù)測(cè),那么其他的分類(lèi)器也能將錯(cuò)誤糾正過(guò)來(lái)。
因此,從集成學(xué)習(xí)的基本思想我們可以知道,集成學(xué)習(xí)一共分為兩步。第一步是得到多個(gè)基本的學(xué)習(xí)器,第二步是采用一定的策略,把第一步得到的學(xué)習(xí)器結(jié)合起來(lái),得到最終的學(xué)習(xí)器。
1.3.2 集成學(xué)習(xí)之個(gè)體學(xué)習(xí)器
通常有兩種方法來(lái)得到多個(gè)基本學(xué)習(xí)器。第一種方式是所有的基本學(xué)習(xí)器都來(lái)自同一個(gè)模型,即是同質(zhì)的。比如全部都是決策樹(shù)學(xué)習(xí)器,或者全部都是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)器。第二種方式是所有的基本學(xué)習(xí)器來(lái)自于不同的模型,即是異質(zhì)的。比如對(duì)于一個(gè)分類(lèi)問(wèn)題而言,我們可以分別采用KNN,SVM,神經(jīng)網(wǎng)絡(luò)等多個(gè)模型,然后再將多個(gè)模型的結(jié)果綜合起來(lái)得到最終的結(jié)果。
目前在機(jī)器學(xué)習(xí)領(lǐng)域,一般都采用基于同質(zhì)學(xué)習(xí)器的集成學(xué)習(xí)。我們所說(shuō)的集成學(xué)習(xí)在默認(rèn)情況下都是指同質(zhì)集成學(xué)習(xí)器。其中在同質(zhì)集成學(xué)習(xí)中,應(yīng)用最為廣泛的是CRAT決策樹(shù)。同質(zhì)基本學(xué)習(xí)器又可以按照兩種方式來(lái)得到,第一種方式是不同的基本學(xué)習(xí)器可以并行生成,不存在比較強(qiáng)的依賴(lài)關(guān)系,基于這種算法思想的有bagging算法。另外一種方式是不同的基本學(xué)習(xí)器通過(guò)串行生成,不同的基本學(xué)習(xí)器之間存在著比較大的依賴(lài)關(guān)系,基于這種算法思想的有boosting算法。
1.3.3 集成學(xué)習(xí)之boosting
基于boosting的集成學(xué)習(xí),不同的基本學(xué)習(xí)器是通過(guò)串行一步一步得到的。算法首先將每個(gè)訓(xùn)練樣本初始化一個(gè)權(quán)重值,然后訓(xùn)練出第一個(gè)基本學(xué)習(xí)器,計(jì)算在訓(xùn)練集上的加權(quán)錯(cuò)誤率,然后更新每個(gè)樣本的權(quán)重。最后調(diào)整每個(gè)基本學(xué)習(xí)器的權(quán)重。使準(zhǔn)確率比較高的基本學(xué)習(xí)器的權(quán)重較高,準(zhǔn)確率比較低的基本學(xué)習(xí)期的權(quán)重較低。然后根據(jù)新的樣本權(quán)重值,去訓(xùn)練下一個(gè)基本學(xué)習(xí)器,不斷循環(huán),直到達(dá)到指定基本學(xué)習(xí)器數(shù)目時(shí),算法停止。
1.3.4 集成學(xué)習(xí)之bagging
基于bagging的集成學(xué)習(xí),是通過(guò)不斷的對(duì)訓(xùn)練樣本集合做有放回的隨機(jī)取樣得到的。例如對(duì)訓(xùn)練集做M次隨機(jī)有放回抽樣,那么我們可以得到M個(gè)不同的訓(xùn)練集,對(duì)這M個(gè)不同的訓(xùn)練集,我們構(gòu)建一個(gè)模型去訓(xùn)練,這樣就可以得到M個(gè)不同的模型。最后再將這M個(gè)模型的結(jié)果融合,得到最終的模型。
1.3.5 集成學(xué)習(xí)之結(jié)合策略
(1)平均法
對(duì)于機(jī)器學(xué)習(xí)中的回歸問(wèn)題,比較常用的方法是將若干個(gè)基本學(xué)習(xí)器的輸出求平均值來(lái)得到最終分類(lèi)器的輸出。
比較常用的求平均值的方法有算數(shù)平均和加權(quán)平均。最簡(jiǎn)單的為算數(shù)平均,如2式所示。如果每個(gè)個(gè)體學(xué)習(xí)器有一個(gè)權(quán)重wi,則最終的預(yù)測(cè)如2.3式所示。其中H(x)為集成學(xué)習(xí)器的最終輸出,hi(x)為每個(gè)個(gè)體學(xué)習(xí)器的輸出,T為集成的個(gè)體學(xué)習(xí)器的個(gè)數(shù)。
(2)投票法
對(duì)于分類(lèi)問(wèn)題,一般采用投票法進(jìn)行決策。每個(gè)弱分類(lèi)器給出自己的判別結(jié)果,然后將所有的結(jié)果進(jìn)行綜合得到最終決策。
最簡(jiǎn)單的投票法是相對(duì)多數(shù)投票法,也就是我們常說(shuō)的少數(shù)服從多數(shù),也就是T個(gè)弱學(xué)習(xí)器的對(duì)樣本x的預(yù)測(cè)結(jié)果中,數(shù)量最多的類(lèi)別作為最終的分類(lèi)類(lèi)別。如果不止一個(gè)類(lèi)別獲得最高票,則隨機(jī)選擇一個(gè)做最終類(lèi)別。
稍微復(fù)雜的投票法是絕對(duì)多數(shù)投票法,也就是我們常說(shuō)的要票過(guò)半數(shù)。在相對(duì)多數(shù)投票法的基礎(chǔ)上,不光要求獲得最高票,還要求票過(guò)半數(shù)。否則會(huì)拒絕預(yù)測(cè)。
更加復(fù)雜的是加權(quán)投票法,和加權(quán)平均法一樣,每個(gè)弱學(xué)習(xí)器的分類(lèi)票數(shù)要乘以一個(gè)權(quán)重,最終將各個(gè)類(lèi)別的加權(quán)票數(shù)求和,最大的值對(duì)應(yīng)的類(lèi)別為最終類(lèi)別。
(3)學(xué)習(xí)法
上述兩種方法都是對(duì)弱學(xué)習(xí)器的結(jié)果做平均或者投票,相對(duì)比較簡(jiǎn)單,但是可能學(xué)習(xí)誤差較大,于是就有了學(xué)習(xí)法這種方法,對(duì)于學(xué)習(xí)法,代表方法是stacking,當(dāng)使用stacking的結(jié)合策略時(shí), 我們不是對(duì)弱學(xué)習(xí)器的結(jié)果做簡(jiǎn)單的邏輯處理,而是再加上一層學(xué)習(xí)器,也就是說(shuō),我們將訓(xùn)練集弱學(xué)習(xí)器的學(xué)習(xí)結(jié)果作為輸入,將訓(xùn)練集的輸出作為輸出,重新訓(xùn)練一個(gè)學(xué)習(xí)器來(lái)得到最終結(jié)果。
在這種情況下,我們將弱學(xué)習(xí)器稱(chēng)為初級(jí)學(xué)習(xí)器,將用于結(jié)合的學(xué)習(xí)器稱(chēng)為次級(jí)學(xué)習(xí)器。對(duì)于測(cè)試集,我們首先用初級(jí)學(xué)習(xí)器預(yù)測(cè)一次,得到次級(jí)學(xué)習(xí)器的輸入樣本,再用次級(jí)學(xué)習(xí)器預(yù)測(cè)一次,得到最終的預(yù)測(cè)結(jié)果。
1.3.6 對(duì)糖尿病數(shù)據(jù)集應(yīng)用集成學(xué)習(xí)
在我們的糖尿病數(shù)據(jù)集中,我們將分別采用kNN和邏輯回歸作為個(gè)體學(xué)習(xí)器,采用基本相對(duì)投票法作為結(jié)合策略,來(lái)驗(yàn)證集成學(xué)習(xí)在該問(wèn)題上的效果。
(1)Bagging集成kNN模型
基本原理:我們采用了sklearn中的Bagging Classifier來(lái)實(shí)現(xiàn)集成學(xué)習(xí)算法,個(gè)體學(xué)習(xí)器采用了Kneighbors Classifier,為了加速kNN算法的運(yùn)行,在存儲(chǔ)訓(xùn)練集樣本時(shí),我們采用了kdTree數(shù)據(jù)結(jié)構(gòu),來(lái)加速最近鄰的查找過(guò)程。
結(jié)果分析:我們分別設(shè)置了bagging參數(shù)T = 300,400,500,600。最終的實(shí)驗(yàn)結(jié)果表明,當(dāng)T = 500時(shí),模型在測(cè)試集上的準(zhǔn)確率達(dá)到73.1%。當(dāng)采用單一的個(gè)體學(xué)習(xí)器kNN時(shí),模型的準(zhǔn)確率為71.64%,性能提高了2個(gè)百分點(diǎn)。這表明采用了基于bagging的集成學(xué)習(xí)后,取得了一定的性能改善。
(2)Bagging集成邏輯回歸模型
基本原理:我們采用了sklearn中的Bagging Classifier來(lái)實(shí)現(xiàn)bagging算法,個(gè)體學(xué)習(xí)器采用Logistic Regression,為了避免陷入過(guò)擬合,邏輯回歸加入了L1正則化項(xiàng)。并且分別設(shè)置了不同的bagging參數(shù),即個(gè)體學(xué)習(xí)器的數(shù)目T,觀察不同的參數(shù)T,對(duì)結(jié)果的影響。
結(jié)果分析:我們?cè)跍y(cè)試過(guò)程中,分別設(shè)置了bagging參數(shù)T = 30,40,50,60來(lái)觀察不同的參數(shù)T,在測(cè)試集上的準(zhǔn)確率。最終實(shí)驗(yàn)結(jié)果表明,當(dāng)T = 50時(shí),模型在測(cè)試集上的準(zhǔn)確率達(dá)到了80.97%。而在前面采用單一的邏輯回歸進(jìn)行學(xué)習(xí)時(shí),在測(cè)試集上的準(zhǔn)確率只有79%左右。由此可見(jiàn),在采用了基于bagging的集成學(xué)習(xí)后,模型的泛化能力增強(qiáng),性能提升,在測(cè)試集上的準(zhǔn)確率得到了提高。
本項(xiàng)目根據(jù)具體的皮馬印第安人糖尿病數(shù)據(jù)集實(shí)例,在該數(shù)據(jù)上分別采用了個(gè)體學(xué)習(xí)器kNN,個(gè)體學(xué)習(xí)器邏輯回歸,bagging集成kNN,bagging集成邏輯回歸。在測(cè)試集上分別取得了71%,79%,73%,80%左右的準(zhǔn)確率。驗(yàn)證了在采用了基于bagging算法的集成學(xué)習(xí)后,相對(duì)于使用單一的個(gè)體學(xué)習(xí)器而言,在測(cè)試集上的準(zhǔn)確率都有了一定的提高,表現(xiàn)出了集成學(xué)習(xí)方法相對(duì)于單一模型學(xué)習(xí)方法的優(yōu)異性。