黃樸文
(慈溪市慈溪中學(xué),浙江寧波,315300)
糖尿病是是一組以高血糖為特征的代表性疾病,目前廣泛在中老年群體發(fā)病,患病者會(huì)導(dǎo)致血糖升高,激素紊亂,破壞人體正常的免疫系統(tǒng)。因此,通過測量人體的一些參數(shù)指標(biāo),來預(yù)測人體是否患有糖尿病,以便于及時(shí)采取治療手段就顯得十分有必要。
在本文中,將根據(jù)皮馬印第安人糖尿病數(shù)據(jù)集,通過一些人體的特征,構(gòu)建相應(yīng)的分類模型,來預(yù)測其是否患有糖尿病。
本研究采用開放的皮馬印第安人糖尿病數(shù)據(jù)集,數(shù)據(jù)集包含了768個(gè)皮馬印第安人糖尿病信息樣本(樣本均為女性),每個(gè)樣本包含該女性年齡,懷孕次數(shù),血糖指數(shù),血壓指數(shù)等8個(gè)特征,目標(biāo)值Y表示該女性樣本是否患有糖尿病。
我們總共有768名皮馬印第安人女性樣本,我們將數(shù)據(jù)劃分為500個(gè)樣本作為測試集,用于訓(xùn)練我們的模型,剩下的268名女性樣本作為測試集,用來檢驗(yàn)我們訓(xùn)練出的模型的好壞。
1.1.1 kNN模型原理
kNN(k –Nearest Neighbor)算法,又稱之為 k臨近算法,是數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)中最簡單的分類方法之一。K臨近指的是待分類樣本點(diǎn)最近的k個(gè)鄰居。kNN 模型最初由 Cover 和 Hart 于 1968 年被提出, 是一個(gè)在理論上比較成熟的方法[1]。
kNN模型的主要思想是,將訓(xùn)練集繪制在特征空間中,然后將待分類樣本,通過特定的距離計(jì)算公式,得到該樣本在該特征空間最近的k個(gè)鄰居,然后采取投票原則,將k個(gè)鄰居中得票最多的類別作為待分類樣本的類別。
在我們要解決的問題中,我們的訓(xùn)練集樣本包括500名皮馬印第安人女性以及相關(guān)的8個(gè)特征,將它們繪制在特征空間里。在測試集的268個(gè)樣本中,我們計(jì)算每一個(gè)樣本與訓(xùn)練集中500個(gè)樣本的距離遠(yuǎn)近,挑選出最近距離的k個(gè)樣本,然后采取投票原則,k個(gè)樣本中所屬類別最多的類別就是測試樣本的類別。從而判斷該樣本是否患有糖尿病。
1.1.2 結(jié)果分析
我們采用了sklearn機(jī)器學(xué)習(xí)庫中kNN模型算法,對(duì)我們的數(shù)據(jù)集進(jìn)行了訓(xùn)練。并且嘗試了不同的k取值在該問題上的正確率。結(jié)果顯示,在測試集上的正準(zhǔn)率大概在71.64%左右。
由于我們的訓(xùn)練集比較小,只有500個(gè)訓(xùn)練樣本,但是當(dāng)訓(xùn)練集樣本十分大時(shí),比如上百萬時(shí),這個(gè)時(shí)候kNN算法的局限性就暴露出來了,每預(yù)測一個(gè)新的樣本的類別,我們都需要計(jì)算該樣本與上百萬樣本的距離,會(huì)造成算法運(yùn)行速度非常緩慢,效率低下,這時(shí)候需要采用其他的分類模型來解決該問題。
1.2.1 邏輯回歸模型原理
邏輯回歸是機(jī)器學(xué)習(xí)中一種常見的分類模型,其對(duì)于簡單的分類問題具有良好的效果。其基本原理是采用sigmoid函數(shù)作為我們的預(yù)測函數(shù),來預(yù)測條件概率P(y = 1 | x)。在我們的問題中,sigmoid函數(shù)的輸出就是該女性患有糖尿病的概率,范圍在[0,1]之間。模型在訓(xùn)練的過程中,通過不斷最小化極大似然代價(jià)函數(shù),來提高模型預(yù)測的準(zhǔn)確率。在訓(xùn)練的過程中,加入正則化項(xiàng),可在一定程度上減輕模型過擬合[2]。
在我們要解決的問題中,我們的樣本包括500個(gè)皮馬印第安人女性,模型將通過這500個(gè)樣本數(shù)據(jù)的8個(gè)特征,通過梯度下降算法學(xué)習(xí)θ向量的值,最終在268個(gè)測試樣本上進(jìn)行測試。
1.2.2 邏輯回歸存在的問題
在使用梯度下降法進(jìn)行學(xué)習(xí)時(shí),算法會(huì)不斷的降低代價(jià)函數(shù)的值,隨著代價(jià)函數(shù)的不斷降低,雖然模型在訓(xùn)練集上的準(zhǔn)確率不斷的提高,但是模型的泛化能力也會(huì)下降,模型在測試集上并不會(huì)有很好的表現(xiàn)。此時(shí)模型就陷入了過擬合,意味著模型過度的擬合了訓(xùn)練集,包括一些噪聲數(shù)據(jù)等。因此,為了緩解模型的過擬合,需要采取一定的措施。
1.2.3 邏輯回歸正則化
為了緩解模型過擬合,在邏輯回歸的代價(jià)函數(shù)上,我們加入了正則化項(xiàng),常見的正則化手段有L1正則化,L2正則化。正則化主要是通過限制學(xué)習(xí)參數(shù)θ的取值,來達(dá)到簡化模型的目的,它使θ不會(huì)過大。
對(duì)于我們的問題,將采用L1正則化,加入了正則化項(xiàng)的代價(jià)函數(shù)如式1所示。其中的C稱為正則化參數(shù),又叫懲罰因子。當(dāng)C過大時(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í)庫中l(wèi)ogsitic模型算法,對(duì)我們的數(shù)據(jù)進(jìn)行了訓(xùn)練。并且嘗試了不同的正則化參數(shù),最終在測試集上的正確率大概在79.85%左右,這個(gè)性能相對(duì)于KNN模型來講,有了很大的提升。而且即使當(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)。也就是說,我們有時(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é)果來得到最終的決策結(jié)果。這樣即使某一個(gè)弱分類器得到了錯(cuò)誤的預(yù)測,那么其他的分類器也能將錯(cuò)誤糾正過來。
因此,從集成學(xué)習(xí)的基本思想我們可以知道,集成學(xué)習(xí)一共分為兩步。第一步是得到多個(gè)基本的學(xué)習(xí)器,第二步是采用一定的策略,把第一步得到的學(xué)習(xí)器結(jié)合起來,得到最終的學(xué)習(xí)器。
1.3.2 集成學(xué)習(xí)之個(gè)體學(xué)習(xí)器
通常有兩種方法來得到多個(gè)基本學(xué)習(xí)器。第一種方式是所有的基本學(xué)習(xí)器都來自同一個(gè)模型,即是同質(zhì)的。比如全部都是決策樹學(xué)習(xí)器,或者全部都是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)器。第二種方式是所有的基本學(xué)習(xí)器來自于不同的模型,即是異質(zhì)的。比如對(duì)于一個(gè)分類問題而言,我們可以分別采用KNN,SVM,神經(jīng)網(wǎng)絡(luò)等多個(gè)模型,然后再將多個(gè)模型的結(jié)果綜合起來得到最終的結(jié)果。
目前在機(jī)器學(xué)習(xí)領(lǐng)域,一般都采用基于同質(zhì)學(xué)習(xí)器的集成學(xué)習(xí)。我們所說的集成學(xué)習(xí)在默認(rèn)情況下都是指同質(zhì)集成學(xué)習(xí)器。其中在同質(zhì)集成學(xué)習(xí)中,應(yīng)用最為廣泛的是CRAT決策樹。同質(zhì)基本學(xué)習(xí)器又可以按照兩種方式來得到,第一種方式是不同的基本學(xué)習(xí)器可以并行生成,不存在比較強(qiáng)的依賴關(guān)系,基于這種算法思想的有bagging算法。另外一種方式是不同的基本學(xué)習(xí)器通過串行生成,不同的基本學(xué)習(xí)器之間存在著比較大的依賴關(guān)系,基于這種算法思想的有boosting算法。
1.3.3 集成學(xué)習(xí)之boosting
基于boosting的集成學(xué)習(xí),不同的基本學(xué)習(xí)器是通過串行一步一步得到的。算法首先將每個(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í),是通過不斷的對(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í)中的回歸問題,比較常用的方法是將若干個(gè)基本學(xué)習(xí)器的輸出求平均值來得到最終分類器的輸出。
比較常用的求平均值的方法有算數(shù)平均和加權(quán)平均。最簡單的為算數(shù)平均,如2式所示。如果每個(gè)個(gè)體學(xué)習(xí)器有一個(gè)權(quán)重wi,則最終的預(yù)測如2.3式所示。其中H(x)為集成學(xué)習(xí)器的最終輸出,hi(x)為每個(gè)個(gè)體學(xué)習(xí)器的輸出,T為集成的個(gè)體學(xué)習(xí)器的個(gè)數(shù)。

(2)投票法
對(duì)于分類問題,一般采用投票法進(jìn)行決策。每個(gè)弱分類器給出自己的判別結(jié)果,然后將所有的結(jié)果進(jìn)行綜合得到最終決策。
最簡單的投票法是相對(duì)多數(shù)投票法,也就是我們常說的少數(shù)服從多數(shù),也就是T個(gè)弱學(xué)習(xí)器的對(duì)樣本x的預(yù)測結(jié)果中,數(shù)量最多的類別作為最終的分類類別。如果不止一個(gè)類別獲得最高票,則隨機(jī)選擇一個(gè)做最終類別。
稍微復(fù)雜的投票法是絕對(duì)多數(shù)投票法,也就是我們常說的要票過半數(shù)。在相對(duì)多數(shù)投票法的基礎(chǔ)上,不光要求獲得最高票,還要求票過半數(shù)。否則會(huì)拒絕預(yù)測。
更加復(fù)雜的是加權(quán)投票法,和加權(quán)平均法一樣,每個(gè)弱學(xué)習(xí)器的分類票數(shù)要乘以一個(gè)權(quán)重,最終將各個(gè)類別的加權(quán)票數(shù)求和,最大的值對(duì)應(yīng)的類別為最終類別。
(3)學(xué)習(xí)法
上述兩種方法都是對(duì)弱學(xué)習(xí)器的結(jié)果做平均或者投票,相對(duì)比較簡單,但是可能學(xué)習(xí)誤差較大,于是就有了學(xué)習(xí)法這種方法,對(duì)于學(xué)習(xí)法,代表方法是stacking,當(dāng)使用stacking的結(jié)合策略時(shí), 我們不是對(duì)弱學(xué)習(xí)器的結(jié)果做簡單的邏輯處理,而是再加上一層學(xué)習(xí)器,也就是說,我們將訓(xùn)練集弱學(xué)習(xí)器的學(xué)習(xí)結(jié)果作為輸入,將訓(xùn)練集的輸出作為輸出,重新訓(xùn)練一個(gè)學(xué)習(xí)器來得到最終結(jié)果。
在這種情況下,我們將弱學(xué)習(xí)器稱為初級(jí)學(xué)習(xí)器,將用于結(jié)合的學(xué)習(xí)器稱為次級(jí)學(xué)習(xí)器。對(duì)于測試集,我們首先用初級(jí)學(xué)習(xí)器預(yù)測一次,得到次級(jí)學(xué)習(xí)器的輸入樣本,再用次級(jí)學(xué)習(xí)器預(yù)測一次,得到最終的預(yù)測結(jié)果。
1.3.6 對(duì)糖尿病數(shù)據(jù)集應(yīng)用集成學(xué)習(xí)
在我們的糖尿病數(shù)據(jù)集中,我們將分別采用kNN和邏輯回歸作為個(gè)體學(xué)習(xí)器,采用基本相對(duì)投票法作為結(jié)合策略,來驗(yàn)證集成學(xué)習(xí)在該問題上的效果。
(1)Bagging集成kNN模型
基本原理:我們采用了sklearn中的Bagging Classifier來實(shí)現(xiàn)集成學(xué)習(xí)算法,個(gè)體學(xué)習(xí)器采用了Kneighbors Classifier,為了加速kNN算法的運(yùn)行,在存儲(chǔ)訓(xùn)練集樣本時(shí),我們采用了kdTree數(shù)據(jù)結(jié)構(gòu),來加速最近鄰的查找過程。
結(jié)果分析:我們分別設(shè)置了bagging參數(shù)T = 300,400,500,600。最終的實(shí)驗(yàn)結(jié)果表明,當(dāng)T = 500時(shí),模型在測試集上的準(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來實(shí)現(xiàn)bagging算法,個(gè)體學(xué)習(xí)器采用Logistic Regression,為了避免陷入過擬合,邏輯回歸加入了L1正則化項(xiàng)。并且分別設(shè)置了不同的bagging參數(shù),即個(gè)體學(xué)習(xí)器的數(shù)目T,觀察不同的參數(shù)T,對(duì)結(jié)果的影響。
結(jié)果分析:我們?cè)跍y試過程中,分別設(shè)置了bagging參數(shù)T = 30,40,50,60來觀察不同的參數(shù)T,在測試集上的準(zhǔn)確率。最終實(shí)驗(yàn)結(jié)果表明,當(dāng)T = 50時(shí),模型在測試集上的準(zhǔn)確率達(dá)到了80.97%。而在前面采用單一的邏輯回歸進(jìn)行學(xué)習(xí)時(shí),在測試集上的準(zhǔn)確率只有79%左右。由此可見,在采用了基于bagging的集成學(xué)習(xí)后,模型的泛化能力增強(qiáng),性能提升,在測試集上的準(zhǔn)確率得到了提高。
本項(xiàng)目根據(jù)具體的皮馬印第安人糖尿病數(shù)據(jù)集實(shí)例,在該數(shù)據(jù)上分別采用了個(gè)體學(xué)習(xí)器kNN,個(gè)體學(xué)習(xí)器邏輯回歸,bagging集成kNN,bagging集成邏輯回歸。在測試集上分別取得了71%,79%,73%,80%左右的準(zhǔn)確率。驗(yàn)證了在采用了基于bagging算法的集成學(xué)習(xí)后,相對(duì)于使用單一的個(gè)體學(xué)習(xí)器而言,在測試集上的準(zhǔn)確率都有了一定的提高,表現(xiàn)出了集成學(xué)習(xí)方法相對(duì)于單一模型學(xué)習(xí)方法的優(yōu)異性。