劉 新 雯
(蘭州交通大學(xué)數(shù)理學(xué)院 甘肅 蘭州 730070)
風(fēng)險是經(jīng)濟(jì)運(yùn)行中的核心問題,財政生來就要承擔(dān)公共風(fēng)險。財政是所有經(jīng)濟(jì)活動的主要中心。一旦財政發(fā)生危機(jī),它會對經(jīng)濟(jì)產(chǎn)生巨大沖擊,甚至導(dǎo)致社會動蕩[1]。所以應(yīng)該精確地量化我國財政風(fēng)險,并做出科學(xué)預(yù)警,使財政相關(guān)政策負(fù)責(zé)人有足夠時間與依據(jù)來預(yù)防財政風(fēng)險的發(fā)生,使財政危機(jī)的破壞度最大限度地降低甚至化解即將發(fā)生的危機(jī),這具有非凡的意義。
隨機(jī)森林(RF)算法是由Breiman提出的一種比較新的統(tǒng)計學(xué)習(xí)理論[2],其本質(zhì)是一種組合分類器。該算法有高精度預(yù)測、強(qiáng)抗噪力、可調(diào)參數(shù)少、適應(yīng)力強(qiáng)以及可避免“過擬合”等優(yōu)點(diǎn),在如生物信息學(xué)[3]、生態(tài)學(xué)[4-6]、醫(yī)學(xué)[7-10]、網(wǎng)絡(luò)安全[11-12]等領(lǐng)域都有廣泛的應(yīng)用。隨著RF算法越來越受歡迎,其缺陷隨之顯現(xiàn)。近年來,一些學(xué)者在不同方面改進(jìn)了RF算法。2010年,王愛平等[13]提出一種IERF算法,并將其應(yīng)用于解決視頻在線跟蹤問題,經(jīng)過反復(fù)實(shí)驗(yàn)驗(yàn)證其有效且穩(wěn)定;2014年,曹正鳳[14]為解決數(shù)據(jù)集不平衡問題提出C_SMOTE算法;2015年,陳斌等[15]提出了一種基于k-均值的基于KM-SMOTE算法,以解決由不均衡數(shù)據(jù)引起的分布式邊緣化問題;2016年,Chaudhary等[16]針對多維分類問題提出一種改進(jìn)的RF算法,有效提高了RF算法的精度;2017年,趙清華等[17]提出了基于SMOTE的改進(jìn)算法TSMOTE(triangle SMOTE)和MDSMOTE(max distance SMOTE),達(dá)到降低算法復(fù)雜度的目的;2018年,賈文超等[12]提出一種基于特征選擇的RF改進(jìn)算法, 并將其應(yīng)用于Webshell 檢測研究中。
綜上所述,本文提出了一種改進(jìn)的RF算法,通過大量的實(shí)驗(yàn)驗(yàn)證了該算法,并與原始RF算法的性能進(jìn)行了比較,結(jié)果顯示,CIRF算法性能優(yōu)良,同時也大大地降低了算法時間復(fù)雜度。
1996年,Breiman[18]根據(jù)Bootstrap思想提出Bagging算法。它是一種決策樹的集成算法,其核心是應(yīng)用Bootstrap重采樣方法產(chǎn)生不同的訓(xùn)練樣本集來訓(xùn)練各個決策樹。其算法流程如下:定義示例樣本集S={(Xi,Yi),i=1,2,…,n},其中每個樣本的屬性的數(shù)量為M,被劃分為c個類別,測試樣本x,決策樹個數(shù)為N。則Bagging算法步驟如下:
1) 使用Bootstrap方法進(jìn)行重采樣,并隨機(jī)生成k個訓(xùn)練集S1,S2,…,Sk。
2) 根據(jù)CART算法,每個訓(xùn)練集被用來生成相應(yīng)的決策樹C1,C2,…,Ck。
3) 將測試集X導(dǎo)入程序中測試每個決策樹,產(chǎn)生相應(yīng)的分類結(jié)果C1(X),C2(X),…,Ck(X)。
4) 根據(jù)k個決策樹的分類結(jié)果,測試樣本集X的分類是由決策樹的多數(shù)投票方法決定的。
1984年,Breiman等以信息熵為理論基礎(chǔ)提出了CART算法。該算法以遞歸的思想構(gòu)建決策樹產(chǎn)生分類規(guī)則, 采用Gini指標(biāo)最小原則進(jìn)行節(jié)點(diǎn)分裂。
1) 樣本的Gini系數(shù):
(1)
式中:Pi代表類別i在樣本集S中出現(xiàn)的概率。
2)每個劃分的Gini系數(shù):將S分隔成l個子集S1,S2,…,Sl,則此次劃分的Gini系數(shù)為:
(2)
原始隨機(jī)森林RF是一種基于決策樹的分類器集成算法。該算法將隨機(jī)性引入訓(xùn)練集樣本的提取與生成決策樹節(jié)點(diǎn)分裂屬性的選擇中,并且最終采用簡單投票法決定分類類別。它能夠較好地解決單個決策樹所存在的過擬合問題,有效提高了分類精度。RF算法步驟如下:
導(dǎo)入樣本集S={(Xi,Yi),i=1,2,…,n},測試樣本Xtest。
1) forj=1,2,…,N用bagging方法對對訓(xùn)練集進(jìn)行抽樣,以產(chǎn)生訓(xùn)練子集Sj(j=1,2,…,N);
2) 構(gòu)造第j顆決策樹的樣本集為訓(xùn)練子集Sj;
3) 隨機(jī)選擇樣本屬性中的m(m 4) 選擇Gini指數(shù)最小的屬性來分裂節(jié)點(diǎn)生成決策樹,總共得到N個決策樹; S_Bootstrap抽樣算法是Bootstrap抽樣算法的一種改進(jìn)算法,根據(jù)已知的類別個數(shù)c將觀測樣本S分成c個子集S1,S2,…,Sc。對每個子集再進(jìn)行Bootstrap抽樣,進(jìn)而產(chǎn)生小樣本集s1,s2,…,sc,小樣本集si的樣本數(shù)由Si的樣本數(shù)決定。然后將小樣本集s1,s2,…,sc綜合產(chǎn)生實(shí)驗(yàn)樣本訓(xùn)練集SB={s1,s2,…,sj,…,sN}。 由于原始RF算法選擇特征屬性集合時采用完全隨機(jī)選擇方法導(dǎo)致決策樹之間的相關(guān)性增強(qiáng),從而降低了決策樹的分類性能。故本文提出形似加權(quán)的一種特征選擇方法。其核心過程為:首先根據(jù)已知類別將實(shí)驗(yàn)數(shù)據(jù)集SB劃分為c個子集;然后對每個子集的特征進(jìn)行因子分析,根據(jù)因子得分將特征M劃分為公共特征Mshare,私有特征M1,M2,…,Mc和不重要特征Mleft;根據(jù)特征的重要程度構(gòu)建特征子集,從而降低決策樹間的相關(guān)性。 在改進(jìn)的RF算法中,將分割節(jié)點(diǎn)的選定指標(biāo)改為信息增益率,以最大信息增益率的節(jié)點(diǎn)作為分割節(jié)點(diǎn)。其相關(guān)計算如下: 1) 實(shí)驗(yàn)樣本SB的信息熵為: (3) 式中:Pi代表類別i在樣本集SB中出現(xiàn)的概率。 2) 在特征A的作用下,SB被劃成l個子集SB1,SB2,…,SBl,則該劃分的信息熵為: (4) 3) 信息增益(Gain): Gain(SB|A)=Entropy(SB)-Entropy(SB|A) (5) 4) 信息增益率: (6) 當(dāng)原始的RF算法進(jìn)行分類預(yù)測時,所涉及的每棵樹的重要程度都相同,這可能忽略了決策樹之間的差異性和對樣本的判別出現(xiàn)不同的情況。故在該改進(jìn)RF算法中引入一種加權(quán)集成的投票法則參與最終決策,并把基分類器的權(quán)重表示為如下的形式: (7) 式中:c為類別數(shù),l為分裂子集數(shù),Pil表示分類器Ti把樣本X分成l類的概率。 再計算每個類別的置信度為: (8) 將2.1節(jié)-2.4節(jié)所提改進(jìn)算法融合應(yīng)用于RF算法中形成CIRF算法,其算法流程如下: 導(dǎo)入數(shù)據(jù)樣本集S={(Xi,Yi),i=1,2,…,n},測試樣本Xtest。 1) 使用S_Bootstrap方法從樣本集S={(Xi,Yi),i=1,2,…,n}抽樣,以產(chǎn)生訓(xùn)練子集sj(j=1,2,…,N); 2) 選訓(xùn)練子集sj為構(gòu)造第j顆決策樹的樣本集; 3) 根據(jù)2.2節(jié)中的特征選擇方法構(gòu)建特征子集,并根據(jù)式(6)計算特征子集中各個屬性的信息增益率; 4) 選擇具有最大GainRatio值的屬性作為分裂節(jié)點(diǎn)產(chǎn)生決策樹,最后得到N顆決策樹; 5) 將待測樣本Xtest訓(xùn)練好的N顆決策樹Tj(j=1,2,…,N)中,再根據(jù)式(8)計算各個決策樹的置信度,并把置信度最大的類別作為算法的輸出。 為不失一般性,該實(shí)驗(yàn)采用模型的精度作為隨機(jī)森林分類性能優(yōu)劣評價指標(biāo)。該評價指標(biāo)是在混淆矩陣(如表1)的基礎(chǔ)上發(fā)展而來的。 表1 n維混淆矩陣 模型的精度表示所有正確分類在所有分類中所占比例: (9) 為驗(yàn)證改進(jìn)算法的有效性,使用UCI數(shù)據(jù)庫的3種不同的數(shù)據(jù)集作為實(shí)驗(yàn)數(shù)據(jù)集(見表2),對改進(jìn)算法進(jìn)行仿真實(shí)驗(yàn)。 表2 仿真數(shù)據(jù)集 仿真實(shí)驗(yàn)中,將實(shí)驗(yàn)數(shù)據(jù)的4/5當(dāng)作訓(xùn)練集,1/5為測試集;每次實(shí)驗(yàn)重復(fù)1 000次。最終指標(biāo)值是求解1 000次實(shí)驗(yàn)結(jié)果的均值得到。 實(shí)驗(yàn)結(jié)果分析: 在三種數(shù)據(jù)集上試驗(yàn)后,RF算法與CIRF算法的Accuracy值(決策樹個數(shù)為10)如表3所示。 表3 RF算法與CIRF算法的精度值對比 由表3可知,在三種數(shù)據(jù)集中CIRF算法的Accuracy值在RF算法的基礎(chǔ)上都有所提高。說明CIRF算法比原始RF算法有更好的分類性能。 衡量財政風(fēng)險的指標(biāo)有很多,本文所使用的指標(biāo)大致可分為四組,分別用R1、R2、R3、R4表示,總計19個指標(biāo),具體指標(biāo)與其計算公式見表4。 表4 財政風(fēng)險衡量指標(biāo) 續(xù)表4 根據(jù)各個指標(biāo)的國際警戒線,本文將財政風(fēng)險劃分為四種狀態(tài),分別為“安全”(記為1)、“輕風(fēng)險”(記為2)、“風(fēng)險”(記為3)、“重度風(fēng)險”(記為4),這里的得分是指數(shù)得分。具體的判定準(zhǔn)則見表5。 表5 財政風(fēng)險等級判斷準(zhǔn)則 再根據(jù)各個指標(biāo)的指數(shù)得分,對財政風(fēng)險等級進(jìn)行劃分。本文采用的財政風(fēng)險等級劃分準(zhǔn)則[19]見表6。 表6 財政風(fēng)險等級劃分準(zhǔn)則 續(xù)表6 1) 確定指標(biāo)數(shù)據(jù)及其預(yù)處理 由于數(shù)據(jù)需求類別較多,大多數(shù)指標(biāo)的月度數(shù)據(jù)與季度數(shù)據(jù)嚴(yán)重缺失,故本文選用1998年-2016年的年度數(shù)據(jù)作為實(shí)驗(yàn)樣本數(shù)據(jù)。為了消減量綱不同對實(shí)驗(yàn)的影響以及方便后續(xù)財政風(fēng)險程度衡量,將原始指標(biāo)數(shù)據(jù)先進(jìn)行標(biāo)準(zhǔn)化處理再進(jìn)行指數(shù)化處理,處理后的指標(biāo)用EZXi,i=1,2,…,19表示。處理后的部分?jǐn)?shù)據(jù)見表7。 表7 衡量財政風(fēng)險指標(biāo)值 2) 確定指標(biāo)權(quán)重 本文對各個指標(biāo)采用因子分析的方法確定權(quán)重。首先分別對四組指標(biāo)進(jìn)行組內(nèi)因子分析,結(jié)果見表8。然后再進(jìn)行組間因子分析,結(jié)果見表9。 表8 指標(biāo)組內(nèi)因子得分 表9 指標(biāo)組間因子得分 3) 實(shí)驗(yàn)數(shù)據(jù)整理 根據(jù)以上理論與計算,將原始數(shù)據(jù)進(jìn)行整理,根據(jù)財政風(fēng)險劃分準(zhǔn)則,可得出1998年-2016年的財政風(fēng)險狀況,部分?jǐn)?shù)據(jù)見表10,數(shù)據(jù)詳細(xì)信息見表11。 表10 1998年-2016年的財政風(fēng)險狀況 表11 財政風(fēng)險實(shí)驗(yàn)數(shù)據(jù)信息 3.3.1 實(shí)驗(yàn)流程 將表10的完整數(shù)據(jù)作為實(shí)驗(yàn)數(shù)據(jù)集S={(EZXi,Ri),i=1,2,…,19},用1998年-2013年數(shù)據(jù)作為訓(xùn)練集,2014年-2016年數(shù)據(jù)作為測試集EZXtest,則基于CLRF算法的中國財政風(fēng)險預(yù)警的具體實(shí)驗(yàn)流程如下: 導(dǎo)入數(shù)據(jù)樣本集S={(EZXi,Ri),i=1,2,…,19},測試樣本EZXtest。 1) 使用S_Bootstrap方法從樣本集S={(EZXi,Ri),i=1,2,…,19}抽樣,以產(chǎn)生訓(xùn)練子集sj(j=1,2,…,N); 2) 選訓(xùn)練子集sj為構(gòu)造第j顆決策樹的樣本集; 3) 根據(jù)2.2節(jié)中的特征選擇方法構(gòu)建特征子集,并根據(jù)式(6)計算特征子集中各個屬性的信息增益率(GainRatio); 4) 選擇具有最大GainRatio值的屬性作為分裂節(jié)點(diǎn)產(chǎn)生決策樹,最后得到N顆決策樹; 5) 將待測樣本EZXtest訓(xùn)練好的N顆決策樹Tj(j=1,2,…,N)中,再根據(jù)式(8)計算各個決策樹的置信度,并把置信度最大的類別作為算法的輸出。 3.3.2 參數(shù)設(shè)置 將決策樹個數(shù)N分別設(shè)置為3、5、7、9、11、13、15、17、19、21、23、25、27、29、31,節(jié)點(diǎn)分裂屬性個數(shù)設(shè)置為3,實(shí)驗(yàn)重復(fù)1 000次,結(jié)果均取其均值。 經(jīng)過1 000次實(shí)驗(yàn)后,將其結(jié)果求均值得到不同決策樹個數(shù)對應(yīng)的模型精度值如表12所示。 表12 不同決策樹個數(shù)對應(yīng)的指標(biāo)值 如圖1所示,隨著決策樹個數(shù)的增加,評價指標(biāo)的值也隨之增加。當(dāng)決策樹個數(shù)達(dá)到19時,指標(biāo)值達(dá)到最大值0.903 7,再增加決策樹至23時一直不變,但當(dāng)繼續(xù)增加時,精度反而減小。故在隨后財政風(fēng)險預(yù)警試驗(yàn)中,決策樹個數(shù)設(shè)置為19,節(jié)點(diǎn)分裂屬性個數(shù)設(shè)置為3。表13是測試集數(shù)據(jù)EZXtest的實(shí)驗(yàn)結(jié)果數(shù)據(jù)。 圖1 不同決策樹個數(shù)對應(yīng)的指標(biāo)值對比 時間EZX1EZX2…EZX19R預(yù)測的R風(fēng)險等級預(yù)測風(fēng)險等級20140.371.53.5740.479 8 41.509 92220150.311.54.2432.112 2 33.270 52220160.281.174.6630.055 5 30.355 422 由表13可知,CIRF算法對2014年-2016年的財政風(fēng)險預(yù)測分類完全正確,分類準(zhǔn)確率達(dá)到100%,并且預(yù)測的綜合得分與實(shí)際得分相比只差1個單位左右,預(yù)測的準(zhǔn)確度相當(dāng)高。所以,如果將該算法應(yīng)用于財政風(fēng)險預(yù)警工作中,可節(jié)省大量的人力和時間。 對2017年-2018年的財政風(fēng)險進(jìn)行預(yù)測,結(jié)果見表14(2017年的部分?jǐn)?shù)據(jù)在公共數(shù)據(jù)平臺上沒有公布,故可將其作為預(yù)測的一部分)。 表14 財政風(fēng)險的預(yù)測結(jié)果 由表14可知,2017年與2018年的財政都處于輕風(fēng)險狀態(tài),不會對社會經(jīng)濟(jì)的正常運(yùn)行和國家安全造成嚴(yán)重影響。 本文針對RF算法預(yù)測精度低的問題,提出一種CIRF算法。該算法對原始RF算法進(jìn)行全方位的改進(jìn),采用UCI數(shù)據(jù)庫中的三種數(shù)據(jù)集對該算進(jìn)行仿真實(shí)驗(yàn),并與原始RF算法作比較。結(jié)果顯示,CIRF算法有更好的分類性能。因此CIRF算法可應(yīng)用于各個領(lǐng)域。本文將其應(yīng)用于中國財政風(fēng)險預(yù)警中,預(yù)測結(jié)果顯示,2017年與2018年的財政風(fēng)險狀態(tài)為輕風(fēng)險,不會對社會經(jīng)濟(jì)的正常運(yùn)行和國家安全造成嚴(yán)重影響。下一步,將針對隨機(jī)森林本身在構(gòu)建過程中存在的問題進(jìn)行進(jìn)一步的改進(jìn)研究。2 CIRF算法
2.1 S_Bootstrap算法
2.2 改進(jìn)的RF特征選擇方法
2.3 改進(jìn)節(jié)點(diǎn)分裂算法
2.4 改進(jìn)投票算法
2.5 CIRF算法流程
2.6 CIRF算法性能評價指標(biāo)
2.7 CIRF算法性能驗(yàn)證
3 基于CIRF算法的中國財政風(fēng)險預(yù)警
3.1 確定預(yù)警指標(biāo)體系
3.2 實(shí)驗(yàn)數(shù)據(jù)準(zhǔn)備
3.3 實(shí)驗(yàn)流程及參數(shù)設(shè)置
3.4 實(shí)驗(yàn)結(jié)果及分析
3.5 財政風(fēng)險預(yù)警
4 結(jié) 語