吳興惠 周玉萍 邢?;?/p>
摘要:集成學(xué)習(xí)是多分類器學(xué)習(xí)系統(tǒng)。而隨機(jī)森林是一個包含多個決策樹的分類器,是一種基于Bagging的集成學(xué)習(xí)方法。隨機(jī)森林具有預(yù)測準(zhǔn)確率、不容易出現(xiàn)過擬合的特點,在很多領(lǐng)域都有所應(yīng)用。本文主要利用隨機(jī)森林算法對心臟病數(shù)據(jù)集建立了分類預(yù)測模型,實驗結(jié)果表明,隨機(jī)森林算法在預(yù)測性能上超過了決策樹和邏輯回歸分類算法,并通過繪制ROC曲線對四種模型進(jìn)行了對比。
關(guān)鍵詞:集成學(xué)習(xí);隨機(jī)森林;預(yù)測
中圖分類號:TP181 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)21-0026-02
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
數(shù)據(jù)挖掘的一個重要領(lǐng)域是數(shù)據(jù)分類,對數(shù)據(jù)進(jìn)行分類和預(yù)測是當(dāng)前比較熱門的研究。機(jī)器學(xué)習(xí)中的分類算法屬于有監(jiān)督學(xué)習(xí),常用的分類算法有決策樹、貝葉斯、神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)、隨機(jī)森林等。集成學(xué)習(xí)是多分類器學(xué)習(xí)系統(tǒng)。而隨機(jī)森林是一個包含多個決策樹的分類器,是一種基于Bagging的集成學(xué)習(xí)方法。它包含多個決策樹,并且它的輸出類別由所有樹輸出的類別的眾數(shù)而定。由于它具有預(yù)測準(zhǔn)確率、不容易出現(xiàn)過擬合的特點,在很多領(lǐng)域都有所應(yīng)用。隨機(jī)森林在醫(yī)學(xué)領(lǐng)域、經(jīng)濟(jì)學(xué)、刑偵領(lǐng)域和模式識別領(lǐng)域取得了較好的效果。本文基于一個心臟病數(shù)據(jù)集,利用隨機(jī)森林算法建立分類模型,并將建立的模型與決策樹和邏輯回歸模型進(jìn)行對比,并通過數(shù)據(jù)繪制了各自模型的ROC曲線。結(jié)果表明,在對數(shù)據(jù)分類效果上看,隨機(jī)森林在預(yù)測性能上的效果要比決策樹和邏輯回歸模型的效果要強(qiáng)些。
1 隨機(jī)森林算法
隨機(jī)森林[1]是一種組合方法,由許多的決策樹組成,對于每一顆決策樹,隨機(jī)森林采用的是有放回的對N個樣本分N次隨機(jī)取出N個樣本,即這些決策樹的形成采用了隨機(jī)的方法,因此也叫作隨機(jī)決策樹。隨機(jī)森林中的樹之間是沒有關(guān)聯(lián)的。當(dāng)測試數(shù)據(jù)進(jìn)入隨機(jī)森林時,其實就是讓每一顆決策樹分別進(jìn)行分類,最后取所有決策樹中分類多的那類為最終的結(jié)果。隨機(jī)森林算法如圖1所示。
1.1集成學(xué)習(xí)
集成學(xué)習(xí)也稱為多分類器學(xué)習(xí)系統(tǒng),它是結(jié)合多個分類學(xué)習(xí)器來完成學(xué)習(xí)任務(wù)來構(gòu)建的。弱模型以得到一個預(yù)測效果好的強(qiáng)模型。對于分類問題就是指采用多個分類器對數(shù)據(jù)集進(jìn)行它的一般結(jié)構(gòu)是將多個個體學(xué)習(xí)器結(jié)合起來,共同發(fā)揮作用。個體學(xué)習(xí)器是通過現(xiàn)有的學(xué)習(xí)算法來訓(xùn)練數(shù)據(jù)產(chǎn)生。集成學(xué)習(xí)方法可分為二種,一是個體學(xué)習(xí)器間存在強(qiáng)依賴關(guān)系,如AdaBoost算法。而另一種是個體學(xué)習(xí)器之間不存在強(qiáng)依賴關(guān)系,可以同時生成個體學(xué)習(xí)器的并行方法,如隨機(jī)森林算法。
1.2 隨機(jī)森林算法原理
隨機(jī)森林算法,包含分類和回歸問題,其算法流程如下:
1)假如有N個樣本,則有回放的隨機(jī)選擇N個樣本(每次隨機(jī)選擇一個樣本,然后返回繼續(xù)選擇)。這選擇好了的N個樣本用來訓(xùn)練一個決策樹,作為決策樹根節(jié)點處的樣本。
2)當(dāng)每個樣本有M個屬性時,在決策樹的每個節(jié)點需要分裂時,隨機(jī)從這M個屬性中選取出m個屬性,滿足條件m<
3)決策樹形成過程中,每個節(jié)點都要按照步驟2來分裂(很容易理解,如果下一次該節(jié)點選出來的那一個屬性是剛剛父節(jié)點分裂時用過的屬性,則該節(jié)點已經(jīng)達(dá)到了葉子節(jié)點,無須繼續(xù)分裂)。一直到不能再分裂為止,注意整個決策樹形成過程中沒有剪枝。
4)按步驟1-3建立大量決策樹,如此形成隨機(jī)森林。
從上邊的步驟可以看出,隨機(jī)森林每棵樹的訓(xùn)練樣本是隨機(jī)的,數(shù)中每個節(jié)點的分類屬性也是隨機(jī)選擇的,這2個隨機(jī)的選擇過程,保證了隨機(jī)森林不會產(chǎn)生過擬合現(xiàn)象。
2 數(shù)據(jù)處理
本文使用python語言實現(xiàn)了隨機(jī)森林算法的整個流程,數(shù)據(jù)集采用的是UCI數(shù)據(jù)集上心臟病數(shù)據(jù),為了在此數(shù)據(jù)集上驗證隨機(jī)森林算法的有效性,使用隨機(jī)森林算法對該數(shù)據(jù)集進(jìn)行預(yù)測研究。
2.1 數(shù)據(jù)預(yù)處理
首先對本實驗中用到的心臟病數(shù)據(jù)集進(jìn)行預(yù)處理,對數(shù)據(jù)集中數(shù)據(jù)變量名、數(shù)值分布和缺失值情況等等有初步了解。本數(shù)據(jù)集有14個特征。對數(shù)據(jù)集中類別變量不是數(shù)值型的數(shù)據(jù)需要將類別型變量轉(zhuǎn)換為數(shù)值型變量。本文采用獨熱編碼為每個獨立值創(chuàng)建一個啞變量[2]。對特征中非連續(xù)型數(shù)值胸痛類型(cp)運(yùn)動高峰的坡度(slope),血液疾?。╰hal)三個分類型特征進(jìn)行啞變量處理。采用的是pandas對one-hot編碼的函數(shù)pd.get_dummies0。然后對數(shù)據(jù)集進(jìn)行分割,把數(shù)據(jù)切分為訓(xùn)練集和驗證集,使用train_test_split0函數(shù),將25%的數(shù)據(jù)用于驗證。
X_train, X_test, y_train, y_test= train_test_split(X,y, test_sizr=0.25,trandom_state=6),并對切分后的數(shù)據(jù)用函數(shù)standardScaler.transform0進(jìn)行歸一化處理。
2.2 特征選擇
特征選擇是為了構(gòu)建模型而選擇相關(guān)特征(即屬性、指標(biāo))子集的過程。指從數(shù)據(jù)集中已有的M個特征中選擇N個特征(M>N),也就是從原始特征中選擇出一些最有效特征以降低數(shù)據(jù)集維度的過程,最后使系統(tǒng)的指標(biāo)最優(yōu)化。本文使用隨機(jī)森林算法得到的特征變量重要性,通過特征變量比較圖對特征進(jìn)行排序,可以剔除不重要的特征。
由圖2可得出,thal_2(地中海貧血的血液疾?。?、oldpeak(相對于休息的運(yùn)動引起的ST值)與ca(血管數(shù))這三個特征比其他特征重要性高。可以使用此方法來提取對模型重要的特征,剔除不重要的特征來提高模型的預(yù)測效果。
3 模型創(chuàng)建與評估
本實驗采用的是隨機(jī)森林算法對數(shù)據(jù)進(jìn)行建模,采用py-thon語言平臺Anaconda3實現(xiàn)。在模型訓(xùn)練中,對模型效果的驗證尋找合適的參數(shù)主要有K折交叉驗證、參數(shù)網(wǎng)格搜索以及訓(xùn)練集、驗證集和測試集的引入等方法。這里采用的是參數(shù)網(wǎng)格搜索法為模型尋找更優(yōu)的參數(shù)。在參數(shù)搜索過程中,主要使用的函數(shù)為GridSearchCVO。通過此方法,可以得到隨機(jī)森林如下的最優(yōu)參數(shù):
n_estimators=500, max_leaf_nodes=16, random_state=666.oob_score=True,n_jobs=-l
為了更好地驗證隨機(jī)森林的模型性能,本文將邏輯回歸,KNN,決策樹作為對比模型,并通過F1指標(biāo),混淆矩陣,精準(zhǔn)率和召回率曲線,繪制每個模型的ROC曲線進(jìn)行對比,用對比圖來對各個模型的效果進(jìn)行評估。采用ROC曲線下的面積(area un-dercurve.AUC)作為模型性能指標(biāo),以下是實驗得到的精確度、F1-score及ROC曲線圖。
通過圖3中的幾種模型的ROC曲線比較中,可以得到,Lo-gistic Regression算法下的AUC值這0.8785,KNN下的AUC值為0.8739.DecisionTree算法下的AUC值為0.7527,RandomForest算法下的AUC值為0.9356。對于UCI心臟病數(shù)據(jù)集的分類效果來看,隨機(jī)森林的分類的效果更高些。
5 結(jié)論
本文對隨機(jī)森林算法在分類問題上的應(yīng)用進(jìn)行了研究,并且對UCI數(shù)據(jù)集上心臟病數(shù)據(jù)進(jìn)行預(yù)測,通過實驗驗證證明此算法有著很好的分類作用。下一步的研究工作是針對隨機(jī)森林算法的超參數(shù)調(diào)優(yōu)尋找更好的方法。
參考文獻(xiàn):
[1]馬驪,隨機(jī)森林算法的優(yōu)化改進(jìn)研究[D].廣州:暨南大學(xué),2016:43-49.
[2]李河,麥勁壯,肖敏,等.啞變量在Logistic回歸模型中的應(yīng)用[J].循證醫(yī)學(xué),2008,8(1): 42 - 45.
[3]李毓,張春霞.基于out-of-bag樣本的隨機(jī)森林算法的超參數(shù)估計[J].系統(tǒng)工程學(xué)報,201 1,26(4):566-572.
[4]曹正鳳.隨機(jī)森林算法優(yōu)化研究[D].北京:首都經(jīng)濟(jì)貿(mào)易大學(xué)。2014:29-34.
[5]王日升.基于Spark的一種改進(jìn)的隨機(jī)森林算法研究[D].太原:太原理工大學(xué),2017:39-47.
[6]夏濤,徐輝煌,鄭建立.基于機(jī)器學(xué)習(xí)的冠心病住院費(fèi)用預(yù)測研究[J].智能計算機(jī)與應(yīng)用,2019,9(5):35-39.
[6]馮曉榮,瞿國慶,基于深度學(xué)習(xí)與隨機(jī)森林的高維數(shù)據(jù)特征選擇[J].計算機(jī)工程與設(shè)計,2019,40(9):2494-2501.
[7]楊長春,徐筱,宦娟,等,基于隨機(jī)森林的學(xué)生畫像特征選擇方法[J].計算機(jī)工程與設(shè)計,2019,40(10):2827-2834.
[8]呂紅燕,馮倩.隨機(jī)森林算法研究綜述[J].河北省科學(xué)院學(xué)報,2019,36(3):37-41.
[9]梁瓊芳,莎仁.基于隨機(jī)森林的數(shù)學(xué)試題難易度分類研究[J].軟件導(dǎo)刊,2020,19(2):122-126.
【通聯(lián)編輯:唐一東】
收稿日期:2020-03-15
基金項目:海南省教育科學(xué)規(guī)劃課題:基于一種自學(xué)習(xí)分類算法的學(xué)生成績評價研究( QJY20181071);海南省高等學(xué)校教育教學(xué)改革研究項目(Hnjg2020-31);海南省自然科學(xué)基金項目(2019RC182)
作者簡介:吳興惠(1975-),女,海南儋州人,海南師范大學(xué)副教授,碩士,機(jī)器學(xué)習(xí);通訊作者:邢?;ǎ?976-),女,海南文昌人,海南師范大學(xué)教授,博士,智能空間信息處理。