本發(fā)明涉及的是一種決策樹增量學(xué)習(xí)方法。
背景技術(shù):
隨著數(shù)據(jù)庫技術(shù)的迅速發(fā)展,商業(yè)情報數(shù)據(jù)量也正快速增加。這些數(shù)據(jù)中包含很多尚不為人所知的信息,如果把這些信息挖掘出來,那么對于人們的工作和生活都會很有幫助。因此,為了能夠使用這些隱含在數(shù)據(jù)中的信息,就需要對數(shù)據(jù)進行一些分析處理。數(shù)據(jù)中鎖定了大量的知識,也就是那些有可能很重要,然而還沒有被提取出來的知識。目前的各種數(shù)據(jù)庫可以實現(xiàn)數(shù)據(jù)操作的常用功能,但是卻無法識別這些數(shù)據(jù)之間是否有關(guān)聯(lián)以及存在什么樣的規(guī)律,沒有辦法依據(jù)現(xiàn)在的數(shù)據(jù)估測以后的動態(tài)。正是因為這個原因,就會出現(xiàn)一種看似不太符合常理的情況,也就是數(shù)據(jù)量很大但是發(fā)現(xiàn)不了有價值信息導(dǎo)致知識貧乏。為了解決這種矛盾,怎樣快速并且高效的從大量數(shù)據(jù)中發(fā)現(xiàn)有用的知識以及信息,自然就成為一種需求,數(shù)據(jù)挖掘就是為了滿足該需求而出現(xiàn)的。數(shù)據(jù)挖掘作為發(fā)現(xiàn)大數(shù)據(jù)中隱藏的知識以及信息的分析方法,已成為了很多學(xué)者研究的熱點。
機器學(xué)習(xí)可以將知識和信息從數(shù)據(jù)中發(fā)現(xiàn)并抽取出來,為了便于進行理解及使用,采用的表達方式往往也是比較簡單的,是數(shù)據(jù)挖掘的技術(shù)基礎(chǔ)。這些待提取的信息,往往不是那么容易就可以得到的,需要先取得數(shù)據(jù),然后從中找到可能有價值的信息。數(shù)據(jù)挖掘可以找到新規(guī)律,提高人們對大量源數(shù)據(jù)的理解、認識和應(yīng)用。數(shù)據(jù)挖掘不僅可以學(xué)到已經(jīng)存在的知識,而且可以提煉那些還沒有被找出的知識,然后用方便人們理解的方式進行保存,以便后續(xù)使用。自從開始機器學(xué)習(xí)的研究以來,人們根據(jù)學(xué)習(xí)的不同模式提出了多種機器學(xué)習(xí)算法,比如決策樹算法、神經(jīng)網(wǎng)絡(luò)、遺傳算法等。其中比較常用并且發(fā)展比較成熟的算法已經(jīng)被應(yīng)用在實際系統(tǒng)中和智能計算機的設(shè)計以及實現(xiàn)中。由于平時生活的需要,數(shù)據(jù)挖掘的發(fā)展成為了一種必然。
最開始出現(xiàn)的決策樹算法一般都是不適用于增量的,典型代表有id3以及c4.5算法,隨著數(shù)據(jù)量的迅速增加,利用傳統(tǒng)的算法思想就會使得整個過程非常耗時,難以接受,所以后期就出現(xiàn)了很多決策樹增量學(xué)習(xí)算法,比如id5r等。這些決策樹算法在構(gòu)建決策樹的過程中,從某個結(jié)點分出的分支數(shù)目是與分類屬性的屬性值種類數(shù)完全對應(yīng)的,如果一直采用這種方式分裂決策樹,就會造成決策樹有可能過于龐大,從而導(dǎo)致決策樹在實際應(yīng)用中的使用受到限制,而且過多的分支也有可能出現(xiàn)過度擬合現(xiàn)象,降低分類準確率。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種能防止決策樹過于龐大,使得增量學(xué)習(xí)速度更快,效率更高的面向情報大數(shù)據(jù)的決策樹增量學(xué)習(xí)方法。
本發(fā)明的目的是這樣實現(xiàn)的:
步驟一、結(jié)點n0作為決策樹t的根結(jié)點,計算n0的結(jié)點分裂度量值sc(n0),如果n0是可分結(jié)點,那么將n0放入待分裂結(jié)點集合q中;
步驟二、如果決策樹t中葉子結(jié)點的個數(shù)小于限定的最大葉子結(jié)點數(shù)并且待分裂結(jié)點集合q非空,對于待分裂結(jié)點集合q中的所有結(jié)點重復(fù)執(zhí)行步驟三到步驟六的操作;
步驟三、從待分裂結(jié)點集合q中,挑選具有最大分裂度量值的結(jié)點nb,并且將結(jié)點nb從待分裂結(jié)點集合q中刪去;
步驟四、分裂結(jié)點nb,并且計算分裂結(jié)點nb時產(chǎn)生的兩個子節(jié)點的結(jié)點分裂度量值;
步驟五、對于分裂結(jié)點nb時產(chǎn)生的兩個子結(jié)點中的任意一個子結(jié)點,如果該子結(jié)點是可以繼續(xù)分裂的,就將其放入待分裂結(jié)點集合q中;
步驟六、分裂結(jié)點nb之后,如果決策樹t的葉子結(jié)點的個數(shù)等于限定的最大葉子結(jié)點數(shù)或者待分裂結(jié)點集合q為空,那么就完成分裂過程并將待分裂結(jié)點集合q中所有的結(jié)點定義為葉子結(jié)點;
步驟七、根據(jù)構(gòu)建的決策樹,利用改進的iid5r算法進行增量學(xué)習(xí),從而生成最終的決策樹。
本發(fā)明提出了一種二分決策樹的方法,用來防止決策樹過于龐大,以便更好地應(yīng)用于實際生活決策中,而且也提出了一種何時增量即增量時機的方法,使得增量學(xué)習(xí)速度更快,效率更高。
由于具有易于理解的優(yōu)勢,決策樹成為最流行的分類方法之一。然而,利用已經(jīng)存在的方法構(gòu)建的決策樹一般都會過于龐大、復(fù)雜化,因此在實際應(yīng)用中實用性受到限制。此外,當今社會數(shù)據(jù)通常都是不斷增加的,如果使用傳統(tǒng)的決策樹算法,即新增一批樣本之后,將歷史數(shù)據(jù)和新增數(shù)據(jù)再放在一起重新學(xué)習(xí)一遍,這種方式會把以前的知識遺忘掉,使得之前學(xué)習(xí)到的決策樹沒有任何意義。因此,這時候增量學(xué)習(xí)就變得尤為重要,即利用新增樣本對以前學(xué)習(xí)到的決策樹進行更新調(diào)整。
在深入研究決策樹方法和增量學(xué)習(xí)方法的基礎(chǔ)上,本發(fā)明提出一個新的決策樹算法nolcdt。在分裂結(jié)點之前,nolcdt算法把結(jié)點中每個候選屬性的多個屬性值分別合并成兩組,選擇信息增益最大的候選屬性將結(jié)點分為兩個分支,這種方式可以避免生成太多的分支,進而防止決策樹過于龐大。nolcdt算法在選擇下一個將要分裂的結(jié)點方面也有所改進,該算法為所有候選分裂結(jié)點計算對應(yīng)的結(jié)點分裂度量值,并且總是選擇結(jié)點分裂度量值最大的候選結(jié)點作為下一個分裂結(jié)點,使得每次分裂都有最大的信息增益。此外,本發(fā)明在決策樹增量學(xué)習(xí)算法id5r的基礎(chǔ)上,提出一種改進算法iid5r,iid5r增加了評估分類屬性質(zhì)量的功能,且推導(dǎo)出分類屬性被候選屬性替代的最小樣本數(shù)的計算公式。將nolcdt與iid5r相結(jié)合,提出了一個混合分類器算法hcs,hcs算法主要有兩個階段組成:構(gòu)建初始決策樹和增量學(xué)習(xí)。根據(jù)nolcdt建立初始決策樹,然后使用iid5r進行增量學(xué)習(xí)。hcs算法綜合了決策樹以及增量學(xué)習(xí)方法的優(yōu)點,既便于理解又適于增量學(xué)習(xí)。
選用uci數(shù)據(jù)庫中的數(shù)據(jù)集作為實驗的數(shù)據(jù)來源,將傳統(tǒng)的決策樹算法與本發(fā)明提出的混合分類器算法進行實驗對比,結(jié)果表明hcs可以很好的解決增量問題,構(gòu)建的決策樹更簡單便于理解,增量階段消耗的時間減少。
附圖說明
圖1為nolcdt算法示意圖;
圖2為葉子結(jié)點個數(shù)沒有限制條件下分類準確率的對比圖;
圖3為葉子結(jié)點個數(shù)沒有限制條件下葉子結(jié)點個數(shù)的對比圖;
圖4為改變?nèi)~子結(jié)點個數(shù)上限的實驗結(jié)果圖;
圖5為不同數(shù)據(jù)規(guī)模下的分類準確率對比圖;
圖6為不同數(shù)據(jù)規(guī)模下的執(zhí)行時間對比圖。
具體實施方式
下面結(jié)合圖1,舉例對本發(fā)明做更詳細的描述。
步驟一、結(jié)點n0作為決策樹t的根結(jié)點。計算n0的結(jié)點分裂度量值sc(n0),如果n0是可分結(jié)點,那么將n0放入待分裂結(jié)點集合q中。結(jié)點分裂標準是
步驟二、如果決策樹t中葉子結(jié)點的個數(shù)小于限定的最大葉子結(jié)點數(shù)并且集合q非空,對于集合q中的所有結(jié)點重復(fù)進行以下操作;
步驟三、從候選分類結(jié)點集合q中,挑選具有最大分裂度量值的結(jié)點nb,并且將結(jié)點nb從集合q中刪去。
步驟四、分裂結(jié)點nb,并且計算分裂nb時產(chǎn)生的兩個子節(jié)點的結(jié)點分裂度量值;
步驟五、對于分裂結(jié)點nb時產(chǎn)生的兩個子結(jié)點中的任意一個結(jié)點,如果該子結(jié)點是可以繼續(xù)分裂的,就將其放入集合q中;
步驟六、分裂結(jié)點nb之后,如果決策樹t的葉子結(jié)點的個數(shù)等于限定的最大葉子結(jié)點數(shù)或者q為空,那么就終止該算法并將集合q中所有的結(jié)點定義為葉子結(jié)點;
步驟七、根據(jù)構(gòu)建的決策樹,利用改進的iid5r算法進行增量學(xué)習(xí),從而生成最終的決策樹。
下面這個公式給出了新增樣本數(shù)量的一個閾值,也就是新增多少條樣本之后,原來的分類屬性會被候選屬性所替代。
上式中,e代表屬性的信息熵,a代表新增樣本的數(shù)量,p代表正類對應(yīng)的樣本個數(shù),n代表負類對應(yīng)的樣本個數(shù),bj代表屬性值取j對應(yīng)的樣本數(shù)。若新增樣本數(shù)量a≤amax,即使在新增樣本之后,分類屬性的熵值還是小于候選屬性的熵值,那么分類屬性對應(yīng)的信息增益值就會大于候選屬性對應(yīng)的信息增益值,因此依然將原分類屬性當做結(jié)點的分類屬性;若新增樣本數(shù)量a>amax,這時候新增樣本之后,分類屬性對應(yīng)的熵值大于候選屬性的熵值那么分類屬性對應(yīng)的信息增益值就會小于候選屬性對應(yīng)的信息增益值,因此就要將原分類屬性替換掉,把候選屬性當做結(jié)點的分類屬性,對決策樹進行修整。
實驗結(jié)果與分析:
(一)數(shù)據(jù)集的選取
為了驗證本發(fā)明提出的方法的有效性,取uci機器學(xué)習(xí)數(shù)據(jù)庫中的信貸審批(creditapproval)數(shù)據(jù)集進行驗證。由于uci數(shù)據(jù)庫中數(shù)據(jù)集個數(shù)有限,因此利用webharvest從網(wǎng)頁中爬取了一些數(shù)據(jù)。webharvest是一種web數(shù)據(jù)爬蟲工具,用于爬取指定頁面中的指定內(nèi)容,為此,需要編寫對應(yīng)網(wǎng)頁的xml爬蟲腳本,然后按照爬蟲腳本中編寫的xpath路徑進行解析頁面,從而獲取到指定的頁面內(nèi)容,最后把這些內(nèi)容進行組合得到實驗所需要的數(shù)據(jù)。所采用的數(shù)據(jù)包含15個條件屬性,一個類別屬性(類別屬性只包括兩個類別,即好的信貸風(fēng)險與差的信貸風(fēng)險),樣本數(shù)目為2*107個。首先從分類準確率和葉子結(jié)點個數(shù)這兩個方面將提出的nolcdt算法與決策樹的經(jīng)典算法c4.5進行比較,用來評估nolcdt算法的性能。然后,再模擬發(fā)生增量的情況,首先使用nolcdt算法創(chuàng)建初始決策樹,然后測試在使用提出的改進策略以及不使用該策略時,算法的分類準確率以及所需學(xué)習(xí)時間有多少差別。
uci機器學(xué)習(xí)數(shù)據(jù)庫包含幾百個實驗數(shù)據(jù)庫以及人工數(shù)據(jù)庫,被全球各地的相關(guān)專家以及學(xué)者使用,用來進行各種研究,是使用廣泛的數(shù)據(jù)庫系統(tǒng)。國際上很多著名的算法使用的都是uci機器學(xué)習(xí)數(shù)據(jù)庫中的數(shù)據(jù)集,因此,本發(fā)明也使用uci機器學(xué)習(xí)數(shù)據(jù)庫中的數(shù)據(jù)集,以便保證實驗的可靠性。
(二)結(jié)果及分析
為了充分證明提出的nolcdt算法構(gòu)建的決策樹不僅簡單而且準確率高,以及驗證提出的iid5r算法確實能夠提高學(xué)習(xí)速度。因此做了兩組實驗,這兩組實驗如下。
1、nolcdt算法與c4.5算法的對比實驗。
2、id5r算法與iid5r算法的對比實驗。
實驗結(jié)果可以看出nolcdt算法比傳統(tǒng)的決策樹算法c4.5的準確度要高。這些結(jié)果表明,在分裂結(jié)點的時候,通過合并分支,并且采用一種新的分裂標準來選擇當前最優(yōu)的分裂結(jié)點,能夠使得nolcdt算法充分利用有限的葉子結(jié)點,得到一個更簡潔并且準確率更高的決策樹。根據(jù)實驗結(jié)果,可以看出提出的改進策略確實能夠提高學(xué)習(xí)速度,使得算法的執(zhí)行時間縮短。給定一棵初始決策樹以及增量數(shù)據(jù)集,當新的樣本到來之后,并不一定會引起決策樹結(jié)構(gòu)的改變。為了解決如何判斷是否需要調(diào)整決策樹的結(jié)構(gòu)這個問題,本發(fā)明采用的方法就是根據(jù)當前最近的這個樣本,來計算該結(jié)點的分類屬性將會被候選屬性所替換的最小記錄數(shù)。具體方法是,根據(jù)證明推理得到的公式來算出各個候選屬性如果能替換當前分類屬性的最小記錄數(shù),如果新增記錄數(shù)達到了某個候選屬性的最小記錄數(shù),那么就把該候選屬性與原來的分類屬性進行調(diào)換,這個調(diào)換過程就是使用的上拉算法;如果還沒有達到任何一個候選屬性的最小記錄數(shù),那么只需要把新樣本的信息記錄下來即可,對決策樹中該結(jié)點的分類屬性的選擇并沒有影響。
(三)結(jié)論:
1、由于傳統(tǒng)的決策樹算法在構(gòu)建決策樹的時候,每個結(jié)點產(chǎn)生的分支和分類屬性的取值個數(shù)相同,這樣就會產(chǎn)生大量的分支,生成的決策樹擁有大量的結(jié)點,就會導(dǎo)致決策樹過于復(fù)雜,決策規(guī)則過多。因此實用性受到限制,為了解決這個問題,本發(fā)明提出一個決策樹算法nolcdt。在分裂結(jié)點之前,nolcdt算法把結(jié)點中每個候選屬性的多個屬性值分別合并成兩組,選擇信息增益最大的候選屬性將結(jié)點分為兩個分支,這種方式可以避免生成太多的分支,進而防止決策樹過于龐大。
2、nolcdt算法在選擇下一個將要分裂的結(jié)點方面也有所改進,該算法為所有候選分裂結(jié)點計算對應(yīng)的結(jié)點分裂度量值,并且總是從所有的候選分裂結(jié)點中選擇結(jié)點分裂度量值最大的結(jié)點作為下一個分裂結(jié)點,使得每次分裂都有最大的信息增益。
3、為了提高增量學(xué)習(xí)的效率,本發(fā)明提出對決策樹增量學(xué)習(xí)算法id5r的一種改進算法iid5r,當新的樣本到來之后,并不是任何時候都需要對決策樹進行結(jié)構(gòu)的調(diào)整,這時候就需要有個度量標準。iid5r提出一種計算記錄下限值的方法,當新增記錄數(shù)小于等于這個下限值,不需要對決策樹進行結(jié)構(gòu)的調(diào)整;當新增記錄數(shù)大于這個下限值,就需要對決策樹的對應(yīng)結(jié)點的分類屬性進行修正。
4、將nolcdt與iid5r相結(jié)合,提出了一個混合分類器算法hcs,hcs算法主要有兩個階段組成:構(gòu)建初始決策樹和增量學(xué)習(xí)。根據(jù)nolcdt建立初始決策樹,然后使用iid5r進行增量學(xué)習(xí)。hcs算法綜合了決策樹以及增量學(xué)習(xí)方法的優(yōu)點,既便于理解又適于增量學(xué)習(xí)。
由于nolcdt算法每次分裂最多產(chǎn)生兩個分支,可能會使得決策樹的深度增加,這樣nolcdt算法和傳統(tǒng)的決策樹算法相比,時間效率就會稍微低一些。后續(xù)研究中應(yīng)該將nolcdt算法與其他的剪枝方法進行結(jié)合考慮,降低決策樹的深度。