一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法
【專利摘要】本發(fā)明公開了一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法,所述方法包括:S1.對需要進行訓練的數(shù)據(jù)樣本集通過有放回抽樣的方式抽取跟需要建立的決策樹數(shù)目一致的N個樣本子集;S2.對每個樣本子集構建無剪枝的決策樹模型,在構建決策樹模型的節(jié)點時,采用信息增益法先對所有參與節(jié)點構建的屬性進行加權,從中選出權重最高的M個屬性參與節(jié)點構建;S3.將構建的N個決策樹模型合并成一個大的隨機森林模型。本發(fā)明將信息增益用于屬性子空間加權,使得有用信息能夠被抽取,從而提高分類的精度。
【專利說明】一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)處理【技術領域】,尤其涉及一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法。
【背景技術】
[0002]隨著計算機、互聯(lián)網和信息技術的不斷向前發(fā)展及在各行各業(yè)中的廣泛使用,人們積累的各類數(shù)據(jù)變的越來越龐大和越來越復雜。例如,各種類型的生物信息數(shù)據(jù)、互聯(lián)網文本數(shù)據(jù)、數(shù)字圖像數(shù)據(jù)等數(shù)據(jù)的屬性維度可以達到成千上萬個,而且數(shù)據(jù)量還在不斷增力口,造成傳統(tǒng)的數(shù)據(jù)挖掘分類算法難以應對超高維度和計算量不斷增加的挑戰(zhàn)。
[0003]隨機森林算法是一種用于分類的集成學習方法,它使用決策樹作為子分類器,和其他分類算法相比,具有分類性能好、精度高、泛化能力強等優(yōu)點,成為目前分類研究領域非常熱門的算法,被廣泛應用于數(shù)據(jù)挖掘的各個領域。其基本思想最早是由Ho在1995年提出,并由Breiman在2001年改進最終成為現(xiàn)在的隨機森林算法。但是當面對高維數(shù)據(jù)時,尤其是稀疏的高維數(shù)據(jù),其采用的隨機子空間抽樣的方法會導致占比本來就少的有用屬性更難被抽取到,嚴重影響最終的分類結果。同時,隨著數(shù)據(jù)量越來越大,現(xiàn)有的單機隨機森林算法實現(xiàn)已經無法滿足當前大數(shù)據(jù)的需求,使得優(yōu)秀的算法無法在較短的時間內完成建模,影響其使用。
[0004]現(xiàn)有的隨機森林算法的主要流程如下:
[0005]I)從原始訓練數(shù)據(jù)中有放回地抽樣N組樣本,然后循環(huán)構建決策樹:
[0006]a)每組樣本構建一個決策樹;
[0007]b)在構建決策樹的每個節(jié)點時,隨機抽取M個屬性進行節(jié)點計算;
[0008]c)在建樹過程中,不進行樹枝的裁剪,直到最后剩下最后一個樣本;
[0009]2)將所構建的N個決策樹模型整合成一個隨機森林模型。
[0010]在面對高維數(shù)據(jù)時,為了提高有價值的屬性的選取幾率,Amaratunga提出了子空間抽樣屬性加權的方法以提高隨機森林建樹時重要屬性被抽取的幾率,從而提高決策樹的平均強度達到改進分類性能。但是,該方法針對的是二類問題。
[0011]在現(xiàn)有的R軟件系統(tǒng)中,randomForest和party是比較常用的兩個用于構建隨機森林的軟件包。randomForest軟件包是由Breiman隨機森林算法的Fortran源碼轉成C語言后直接得到的,并有其團隊維護。party軟件包則是由Hothorn提出的條件推斷樹構建的隨機森林算法。但是在針對高維的大數(shù)據(jù)時,這兩個包在時間和內存資源的消耗上都不盡如人意?,F(xiàn)有的隨機森林相關的R軟件包中,沒有一個能夠對屬性的選擇進行改變,并且都還是單機版的,無法在分布式并行的計算環(huán)境中進行操作。
[0012]綜上所述,現(xiàn)有的隨機森林算法存在以下問題:
[0013]由于構建決策樹節(jié)點時采用隨機抽樣的方式對屬性進行選取,當面對超高維數(shù)據(jù)時,會造成擁有對結果產生重要影響的屬性很難被選取的情況,使得算法精度受到嚴重影響;
[0014]現(xiàn)有算法都是采用串行的方式,循環(huán)建立決策樹模型,每次循環(huán)建立一個決策樹模型,在CPU多核的情況下,無法有效利用多個CPU內核的優(yōu)勢并行計算來達到快速建立隨機森林模型的目的;
[0015]當數(shù)據(jù)量越來越多以至于單臺機器無法存儲所需要的數(shù)據(jù)量時,現(xiàn)有的隨機森林算法無法一次性加載所有的數(shù)據(jù),從而無法建立精確的模型;
[0016]因此,針對上述技術問題,有必要提供一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法。
【發(fā)明內容】
[0017]有鑒于此,本發(fā)明的目的在于提供一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法,以解決對超高維的大數(shù)據(jù)進行有效處理的問題。
[0018]為了達到上述目的,本發(fā)明實施例提供的技術方案如下:
[0019]一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法,所述方法包括:
[0020]S1、對需要進行訓練的數(shù)據(jù)樣本集通過有放回抽樣的方式抽取跟需要建立的決策樹數(shù)目一致的N個樣本子集;
[0021]S2、對每個樣本子集構建無剪枝的決策樹模型,在構建決策樹模型的節(jié)點時,采用信息增益法先對所有參與節(jié)點構建的屬性進行加權,從中選出權重最高的M個屬性參與節(jié)點構建;
[0022]S3、將構建的N個決策樹模型合并成一個大的隨機森林模型。
[0023]作為本發(fā)明的進一步改進,所述步驟S2中的決策樹模型采用單機多核多線程方式或多機并行分布式方式進行構建。
[0024]作為本發(fā)明的進一步改進,所述步驟S2中的決策樹模型采用單機多核多線程方式進行構建,具體包括:
[0025]自動開啟跟CPU核數(shù)一樣多的線程,每個線程從進程列表中獲取一個建樹信息后并開始進行根據(jù)該信息進行建樹,每建完一顆樹,就將建好的決策樹模型放到隨機森林中;
[0026]每個線程同時并行地完成建樹的過程,直到所有的建樹信息分發(fā)完成,最后由隨機森林合并所有的決策樹得到最后的隨機森林模型。
[0027]作為本發(fā)明的進一步改進,所述步驟S2還包括:
[0028]進程列表負責建樹信息的分發(fā),當所需要構建的樹被分發(fā)完成之后,通知森林完成的情況。
[0029]作為本發(fā)明的進一步改進,所述步驟S2中的決策樹模型采用多機并行分布式方式進行構建,主節(jié)點負責總體建模的調度,從節(jié)點負責具體的建樹過程,具體包括:
[0030]主節(jié)點中的進程保存所有建樹的信息,并將建樹信息分成多個進程列表;
[0031]根據(jù)需要啟動其他機器上的從節(jié)點進行建樹,每個從節(jié)點從主節(jié)點中獲取一個進程列表,然后在自己的機器上獨立構建決策樹并生成子隨機森林;
[0032]每個從節(jié)點將各自構建的子隨機森林放回到主節(jié)點中,由主節(jié)點將所有的子隨機森林合并得到最終的隨機森林模型。
[0033]作為本發(fā)明的進一步改進,所述從節(jié)點所在的機器為非多核機器時,采用隨機森林算法的串行方式進行建模。
[0034]作為本發(fā)明的進一步改進,所述步驟S2還包括:
[0035]當在處理大數(shù)據(jù)時,主節(jié)點無法存放所有的數(shù)據(jù)信息,此時,進程的進程列表中就保存各個數(shù)據(jù)分塊在各臺機器上的分布情況,從節(jié)點則在建樹的過程中根據(jù)分布情況從其他機器上獲取所需要的數(shù)據(jù)。
[0036]本發(fā)明具有以下有益效果:
[0037]將信息增益用于屬性子空間加權,使得有用信息能夠被抽取,從而提高分類的精度;
[0038]使用單機多線程的方式并行構建多個決策樹,以此縮短模型構建時間;
[0039]使用一對多的主從節(jié)點的方式在多個機器上分布式構建子隨機森林模型,從而解決數(shù)據(jù)無法在一個節(jié)點上存儲的問題,同時提高建模效率。
【專利附圖】
【附圖說明】
[0040]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0041]圖1為本發(fā)明一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法的流程示意圖。
[0042]圖2為本發(fā)明一【具體實施方式】中單機多核多線程方式建樹流程示意圖。
[0043]圖3為本發(fā)明一【具體實施方式】中多機并行分布式方式建樹流程示意圖。
【具體實施方式】
[0044]為了使本【技術領域】的人員更好地理解本發(fā)明中的技術方案,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本發(fā)明保護的范圍。
[0045]本發(fā)明公開了一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法,以解決對超高維的大數(shù)據(jù)進行有效處理的問題。其主要部分包括:
[0046]I)在建立決策樹節(jié)點時,采用屬性子空間加權的方法來提高對有用屬性的選取率,以增強算法在面對超高維數(shù)據(jù)時的精度性能;
[0047]2)當在多核CPU機器上時,算法采用并行多線程的方式構建決策樹,使得同一時間可以對建立多個決策樹模型,提高算法的時間效率;
[0048]3)當有多臺機器可供計算時,算法采用分布式并行的方式自動對所需要建立的決策樹模型在多臺機器上進行分配,從而提高算法的可擴展性。
[0049]參圖1所示,本發(fā)明的一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法,其特征在于,所述
[0050]S1、對需要進行訓練的數(shù)據(jù)樣本集通過有放回抽樣的方式抽取跟需要建立的決策樹數(shù)目一致的N個樣本子集;
[0051]S2、對每個樣本子集構建無剪枝的決策樹模型,在構建決策樹模型的節(jié)點時,采用信息增益法先對所有參與節(jié)點構建的屬性進行加權,從中選出權重最高的M個屬性參與節(jié)點構建;
[0052]S3、將構建的N個決策樹模型合并成一個大的隨機森林模型。
[0053]具體實施步驟如下:首先,跟現(xiàn)有隨機森林算法一樣,對需要進行訓練的數(shù)據(jù)樣本集通過有放回抽樣的方式抽取跟需要建立的決策樹數(shù)目一致的N個樣本子集;然后對每個樣本子集構建無剪枝的決策樹模型:其中,在構建決策樹的節(jié)點時,本發(fā)明采用信息增益法先對所有參與節(jié)點構建的屬性進行加權,從中選出權重最高的M個屬性參與節(jié)點構建;最后將所構建的N個決策樹模型合并成一個大的隨機森林模型。
[0054]在構建決策樹的過程中,針對單機多核和多機兩種不同的環(huán)境,分別采用并行多線程和并行分布式的方式來構建各個決策樹模型:
[0055]I)單機多核多線程方式構建決策樹模型
[0056]如圖2所示,進程列表(Task list)中包含建樹的信息,包括需要建立的決策樹的個數(shù)和每個決策樹所對應的樣本子集。在多核單機環(huán)境中,通過多線程的方式并行構建決策樹模型,默認情況下,算法自動開啟跟CPU核數(shù)一樣多的線程(Thread),每個Thread從Task list中獲取(fetch) —個建樹信息后并開始進行根據(jù)該信息進行建樹,每建完一顆樹,就將建好的決策樹模型放到隨機森林(Forest)中。
[0057]本實施方式中Task list還負責建樹信息的分發(fā),當所需要構建的樹被分發(fā)完成之后,通知Forest完成的情況。就這樣每個Thread同時并行地完成建樹的過程,直到所有的建樹信息分發(fā)完成,最后由Forest合并所有的決策樹得到最后的隨機森林模型。其中,Thread的個數(shù)是可調的。
[0058]2)多機并行分布式方式建立決策樹模型
[0059]如圖3所示,在使用多臺機器分布式建立決策樹模型時,將由兩大模塊對建模過程進行控制:主節(jié)點(Master node)和從節(jié)點(Slave node)。其中,Master node負責總體建模的調度,Slave node負責具體的建樹過程。
[0060]具體步驟如下:首先,Master node中的進程(Tasks)保存所有建樹的信息,并將建樹信息分成多個進程列表(Task IistU Task list2……),其作用同單機多核多線程方式構建決策樹模型中的Task list—致;然后根據(jù)需要啟動其他機器上的Slave node進行建樹,每個Slave node從Master node中獲取一個Task list (如Task listl),然后在自己的機器上獨立構建決策樹并生成隨機森林Forest,其構建過程同單機多核多線程方式構建決策樹,如果此機器非多核機器,那么其構建過程默認情況下,將采用現(xiàn)有的隨機森林算法的串行方式建模;最后,每個Slave node將各自構建的隨機森林Forest放回到Masternode中,由Master node將所有的隨機森林合并得到最終的隨機森林模型Forests。
[0061]其中,Slave node的個數(shù),以及每個Slave node完成的決策樹的個數(shù)都是由Master node可控可調的。另外,當在處理大數(shù)據(jù)時,一個節(jié)點無法存放所有的數(shù)據(jù)信息,此時,Tasks的子Task list中就保存了各個數(shù)據(jù)分塊在各臺機器上的分布情況,Slave node則在建樹的過程中根據(jù)這個信息從其他機器上獲取所需要的數(shù)據(jù)。
[0062]綜上所述,與現(xiàn)有技術相比,本發(fā)明具有以下有益效果:
[0063]將信息增益用于屬性子空間加權,使得有用信息能夠被抽取,從而提高分類的精度;
[0064]使用單機多線程的方式并行構建多個決策樹,以此縮短模型構建時間;
[0065]使用一對多的主從節(jié)點的方式在多個機器上分布式構建子隨機森林模型,從而解決數(shù)據(jù)無法在一個節(jié)點上存儲的問題,同時提高建模效率。
[0066]對于本領域技術人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內的所有變化囊括在本發(fā)明內。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。
[0067]此外,應當理解,雖然本說明書按照實施方式加以描述,但并非每個實施方式僅包含一個獨立的技術方案,說明書的這種敘述方式僅僅是為清楚起見,本領域技術人員應當將說明書作為一個整體,各實施例中的技術方案也可以經適當組合,形成本領域技術人員可以理解的其他實施方式。
【權利要求】
1.一種屬性子空間加權的隨機森林數(shù)據(jù)處理方法,其特征在于,所述方法包括: 51、對需要進行訓練的數(shù)據(jù)樣本集通過有放回抽樣的方式抽取跟需要建立的決策樹數(shù)目一致的N個樣本子集; 52、對每個樣本子集構建無剪枝的決策樹模型,在構建決策樹模型的節(jié)點時,采用信息增益法先對所有參與節(jié)點構建的屬性進行加權,從中選出權重最高的M個屬性參與節(jié)點構建; 53、將構建的N個決策樹模型合并成一個大的隨機森林模型。
2.根據(jù)權利要求1所述的方法,其特征在于,所述步驟S2中的決策樹模型采用單機多核多線程方式或多機并行分布式方式進行構建。
3.根據(jù)權利要求2所述的方法,其特征在于,所述步驟S2中的決策樹模型采用單機多核多線程方式進行構建,具體包括: 自動開啟跟CPU核數(shù)一樣多的線程,每個線程從進程列表中獲取一個建樹信息后并開始進行根據(jù)該信息進行建樹,每建完一顆樹,就將建好的決策樹模型放到隨機森林中; 每個線程同時并行地完成建樹的過程,直到所有的建樹信息分發(fā)完成,最后由隨機森林合并所有的決策樹得到最后的隨機森林模型。
4.根據(jù)權利要求3所述的方法,其特征在于,所述步驟S2還包括: 進程列表負責建樹信息的分發(fā),當所需要構建的樹被分發(fā)完成之后,通知森林完成的情況。
5.根據(jù)權利要求2所述的方法,其特征在于,所述步驟S2中的決策樹模型采用多機并行分布式方式進行構建,主節(jié)點負責總體建模的調度,從節(jié)點負責具體的建樹過程,具體包括: 主節(jié)點中的進程保存所有建樹的信息,并將建樹信息分成多個進程列表; 根據(jù)需要啟動其他機器上的從節(jié)點進行建樹,每個從節(jié)點從主節(jié)點中獲取一個進程列表,然后在自己的機器上獨立構建決策樹并生成子隨機森林; 每個從節(jié)點將各自構建的子隨機森林放回到主節(jié)點中,由主節(jié)點將所有的子隨機森林合并得到最終的隨機森林模型。
6.根據(jù)權利要求5所述的方法,其特征在于,所述從節(jié)點所在的機器為非多核機器時,采用隨機森林算法的串行方式進行建模。
7.根據(jù)權利要求5所述的方法,其特征在于,所述步驟S2還包括: 當在處理大數(shù)據(jù)時,主節(jié)點無法存放所有的數(shù)據(jù)信息,此時,進程的進程列表中就保存各個數(shù)據(jù)分塊在各臺機器上的分布情況,從節(jié)點則在建樹的過程中根據(jù)分布情況從其他機器上獲取所需要的數(shù)據(jù)。
【文檔編號】G06F9/38GK104391970SQ201410734550
【公開日】2015年3月4日 申請日期:2014年12月4日 優(yōu)先權日:2014年12月4日
【發(fā)明者】趙鶴, 黃哲學, 姜青山, 吳胤旭, 陳會 申請人:深圳先進技術研究院