任雪妮, 羅幼喜
(湖北工業(yè)大學(xué)理學(xué)院, 湖北 武漢 430068)
單個(gè)分類的學(xué)習(xí)效果有時(shí)候并不是很理想,為了解決這個(gè)問題,集成學(xué)習(xí)算法由此產(chǎn)生。集成學(xué)習(xí)并不是單指某一種分類器,而是充分利用了群體學(xué)習(xí)思想,將一個(gè)或多個(gè)弱分類器結(jié)合成一個(gè)強(qiáng)分類器的一種方法,其中的弱分類器可以是各種分類算法。常使用的集成學(xué)習(xí)方法有bagging和boosting(本文主要使用bagging算法)[1]。對(duì)于集成算法是否真的比單個(gè)分類器具有更高的準(zhǔn)確性,不少學(xué)者進(jìn)行了研究。David和Richard[2]使用決策樹和神經(jīng)網(wǎng)絡(luò)分別研究了bagging和boosting兩種集成方法,還與單個(gè)分類器方法進(jìn)行比較;Michiel和Rob[3]的研究包含bagging集成在內(nèi)的4種方法。這些學(xué)者發(fā)現(xiàn)集成學(xué)習(xí)算法的效果的確是好于單個(gè)分類器。
由于集成算法的優(yōu)良性,也有不少學(xué)者使用集成算法進(jìn)行實(shí)際應(yīng)用,特別是在經(jīng)濟(jì)金融領(lǐng)域。Mariola等[4]采用集成方法對(duì)信用卡借款者進(jìn)行了識(shí)別;Atsushi和Lutz[5]探討了bagging方法在預(yù)測(cè)經(jīng)濟(jì)時(shí)間序列中的作用;Choprab和Bhilare[6]使用集成樹學(xué)習(xí)方法對(duì)銀行貸款數(shù)據(jù)集進(jìn)行分析。
經(jīng)濟(jì)金融領(lǐng)域一直以來都受到學(xué)者們的關(guān)注。本文對(duì)經(jīng)濟(jì)金融領(lǐng)域的數(shù)據(jù)集進(jìn)行分析,選擇C5.0決策樹、KNN和樸素貝葉斯算法作為bagging算法的基本算法,針對(duì)每個(gè)數(shù)據(jù)集,從所構(gòu)造的幾種bagging方法中選取預(yù)測(cè)效果最好的方法對(duì)其進(jìn)行實(shí)例研究。
Step1:采用Bootstraping方法從訓(xùn)練集中隨機(jī)進(jìn)行k次抽取,每次抽取的訓(xùn)練集的樣本個(gè)數(shù)與本文設(shè)置的原始訓(xùn)練集樣本數(shù)相同。
Step2:使用k個(gè)弱分類器對(duì)k個(gè)訓(xùn)練集分別進(jìn)行訓(xùn)練,可以得到k個(gè)模型。此處的分類器可以是一個(gè)或多個(gè)分類算法。
Step3:對(duì)k個(gè)模型采用投票方式即可得到分類結(jié)果,在投票過程中,每個(gè)模型給與的權(quán)重相同。
圖1顯示了Bagging算法的具體過程。
圖1 bagging算法過程
Step1:計(jì)算測(cè)試集中每個(gè)樣本點(diǎn)與訓(xùn)練集中所有樣本點(diǎn)的距離,并對(duì)測(cè)試集中的每個(gè)樣本點(diǎn)所得的距離進(jìn)行排序。
Step2:測(cè)試集中的每個(gè)樣本點(diǎn)選擇訓(xùn)練集中與其距離最小的k個(gè)點(diǎn),并確定前k個(gè)點(diǎn)所在類別的出現(xiàn)頻率,以出現(xiàn)頻率最高的類別作為測(cè)試集樣本點(diǎn)的預(yù)測(cè)分類。
Step1:計(jì)算各輸入變量的信息增益率,以信息增益率最大的變量為最佳分組變量。若分組變量為k類分類變量,則形成k個(gè)分枝。若為數(shù)值型,則用分箱法進(jìn)行處理后再分枝。
Step2:計(jì)算各節(jié)點(diǎn)誤差,若子節(jié)點(diǎn)誤差大于其父節(jié)點(diǎn)誤差,則進(jìn)行剪枝。
對(duì)于分類數(shù)據(jù)集,給定樣本自變量x,則該樣本屬于類別y的概率
樸素貝葉斯算法[8]的原理就是根據(jù)以上公式,計(jì)算出每個(gè)樣本屬于各分類的概率,概率最大的那個(gè)分類即為預(yù)測(cè)分類。
從UCI網(wǎng)站上獲取了4個(gè)數(shù)據(jù)集,將其簡(jiǎn)記為credit,bank,stock,audit。數(shù)據(jù)集credit根據(jù)用戶的一些屬性來判斷用戶能否用信用卡進(jìn)行貸款。在該數(shù)據(jù)集中存在缺失值,缺失值處理方法是用0填補(bǔ)。數(shù)據(jù)集bank主要是銀行機(jī)構(gòu)通過電話推銷的一款銀行定期存款產(chǎn)品是否會(huì)被訂購(gòu)。數(shù)據(jù)集stock主要是根據(jù)以往數(shù)據(jù)預(yù)測(cè)下一周股票價(jià)格變化情況。數(shù)據(jù)集audit是印度審計(jì)辦公室收集的關(guān)于一些公司的數(shù)據(jù),主要是根據(jù)一些重要的風(fēng)險(xiǎn)因素來判斷這些公司是否有變成可疑公司的風(fēng)險(xiǎn),bank,stock,audit數(shù)據(jù)集中無缺失值。表1為這些數(shù)據(jù)集的基本情況。
表1 數(shù)據(jù)集
為了評(píng)價(jià)預(yù)測(cè)的準(zhǔn)確度,將使用混淆矩陣中的指標(biāo),混淆矩陣的具體形式如表2所示。
表2 混淆矩陣
TP(True Positive),表示響應(yīng)變量實(shí)際分類為1,預(yù)測(cè)分類也為1;
FN(False Negative),表示響應(yīng)變量實(shí)際分類為1,預(yù)測(cè)分類卻為2;
FP(False Positive), 表示響應(yīng)變量實(shí)際分類為2,預(yù)測(cè)分類卻為1;
TN(True Negative),表示響應(yīng)變量實(shí)際分類為2,預(yù)測(cè)分類也為2;
準(zhǔn)確率(Accurary),表示所有分類正確的數(shù)量占總樣本量的比例,其具體公式為:
在進(jìn)行評(píng)價(jià)時(shí),使用預(yù)測(cè)誤差Err(error)來判斷模型預(yù)測(cè)的好壞,其計(jì)算公式為:
Err=1-ACU
選取KNN、C5.0決策樹、樸素貝葉斯三種經(jīng)典的分類算法,對(duì)它們采用單類、兩兩混合、三種混合形式構(gòu)造了7種組合方法,分別簡(jiǎn)記為bag_k,bag_c,bag_b,bag_kc,bag_kb,bag_cb,bag_kcb。為了研究弱分類器的個(gè)數(shù)對(duì)bagging算法所得到強(qiáng)分類器預(yù)測(cè)準(zhǔn)確性的影響以及credit,bank,stock和audit數(shù)據(jù)集最合適的分類器的個(gè)數(shù)。設(shè)置弱分類器個(gè)數(shù)分別為R=10,R=20,R=50。各個(gè)方法中3種分類器具體設(shè)置個(gè)數(shù)見表3。
表3 分類器個(gè)數(shù)設(shè)置情況
credit,bank,stock和audit數(shù)據(jù)集重復(fù)模擬100次后得到預(yù)測(cè)誤差的結(jié)果如表4所示。從表4可以知道,在credit數(shù)據(jù)集中,使用bag_k,bag_c,bag_kc,bag_kcb方法得到的預(yù)測(cè)誤差在R=50時(shí)最小,其他三種方法在R=20時(shí)最小。
在bank數(shù)據(jù)集中,使用bag_k,bag_c,bag_b,bag_kc方法得到的預(yù)測(cè)誤差在R=20時(shí)最小,bag_kb方法在R=10時(shí)最小,而bag_cb和bag_kcb方法在R=50時(shí)最小。
在stock數(shù)據(jù)集中,bag_k和bag_cb方法得到的預(yù)測(cè)誤差在R=10時(shí)最小,bag_c,bag_b和bag_kb方法在R=50時(shí)最小,bag_kc和bag_kcb方法在R=20時(shí)最小。
在audit數(shù)據(jù)集中,bag_k方法得到的預(yù)測(cè)誤差在R=20時(shí)最小,bag_c,bag_b,bag_kb,bag_cb,bag_kcb在R=50時(shí)最小,而bag_kc方法在R=20和R=50時(shí)都最小。
從研究的幾種情況看,所使用的7種方法在預(yù)測(cè)誤差達(dá)到最小時(shí)所使用的弱分類器的個(gè)數(shù)有所區(qū)別,即弱分類器的個(gè)數(shù)對(duì)bagging算法所得到強(qiáng)分類器預(yù)測(cè)準(zhǔn)確性有影響。在credit,stock和audit數(shù)據(jù)集中,R=50是7種方法中使預(yù)測(cè)誤差達(dá)最小時(shí)出現(xiàn)頻率最高的分類器個(gè)數(shù)。而在bank數(shù)據(jù)集中,出現(xiàn)頻率最高的分類器個(gè)數(shù)為R=20。綜合來看,R=50是使預(yù)測(cè)誤差達(dá)最小時(shí)出現(xiàn)頻率最高的分類器個(gè)數(shù)。
表4 分類器個(gè)數(shù)不同的模擬結(jié)果
為了研究弱分類器的構(gòu)成種類對(duì)bagging算法所得到強(qiáng)分類器預(yù)測(cè)準(zhǔn)確性的影響以及credit,bank,stock,audit數(shù)據(jù)集最合適的分類器組合方法,7種方法設(shè)置同樣的分類器個(gè)數(shù),然后對(duì)比7種方法下所得到預(yù)測(cè)誤差情況。通過模擬一的研究可以知道,在此模擬中設(shè)置分類數(shù)個(gè)數(shù)R=50是比較合適的。對(duì)4個(gè)數(shù)據(jù)集重復(fù)模擬100次后得到預(yù)測(cè)誤差的結(jié)果如圖2所示。
圖 2 四個(gè)數(shù)據(jù)集下各方法預(yù)測(cè)結(jié)果
圖2中橫坐標(biāo)1-7分別對(duì)應(yīng)bag_k,bag_c,bag_b,bag_kc,bag_kb,bag_cb,bag_kcb等7種方法。在credit和stock數(shù)據(jù)集中,使用bag_c方法得到的預(yù)測(cè)誤差最小,bag_k方法預(yù)測(cè)誤差最大;在bank數(shù)據(jù)集中,bag_cb方法得到的預(yù)測(cè)誤差最小,預(yù)測(cè)誤差最大的是bag_k方法;在audit數(shù)據(jù)集中,bag_c方法得到的預(yù)測(cè)誤差最小,預(yù)測(cè)誤差最大的是bag_b方法。
弱分類器的構(gòu)成種類對(duì)bagging算法所得到強(qiáng)分類器預(yù)測(cè)準(zhǔn)確性有影響而且除了bank數(shù)據(jù)集,其他3個(gè)預(yù)測(cè)結(jié)果最好的是使用bag_c方法??偟膩砜矗琤ag_c方法這種弱分類器構(gòu)成種類能得到更好地預(yù)測(cè)誤差結(jié)果。從bag_k,bag_c,bag_b這3種方法的模擬結(jié)果來看,只有一種分類器構(gòu)造的bagging方法中使用C5.0決策樹的結(jié)果總是最好的。這也說明bagging算法構(gòu)成的分類器的準(zhǔn)確性與其弱分類器的性能有較大關(guān)系。
通過模擬一和模擬二的分析可以看到,數(shù)據(jù)集的不同,構(gòu)成bagging算法的方法和弱分類器個(gè)數(shù)會(huì)有一些細(xì)微差別。為最終確定credit,bank,stock和audit數(shù)據(jù)集最合適的分類器組合方法所選取的4個(gè)數(shù)據(jù)集分別擁有不同的數(shù)據(jù)特點(diǎn):
credit,小數(shù)據(jù)集且離散和連續(xù)型自變量個(gè)數(shù)相差不大;
bank,大數(shù)據(jù)集且離散和連續(xù)型自變量個(gè)數(shù)相差不大;
stock,小數(shù)據(jù)集且只有連續(xù)型自變量;
audit,小數(shù)據(jù)集且離散自變量個(gè)數(shù)遠(yuǎn)多于連續(xù)型。
結(jié)合模擬一和模擬二對(duì)這4個(gè)數(shù)據(jù)集進(jìn)行集中討論分析,以此來確定最適合這4個(gè)數(shù)據(jù)集的方法和分類器個(gè)數(shù)。
根據(jù)模擬一數(shù)據(jù)來分析,對(duì)于credit和stock數(shù)據(jù)集,所有情形都是使用bag_c方法得到了最小預(yù)測(cè)誤差,即這兩個(gè)數(shù)據(jù)集更適合使用bag_c方法來進(jìn)行測(cè)試。對(duì)于bank和audit數(shù)據(jù)集,在分類器個(gè)數(shù)不同的3種情形中有2次使用bag_c方法得到了最小預(yù)測(cè)誤差,即這2個(gè)數(shù)據(jù)集也更適合使用bag_c方法來進(jìn)行測(cè)試。
而且根據(jù)模擬一的分析知道,credit,stock,audit數(shù)據(jù)集都可以讓R=50作為預(yù)測(cè)誤差達(dá)最小時(shí)出現(xiàn)頻率最高的分類器個(gè)數(shù)。對(duì)于bank數(shù)據(jù)集,使預(yù)測(cè)誤差達(dá)最小時(shí)出現(xiàn)頻率最高的分類器個(gè)數(shù)是R=20。除了bank數(shù)據(jù)集,在模擬二中其他三個(gè)預(yù)測(cè)結(jié)果最好的是使用bag_c方法,但當(dāng)bank數(shù)據(jù)集選擇分類器個(gè)數(shù)為R=20時(shí),使用bag_c方法能夠得到最佳的預(yù)測(cè)結(jié)果??梢源_定最適合這4個(gè)數(shù)據(jù)集方法和分類器個(gè)數(shù)情況如表5所示。
表5 四個(gè)數(shù)據(jù)集最佳組合
credit,bank,stock和audit這4個(gè)數(shù)據(jù)集無論數(shù)據(jù)特性如何,使用bag_c方法都可讓其預(yù)測(cè)誤差達(dá)到最小,但使用的分類器個(gè)數(shù)卻有一定差別,bank數(shù)據(jù)集樣本量最大,使預(yù)測(cè)誤差達(dá)最小時(shí)所需要的分類器個(gè)數(shù)卻比其他三個(gè)數(shù)據(jù)集在預(yù)測(cè)誤差達(dá)最小時(shí)所用的分類器個(gè)數(shù)少。
bank數(shù)據(jù)集涉及的是銀行機(jī)構(gòu)推銷的一款銀行定期存款產(chǎn)品是否會(huì)被訂購(gòu)。若銀行定期存款產(chǎn)品沒有被用戶訂購(gòu),此處設(shè)置為類別1,否則為類別2。自變量的變量名及其具體含義如表6所示。
對(duì)該數(shù)據(jù)集使用bag_c方法,并設(shè)置分類器個(gè)數(shù)為R=20,可以得到其測(cè)試集的混淆矩陣如表7所示。從表7可以知道,測(cè)試集中的樣本數(shù)據(jù)量為1356。實(shí)際用戶對(duì)銀行定期存款產(chǎn)品訂購(gòu)情況類別為1的有1266位,但其中有66位用戶的訂購(gòu)情況被誤判為類別2。對(duì)于類別1而言,其判斷正確的準(zhǔn)確率為94.79%,即在沒有訂購(gòu)銀行定期存款產(chǎn)品的用戶中,有94.79%的用戶被預(yù)測(cè)正確??梢钥吹狡錅?zhǔn)確率比較高,這樣不會(huì)錯(cuò)失過多的沒有訂購(gòu)的用戶。對(duì)于沒有訂購(gòu)的用戶可以繼續(xù)進(jìn)行推銷,有可能會(huì)推銷成功。而實(shí)際用戶對(duì)銀行定期存款產(chǎn)品訂購(gòu)情況類別為2的有90位,其中有13位用戶的訂購(gòu)情況被誤判為類別2。對(duì)于類別2而言,其判斷正確的準(zhǔn)確率為85.56%,即在已經(jīng)訂購(gòu)銀行定期存款產(chǎn)品的用戶中,有85.56%的用戶被預(yù)測(cè)正確。雖然對(duì)成功訂購(gòu)用戶的預(yù)測(cè)準(zhǔn)確性一般,但是對(duì)于該次推銷活動(dòng)的結(jié)果影響不大。最終計(jì)算可得到bank測(cè)試集中所有數(shù)據(jù)的預(yù)測(cè)誤差Err=0.0583。即bag_c方法對(duì)于此數(shù)據(jù)集的準(zhǔn)確性達(dá)到94.17%,可以看到預(yù)測(cè)的準(zhǔn)確性還是不錯(cuò)的。
表6 bank數(shù)據(jù)集自變量解釋
表7 bank測(cè)試集的混淆矩陣
給出了bank數(shù)據(jù)集在用bag_c方法進(jìn)行預(yù)測(cè)分類時(shí)各自變量的重要程度,具體情況如圖3所示。
圖 3 bank數(shù)據(jù)集中自變量重要性
從圖3中可以看到,previous,pdays,housing和edu這4個(gè)變量的重要程度所占比重非常小,幾乎可以忽略不計(jì),即使用bag_c方法對(duì)bank數(shù)據(jù)集進(jìn)行測(cè)試所得到的預(yù)測(cè)結(jié)果與用戶的這4個(gè)屬性無關(guān)。而month,duration,day,age和balance這5個(gè)變量的重要程度所占比重為前5,且它們的重要程度所占比重都超過了10%。由圖3可知:month和day這2個(gè)變量說明選擇聯(lián)系用戶的時(shí)間節(jié)點(diǎn)很重要;duration這個(gè)變量說明與用戶通話時(shí)間的長(zhǎng)短也影響用戶是否會(huì)訂購(gòu)產(chǎn)品(畢竟用戶不想訂購(gòu)是不會(huì)有太多耐心長(zhǎng)時(shí)間通電話);age這個(gè)變量說明用戶的年齡也會(huì)對(duì)產(chǎn)品的推銷結(jié)果產(chǎn)生較大影響,現(xiàn)實(shí)生活中不同年齡階段的人對(duì)于是否將錢進(jìn)行理財(cái)也有不同見解;同樣balance這個(gè)變量也說明用戶每年所剩的平均余額會(huì)影響其是否會(huì)訂購(gòu)銀行產(chǎn)品,畢竟用戶有多余的錢才可能考慮投入銀行理財(cái),與事實(shí)情況也很接近。
1)在credit,stock和audit數(shù)據(jù)集中,R=50是7種方法中使預(yù)測(cè)誤差達(dá)最小時(shí)出現(xiàn)次數(shù)最多的分類器個(gè)數(shù),而在bank數(shù)據(jù)集中,出現(xiàn)次數(shù)最多的分類器個(gè)數(shù)R=20。
2)bag_c方法這種弱分類器構(gòu)成種類能得到更好的預(yù)測(cè)誤差結(jié)果。
3)credit,stock和audit數(shù)據(jù)集最佳搭配都是使用bag_c方法,并設(shè)置分類器個(gè)數(shù)R=50。而bank數(shù)據(jù)集最佳搭配是使用bag_c方法,并設(shè)置分類器個(gè)數(shù)R=20。
4)使用bag_c方法,并設(shè)置分類器個(gè)數(shù)R=20對(duì)bank數(shù)據(jù)集進(jìn)行預(yù)測(cè),可以得到很好的準(zhǔn)確性。