胡嬋娟,于蓮芝,薛 震
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
隨著金融業(yè)以及互聯(lián)網(wǎng)業(yè)的快速發(fā)展,互聯(lián)網(wǎng)金融作為一種新興的商業(yè)模式逐漸走進(jìn)大家的視線.中小額貸款等互聯(lián)網(wǎng)金融的線上業(yè)務(wù)量也隨著互聯(lián)網(wǎng)規(guī)模的增長在快速增加.個(gè)人、商家乃至企業(yè)的貸款與申請(qǐng)逐漸走向快速化和無紙化.在早期,貸款違約預(yù)測(cè)完全依賴人工審核.這種預(yù)測(cè)方式只適合小規(guī)模的信用審核,而對(duì)大規(guī)模的貸款審核無能為力[1].為解決人工審核過程中人為因素的不確定性,一種依據(jù)詳細(xì)規(guī)則來判斷是否進(jìn)行貸款的方法被金融機(jī)構(gòu)提出.該方法根據(jù)規(guī)則給出結(jié)論,使信審員可以根據(jù)清洗的指標(biāo)來判斷是否放款.同時(shí)該方法的提出極大降低了對(duì)信審員的要求,普通職員經(jīng)過相關(guān)的培訓(xùn)即可著手信貸工作.此外,國內(nèi)外眾多研究學(xué)者提出數(shù)據(jù)挖掘的模型對(duì)信貸違約進(jìn)行了研究[2-7].
Spark是基于Hadoop生態(tài)實(shí)現(xiàn)的基于內(nèi)存的分布式計(jì)算框架.該框架誕生于UC Berkeley AMPLab,整個(gè)發(fā)展過程都沉浸在學(xué)術(shù)氛圍里,近年來一直處于高速發(fā)展期.2010年Chowdhury M與Zaharia M等人提出Spark的雛形——集群計(jì)算工作集[8];2012年Zaharia M等人又提出了彈性分布式數(shù)據(jù)集的概念[9];文獻(xiàn)[10]基于分布式平臺(tái)Spark對(duì)數(shù)據(jù)挖掘算法的并行化進(jìn)行了研究,該研究由梁彥完成;文獻(xiàn)[11]中劉澤燊等人提出適用于分布式環(huán)境下的基于Spark平臺(tái)的支持向量機(jī)算法(SP-SVM);文獻(xiàn)[12]中邵梁等人針對(duì)大數(shù)據(jù)中的頻繁項(xiàng)集挖掘問題,提出了一種基于Spark框架的FP-Growth頻繁項(xiàng)集并行挖掘算法.在對(duì)隨機(jī)森林算法的研究上,自1995年貝爾實(shí)驗(yàn)室的Ho TK首次提出了隨機(jī)森林的概念開始[13],大量學(xué)者對(duì)該算法及其應(yīng)用進(jìn)行了研究[14-18].
本文設(shè)計(jì)并實(shí)現(xiàn)了基于Spark分布式計(jì)算框架的適用于金融信貸風(fēng)險(xiǎn)控制中的加權(quán)隨機(jī)森林算法.傳統(tǒng)決策樹算法雖然簡潔有效,但是在面對(duì)數(shù)據(jù)過擬合的問題上一直表現(xiàn)不佳.而隨機(jī)森林通過引入隨機(jī)性,最大程度上減小了過擬合問題的出現(xiàn).使用SMOTE算法能夠很好的應(yīng)用于風(fēng)險(xiǎn)控制分類,不但較好的解決了數(shù)據(jù)集的非平衡性問題,而且保留了原有數(shù)據(jù)集的信息.而作為大數(shù)據(jù)分析系統(tǒng),本文通過構(gòu)建Spark分布式系統(tǒng)對(duì)模型并行化的方式,極大提高了效率性與時(shí)效性.
Spark的最根本特性是它的基于內(nèi)存運(yùn)算技術(shù)能夠減少對(duì)硬盤的I/O操作,數(shù)據(jù)可以直接在內(nèi)存進(jìn)行分析運(yùn)算.在Hadoop的MapReduce計(jì)算引擎需要把計(jì)算的中間值先存放在內(nèi)存,然后等到下一步計(jì)算的時(shí)候重新向外存發(fā)起I/O請(qǐng)求.Spark則會(huì)把中間值直接存放到內(nèi)存中進(jìn)行迭代,因此Spark與傳統(tǒng)的MapReduce的整體相比減少了數(shù)據(jù)傳送的時(shí)間,進(jìn)而保證了任務(wù)的運(yùn)行效率.
Spark作為基于內(nèi)存計(jì)算的分布式計(jì)算引擎,它的核心是由引擎定義的彈性分布式數(shù)據(jù)集(RDD,Resilient Distributed Datasets),RDD就是Spark引擎操作的基本數(shù)據(jù)結(jié)構(gòu).如圖1所示表示Spark的體系結(jié)構(gòu)圖.
圖1 Spark的體系結(jié)構(gòu)Fig.1 Architecture of Spark
Spark的核心模塊叫做Spark Core,基于RDD的Dataframe的核心模塊通過有向無環(huán)圖進(jìn)行任務(wù)規(guī)劃,從而使Spark在批處理任務(wù)時(shí)具有靈活性.在Spark Core的基礎(chǔ)上,各種大數(shù)據(jù)處理解決的方案也應(yīng)運(yùn)而生.例如利用Spark輕量級(jí)調(diào)度優(yōu)勢(shì)從而實(shí)現(xiàn)流處理模式的Streaming;圖形計(jì)算框架Graph;實(shí)現(xiàn)機(jī)器學(xué)習(xí)的Mllib機(jī)器學(xué)習(xí)庫;提供分布式SQL查詢的Shark.
Spark和很多分布式文件系統(tǒng)都要很好的兼容性,HDFS和Amazon S3系統(tǒng)都是常用的Spark分布式文件系統(tǒng).它的運(yùn)行模式分為單點(diǎn)模式和分布式模式,分布式模式可以使用YARN,Mesos或者EC2進(jìn)行資源分配與調(diào)度.Spark計(jì)算框架圍繞著整個(gè)RDD進(jìn)行并行計(jì)算,基于內(nèi)存的運(yùn)行特性,使得Spark的計(jì)算效率大大提高.RDD作為具有容錯(cuò)的、并行特性的數(shù)據(jù)結(jié)構(gòu),能夠靈活的在內(nèi)存和外存上進(jìn)行交互.當(dāng)內(nèi)存已經(jīng)滿足不了單個(gè)RDD的需求時(shí),RDD會(huì)轉(zhuǎn)存到外存上:與此同時(shí),RDD作為Spark的只讀數(shù)據(jù)結(jié)構(gòu),如果發(fā)生了RDD數(shù)據(jù)丟失,那么只能利用相應(yīng)的容錯(cuò)機(jī)制重建RDD.
2.2.1 傳統(tǒng)的隨機(jī)森林算法
隨機(jī)森林算法是一種使用多個(gè)基分類器——決策樹,來學(xué)習(xí)和預(yù)測(cè)樣本的集成模型[19].其具體工作原理如下:
1)通過在原始數(shù)據(jù)集上有放回的抽樣選取n個(gè)樣本形成一個(gè)新的訓(xùn)練子集;
2)在步驟1生成的子數(shù)據(jù)集上對(duì)所有的特征進(jìn)行抽樣,選取m個(gè)特征成為決策樹的分離節(jié)點(diǎn),并且該決策樹不進(jìn)行剪紙操作;
3)重復(fù)步驟1與步驟2,直到得到具有s顆決策樹的集合;
4)將新樣本交由步驟3 得到的決策樹集合中的每棵樹進(jìn)行預(yù)測(cè),記錄每一個(gè)決策樹的預(yù)測(cè)類別并統(tǒng)計(jì)總數(shù),最后總數(shù)最多的一個(gè)類別就是模型選擇的最佳結(jié)果.
2.2.2 加權(quán)隨機(jī)森林算法
隨機(jī)森林算法雖然在數(shù)據(jù)挖掘中能夠取得非常優(yōu)異的表現(xiàn),但是該算法對(duì)非平衡數(shù)據(jù)進(jìn)行訓(xùn)練時(shí)的準(zhǔn)確度下降和性能下降一直是該算法的應(yīng)用局限.解決這種非平衡性的簡單方法就是利用數(shù)據(jù)挖掘軟件Weka中的方法,直接選取首個(gè)類別作為最后的結(jié)果,但是這種方法并不能根本解決平局問題,而權(quán)值計(jì)算則可以有效避免這種因無法處理平局情況導(dǎo)致模型構(gòu)建陷入停滯問題.
針對(duì)傳統(tǒng)隨機(jī)森林算法帶來的問題,本文提出了如下改進(jìn)措施.基本思路為:
1)在投票之前根據(jù)決策樹的分類性能每棵決策樹賦予一個(gè)權(quán)重;
2)當(dāng)獲得決策樹的分類結(jié)果后,將相應(yīng)的分類結(jié)果乘以決策樹的權(quán)重;
3)統(tǒng)計(jì)所有乘以權(quán)重之后的投票結(jié)果,并進(jìn)行降序排列,選擇最終權(quán)值最高的類別作為最后分類的結(jié)果.
由此可見決定最終分類結(jié)果的關(guān)鍵在于權(quán)重的分類方式,但是如果給分類能力強(qiáng)的決策樹高的權(quán)重,則會(huì)導(dǎo)致分類能力差的決策樹無法發(fā)揮自身價(jià)值,讓整個(gè)隨機(jī)森林忽視了低分類能力決策樹的分類結(jié)果,這就違背了隨機(jī)森林算法所基于的Bagging算法.所以模型的建立需要遵循不影響公平的情況下提高正確度的原則.
在參考文獻(xiàn)[14]中,作者通過研究貝葉斯公式來評(píng)價(jià)每個(gè)分類器的分類性能優(yōu)劣.最后推出公式(1).
(1)
在公式(1)中,N表示分類器的總數(shù),con(k)表示Bagging算法中第k個(gè)分類器的分類結(jié)果后驗(yàn)概率,weight(i)表示第i個(gè)分類器的權(quán)重.
文獻(xiàn)[14]中作者證明了該公式的兩點(diǎn)性質(zhì):
1)分類正確率越高對(duì)應(yīng)的決策樹權(quán)重越高;
Bagging算法可以通過out-of-bag數(shù)據(jù)進(jìn)行分析,而且out-of-bag的F1值要比Bayes公式通過計(jì)算后驗(yàn)概率計(jì)算分類難度更小.因此為了降低計(jì)算量,放棄使用分類結(jié)果的后驗(yàn)概率而使用out-of-bag的F1進(jìn)行判斷分類的正確率,本文對(duì)公式(1)進(jìn)行修改得到公式(2):
(2)
公式(2)中N表示分類器的總數(shù),oobF1(k)表示第k個(gè)分類器的out-of-bag的F1值,weight(i)表示第i個(gè)分類器的權(quán)重.
與一般的算法在投票之后選擇如何評(píng)判相同票數(shù)的決策樹不同,加權(quán)算法從投票完成的時(shí)候就已經(jīng)極大的減少了平局現(xiàn)象發(fā)生的概率.通過計(jì)算發(fā)現(xiàn),當(dāng)權(quán)重值保留的小數(shù)位數(shù)越多,出現(xiàn)平局的概率就越小.因此在不影響模型建立時(shí)間的基礎(chǔ)上,盡可能多的保留小數(shù)位數(shù)成為了防止平局出現(xiàn)的最直接手段.
由于數(shù)據(jù)集抽樣的隨機(jī)性和節(jié)點(diǎn)特征分裂的隨機(jī)性,保證了決策樹的建立之間沒有耦合性,因此作為集成學(xué)習(xí)算法的隨機(jī)森林算法具有原生并行性.隨機(jī)森林算法的并行化優(yōu)化體現(xiàn)在決策并行化、節(jié)點(diǎn)并行化和特征選擇并行化上.對(duì)隨機(jī)森林算法的并行化,能夠保證計(jì)算過程中數(shù)據(jù)集通過HDFS分布式文件系統(tǒng)部署到多個(gè)計(jì)算機(jī)節(jié)點(diǎn).較在單機(jī)環(huán)境下節(jié)省了大量的I/O操作,同時(shí)避免了大量的網(wǎng)絡(luò)帶寬的占用.
通過對(duì)MapReduce計(jì)算引擎的并行數(shù)據(jù)挖掘算法庫Mahout和基于單機(jī)模式的數(shù)據(jù)挖掘算法庫Weka的分析.本文根據(jù)上文總結(jié)的對(duì)加權(quán)隨機(jī)森林算法并行化的思路和Spark分布式計(jì)算框架的基本特點(diǎn),設(shè)計(jì)了對(duì)加權(quán)隨機(jī)森林算法的并行化構(gòu)思與實(shí)現(xiàn)的方法.
3.1.1 特征切分點(diǎn)抽樣統(tǒng)計(jì)
在對(duì)決策樹的非葉子節(jié)點(diǎn)進(jìn)行最優(yōu)特征挑選時(shí),需要對(duì)所選特征進(jìn)行切分點(diǎn)的選擇才可以進(jìn)行計(jì)算.利用數(shù)據(jù)的分布性,在每個(gè)節(jié)點(diǎn)處對(duì)特征數(shù)據(jù)進(jìn)行抽樣統(tǒng)計(jì)后匯總在主節(jié)點(diǎn)上.該操作把所有的計(jì)算過程和I/O過程交由每個(gè)節(jié)點(diǎn)自主進(jìn)行,但是只在最后匯總的時(shí)候占用極小的帶寬,因此避免了對(duì)全量特征進(jìn)行取值并排序過程占用大量的帶寬和I/O操作.雖然抽樣統(tǒng)計(jì)的做法必然會(huì)帶來數(shù)據(jù)精度上的損失,不過在設(shè)置了合理的抽樣數(shù)量后可以在不過分犧牲精度的前提下大大提高計(jì)算速度.
3.1.2 逐層訓(xùn)練
將決策樹構(gòu)建在單機(jī)模式下的深度優(yōu)先策略轉(zhuǎn)變?yōu)閺V度優(yōu)先策略就是逐層訓(xùn)練的本質(zhì).在分布式環(huán)境下構(gòu)建逐層訓(xùn)練即逐層構(gòu)建樹節(jié)點(diǎn),構(gòu)建過程中需滿足遍歷次數(shù)等于樹的最大層數(shù).同時(shí)在遍歷過程中,只需要計(jì)算非葉節(jié)點(diǎn)的分割點(diǎn)統(tǒng)計(jì)參數(shù)并根據(jù)特征劃分來決定是否切分以及如何切分.
根據(jù)Spark計(jì)算引擎的特點(diǎn)和常規(guī)并行化流程,結(jié)合之前對(duì)加權(quán)隨機(jī)森林算法的改進(jìn)點(diǎn)分析,本文將加權(quán)隨機(jī)森林算法的并行化訓(xùn)練分成四個(gè)主要步驟:
1)利用隨機(jī)抽樣獲取分布在節(jié)點(diǎn)上的樣本的特征并進(jìn)行特征分箱操作;
2)利用每棵決策樹的RDD構(gòu)建基于特征子空間和Bagging抽樣的并行化隨機(jī)森林;
3)通過預(yù)測(cè)out-of-bagging數(shù)據(jù)獲取每顆決策樹的F1值;
4)將步驟3中生成的決策樹進(jìn)行耦合成一個(gè)完整的并行化加權(quán)隨機(jī)森林模型.
圖2為加權(quán)隨機(jī)森林算法并行化訓(xùn)練的流程圖,它描述了加權(quán)隨機(jī)森林并行化的整體框架和運(yùn)行步驟.
圖2 隨機(jī)森林并行化建模Fig.2 Model of random forest parallelization
3.2.1 特征分箱
由于隨機(jī)森林有多棵樹,因此在不同決策樹隨機(jī)選擇到相同的特征時(shí),會(huì)出現(xiàn)重復(fù)計(jì)算分割點(diǎn)的情況,導(dǎo)致算法的效率下降.本文先通過對(duì)數(shù)據(jù)集中所有的特征進(jìn)行分箱并找出切分點(diǎn),然后在所有決策樹建模過程中利用之前分箱得到的切分點(diǎn)直接進(jìn)行分類.該方法可以有效提高算法效率.
特征分箱的本質(zhì)是分析所有特征的變量范圍,然后找到并記錄相應(yīng)類別分割點(diǎn).特征分箱針對(duì)不同類型的特征采用適合的策略尋找分割點(diǎn),特征點(diǎn)可以分為三個(gè)類別:無序離散特征、有序離散特征和連續(xù)值特征.無序離散特征的劃分方式為splits=2numBOXES-1-1;有序離散特征的劃分方式為splits=numBoxes-1;連續(xù)特征則采用隨機(jī)抽樣的方式來尋找分割點(diǎn).以上公式中的numBoxes為特征值可取值的個(gè)數(shù).與此同時(shí),為了避免因采樣量過小導(dǎo)致采樣的數(shù)據(jù)無法正常覆蓋重要特征,從而導(dǎo)致特征分箱的過程無法進(jìn)行的情況,需要在特征分箱前判斷計(jì)算總樣本和采樣率的乘積.在本文中采取如果乘積大于10000,就選擇抽樣采樣的策略;如果小于則選擇全樣本采樣的策略.
下一步得到經(jīng)過各個(gè)區(qū)采樣后的RDD數(shù)據(jù).如果采樣量足夠大,則通過每個(gè)RDD進(jìn)行抽樣統(tǒng)計(jì);如果采樣量不夠大,則將每個(gè)RDD進(jìn)行全量統(tǒng)計(jì),對(duì)統(tǒng)計(jì)結(jié)果需先判斷該結(jié)果對(duì)應(yīng)的相應(yīng)特征屬于什么類型的值,然后采用相應(yīng)的方法找到分割點(diǎn).
3.2.2 每棵決策樹的建模過程
對(duì)決策樹的建模,先利用特征子空間抽樣和Bagging獲取相應(yīng)決策樹的RDD數(shù)據(jù)集,接下來對(duì)單棵決策樹進(jìn)行逐層訓(xùn)練.在這個(gè)過程中,利用先入先出隊(duì)列(First Input First Output,FIFO)將在每一個(gè)分裂節(jié)點(diǎn)得到的RDD數(shù)據(jù)集加入隊(duì)列,直到該隊(duì)列為空時(shí)整個(gè)決策樹訓(xùn)練完成.
3.2.3 隨機(jī)森林中每棵決策樹加權(quán)過程
權(quán)重的計(jì)算是通過out-of-bag的F1值進(jìn)行衡量.得到所有k棵樹的out-of-bag的F1值之后,利用公式(2)進(jìn)行賦權(quán)——計(jì)算出每棵樹對(duì)應(yīng)的權(quán)重weigth(i),把這些決策樹組合起來便是加權(quán)隨機(jī)森林.圖3為加權(quán)過程的流程圖.
圖3 加權(quán)過程Fig.3 Weighted process
在單機(jī)模式的傳統(tǒng)隨機(jī)森林算法中,對(duì)于構(gòu)建好的模型需要用新的樣本進(jìn)行測(cè)試并通過投票獲取最后的類別.但是這個(gè)過程是串行運(yùn)行的,需要隨機(jī)森林中的每一棵樹依次進(jìn)行投票和統(tǒng)計(jì).針對(duì)該情況,在面對(duì)數(shù)量較多的決策樹時(shí),對(duì)整個(gè)隨機(jī)森林模型的投票過程進(jìn)行了并行化.圖4是對(duì)加權(quán)隨機(jī)森林并行化投票的流程圖.
圖4 加權(quán)隨機(jī)森林并行化投票流程圖Fig.4 Voting flow chart of weighted random forest parallelization
傳統(tǒng)隨機(jī)森林的投票過程由于一些劣質(zhì)樹的干擾導(dǎo)致最后的分類結(jié)果不好,所以為優(yōu)化這一現(xiàn)象,本文使用out-of-bag數(shù)據(jù)的正確率作為權(quán)重依據(jù)的投票策略來代替單純依賴相同權(quán)重的決策樹投票.
該實(shí)驗(yàn)在中的各并行框架均搭建在Spark集群的環(huán)境下,實(shí)驗(yàn)過程中的存儲(chǔ)由Hadoop進(jìn)行,實(shí)驗(yàn)中數(shù)據(jù)的計(jì)算由Spark程序負(fù)責(zé).在該實(shí)驗(yàn)過程中應(yīng)用到的各開發(fā)程序及其版本號(hào)如表1所示.
表1 實(shí)驗(yàn)環(huán)境參數(shù)
Table 1 Experimental environment parameters
開發(fā)程序版 本操作系統(tǒng)Centos 7.3JDK1.8.0-144網(wǎng)絡(luò)2GBHadoop2.7.0Spark2.12.4Master節(jié)點(diǎn)4核,硬盤256G,8G內(nèi)存,一個(gè)節(jié)點(diǎn)Worker節(jié)點(diǎn)1核,硬盤250G,2G內(nèi)存,五個(gè)節(jié)點(diǎn)
該風(fēng)險(xiǎn)控制系統(tǒng)研究的數(shù)據(jù)來自上海某小額貸款公司2016年6月到2017年2月的業(yè)務(wù)相關(guān)數(shù)據(jù).經(jīng)過相應(yīng)的清洗和采樣工作,分析出數(shù)據(jù)集具有包括用戶信息、信征記錄、借款歷史信息、互聯(lián)網(wǎng)交易信息、社交個(gè)人信息在內(nèi)的87個(gè)特征.該公司的主要業(yè)務(wù)是利用信用卡和借記卡進(jìn)行7天-21天,金額1000元-5000元的小額貸款業(yè)務(wù).在實(shí)驗(yàn)采樣的相關(guān)月份里,根據(jù)業(yè)務(wù)量的增長,用戶的貸款數(shù)據(jù)呈現(xiàn)一個(gè)比較快的上漲趨勢(shì),其中逾期率一直控制在百分之十左右.基于業(yè)務(wù)客觀需求分析,客戶違約的特征作為類別的label,按時(shí)還款用戶該類置0,逾期還款用戶該類置1.
針對(duì)該加權(quán)隨機(jī)森林模型應(yīng)用的場(chǎng)景,對(duì)該模型的基本性能進(jìn)行評(píng)估采用以下四個(gè)結(jié)果屬性分析性能指標(biāo):
1)True Positive(真正,TP):將正樣本預(yù)測(cè)為正樣本,即判斷為真的正確率.
2)True Negative(真負(fù),TP):將負(fù)樣本預(yù)測(cè)為負(fù)樣本,即判斷為假的正確率.
3)False Positive(假正,FP):將負(fù)樣本預(yù)測(cè)為正樣本,即誤報(bào)率(Type I error).
4)False Negative(假負(fù),FN):將正樣本預(yù)測(cè)為負(fù)樣本,即漏報(bào)率(Type II error).
圖5結(jié)了所有屬性之間的數(shù)學(xué)關(guān)系
根據(jù)分類模型結(jié)果驗(yàn)證得到的結(jié)果屬性,通過混淆矩陣的指標(biāo)進(jìn)行模型性能評(píng)估,表2為混淆矩陣.
表2 混淆矩陣
Table 2 Confusion matrix
混淆矩陣的評(píng)估指標(biāo)分為精確率(precision)和召回率(recall).
精確率:
(3)
召回率:
(4)
除此之外還有F1值,它是精確率和召回率的調(diào)和值,F1值定義為:
(5)
圖5 分類結(jié)果示意圖Fig.5 Schematic diagram of classification results
該模型構(gòu)建構(gòu)建過程中分別對(duì)隨機(jī)森林算法的分裂決策(splitStrategy)、決策樹的數(shù)量(numDecisionTrees)、特征數(shù)(characteristicNumberStrategy)、類別數(shù)目(ClassNumber)、決策樹最大的深度(maxDepth)、決策樹權(quán)重(treeWeigth)、特征分箱的最大值(maxBoxes)這7個(gè)關(guān)鍵參數(shù)進(jìn)行調(diào)優(yōu).該模型采用Gini[22]系數(shù)作為splitStrategy的分裂標(biāo)準(zhǔn);對(duì)小額貸款的預(yù)測(cè)分為按時(shí)還款和逾期兩種,類型對(duì)應(yīng)的值為別為“0”和“1”,故ClassNumber的值設(shè)置為2.對(duì)maxBoxes、maxDepth、numberDecisionTrees、characteristicNumberStrategy這四個(gè)參數(shù)的設(shè)置按照貪心算法,選取F1值作為主要評(píng)估標(biāo)準(zhǔn),依次找到每一個(gè)參數(shù)取值范圍內(nèi)的最優(yōu)解二次調(diào)優(yōu)后得到模型最優(yōu)解為:
(6)
根據(jù)公式(2)可發(fā)現(xiàn)treeWeigth和out-of-bag數(shù)據(jù)上的F1值成正比,為驗(yàn)證treeWeigth的合理性,選擇200棵決策樹的權(quán)重值.圖6其權(quán)重圖.
圖6 加權(quán)隨機(jī)森林的決策樹權(quán)重圖Fig.6 Decision tree weight graph of weight random forests
為驗(yàn)證加權(quán)過程能有效減少平均現(xiàn)象的產(chǎn)生,在考慮權(quán)值精度對(duì)平局現(xiàn)象影響的條件下,對(duì)包含30萬個(gè)樣本的數(shù)據(jù)進(jìn)行不同加權(quán)策略下平局情況統(tǒng)計(jì),結(jié)果如表3所示.
表3 決策樹生成平局統(tǒng)計(jì)
Table 3 Decision tree generating tie statistics
不加權(quán)加權(quán)(權(quán)值取小數(shù)點(diǎn)N位)保留三位小數(shù)點(diǎn)保留四位小數(shù)點(diǎn)保留五位小數(shù)點(diǎn)平局情況2674880
將參數(shù)treeWeight在兩次測(cè)試中設(shè)置為0與1,分別對(duì)應(yīng)了不加權(quán)隨機(jī)森林和加權(quán)隨機(jī)森林.實(shí)驗(yàn)結(jié)果表明:加權(quán)隨機(jī)森林的準(zhǔn)確率為66.27%,召回率為60.97%,F1值為64.08%;不加權(quán)隨機(jī)森立的準(zhǔn)確率為64.18%,召回率為58.99%,F1值為61.80%.由此可知加權(quán)隨機(jī)森林具有更好的分類能力,驗(yàn)證了對(duì)隨機(jī)森林進(jìn)行加權(quán)設(shè)計(jì)的有效性.
為了有效較少非平衡數(shù)據(jù)集導(dǎo)致模型訓(xùn)練結(jié)果有效性下降的現(xiàn)象,該實(shí)驗(yàn)采用對(duì)多數(shù)類進(jìn)行欠采樣和對(duì)少數(shù)類進(jìn)行過采樣的方式生成一個(gè)相對(duì)平衡的數(shù)據(jù)集.訓(xùn)練數(shù)據(jù)集樣本采集2017年6月-8月的總計(jì)30萬條數(shù)據(jù),經(jīng)過分析發(fā)現(xiàn)經(jīng)采樣后多數(shù)類與少數(shù)類的比例由原始數(shù)據(jù)的9∶1減少為11∶3,有效降低了數(shù)據(jù)集的非平衡性.表4是采樣后的數(shù)據(jù)集與未經(jīng)過采樣的數(shù)據(jù)集性能對(duì)比.
表4 實(shí)驗(yàn)樣本采樣效果對(duì)比
Table 4 Comparison of sampling effect of experimental samples
訓(xùn)練集測(cè)試數(shù)據(jù)集驗(yàn)證數(shù)據(jù)集準(zhǔn)確率(%)召回率(%)F1值(%)準(zhǔn)確率(%)召回率(%)F1值(%)未經(jīng)采樣35.8241.0138.2031.0135.2433.09綜合采樣52.5867.4759.1136.8639.7738.26
對(duì)搭建的模型經(jīng)過多次調(diào)優(yōu)后,對(duì)數(shù)據(jù)集中的2016年9月-2017年2月的數(shù)據(jù)進(jìn)行驗(yàn)證對(duì)比,得到了未使用模型與使用模型后的逾期率對(duì)比,如圖7所示.
圖7 未使用模型和使用模型逾期率對(duì)比Fig.7 Comparison of overdue rate between unused model an used model
在使用模型后可能由于模型規(guī)則嚴(yán)格導(dǎo)致放款金額下降,進(jìn)而導(dǎo)致業(yè)務(wù)量降低利潤下降,所以需對(duì)比在使用模型規(guī)則后的放款金額與使用前放款金額的對(duì)比,觀察模型與放款金額的關(guān)系,兩者對(duì)比如圖8所示.
圖8表明在使用模型后放款金額的量略有下降,隨著放款金額的增加,有模型放款金額與無模型放款金額的比例維持穩(wěn)定,沒有造成業(yè)務(wù)的明顯下降.
圖8 無模型放款金額與有模型放款金額對(duì)比Fig.8 Comparison between unused model loan amount and used model loan amount
本文設(shè)計(jì)了一種基于決策樹加權(quán)的并行化隨機(jī)森林的分類算法.主要工作如下:設(shè)計(jì)了一種基于決策樹的加權(quán)的隨機(jī)森林算法;針對(duì)非平衡數(shù)據(jù)數(shù)據(jù)集在機(jī)器學(xué)習(xí)過程中的過耦合現(xiàn)象,利用SMOTE先對(duì)少數(shù)類進(jìn)行重復(fù)采樣,再對(duì)多數(shù)類進(jìn)行單邊采樣,從而使重構(gòu)后的數(shù)據(jù)趨于一個(gè)平衡的數(shù)據(jù)集;實(shí)現(xiàn)了基于Spark并行計(jì)算框架的加權(quán)隨機(jī)森林模型,成功實(shí)現(xiàn)了模型的并行化.