專利名稱:決策樹優化方法和優化系統的制作方法
技術領域:
本發明涉及一種決策樹學習技術,尤其涉及一種決策樹優化方法和優化系統。
背景技術:
基于決策樹的方法是通過對一組訓練數據的學習,構造出決策樹形式的知識表 示,在決策樹的內部結點進行屬性值的比較并根據不同的屬性值判斷從該結點向下的分 支,在決策樹葉結點得到結論。所以從根到葉子結點的一條路徑就對應著一條規則,整棵決 策樹就對應著一組析取表達式規則。基于決策樹學習算法的一個最大的優點就是它在學習 過程中不需要使用者了解很多背景知識,其經典的算法有ID3、C4. 5、C5. 0、Cart等。
決策樹過于復雜一個原因是因為描述語言的不恰當造成;另一個原因是訓練實例 集中可能有噪聲。 一般來說系統在進行機器學習時都是建立在一個理想化的假設前提下, 即有充分的訓練實例,并且訓練實例完全正確,然而事實上訓練實例中往往含有噪聲數據, 或者訓練實例的數量太少,不能產生目標函數有代表性的采樣。如果上述情況有一種出現 時,算法所產生的樹就會過度擬合訓練樣例。此外,噪聲數據會導致無關實例摻雜在選定的 訓練集中,這將引起"無謂建模"現象。 目前4A(統一帳號、認證、授權、審計)管理系統的智能審計策略采用的ID3和J48 算法(C4.5的改進算法)均存在很嚴重的重復子樹問題,這也是采用決策樹算法所不可避 免的問題。冗余的規則使得以樹結構存儲所具有的規則易懂,判別運行性能高等優勢變的 不那么明顯,嚴重的冗余重復甚至背離了我們的初衷采用樹結構明顯優于規則集形式。因 此,對生成后的決策樹進行結構優化,極大程度的解決重復子樹問題,對決策樹進行修剪勢 在必行。 修剪決策樹有很多種方法,通常分為這樣五種
(1)預剪枝和后剪枝, 其中,后剪枝是對一顆完全生長的決策樹進行裁剪,即算法的輸入是一顆未經剪 枝的決策樹T,輸出是一顆剪枝后的決策樹T', T'是算法根據某種原則或標準將T中的一 個或是若干個子樹刪去得到的結果。剪枝的過程中,用葉子結點來代替被刪除的子樹。在 有些后剪枝的算法中,葉子節點所屬的類用這棵子樹大多數訓練實例所屬的類代替,并且 在葉子結點上標記出所屬這個類的訓練實例所占的比例。但是,由于決策樹的部分子樹被 剪枝,因而經過剪枝的決策樹T'對于訓練實例集的錯誤率已經不再是0。
(2)將決策樹轉化成另一種數據結構, 該方案包括以下幾個步驟將決策樹轉換為決策圖;將決策樹轉換為規則集形式 再進行去除冗余規則;使用復雜特征,原子特征的邏輯組合或算術組合。單純采用將決策樹 轉換為決策圖,在轉換為樹形結構在某種程度上能極大的解決重復子樹問題,但由于"或鏈 接問題"會極大的降低策略精度,這是實際審計過程所不能接受的。如圖la和圖lb所示, "或鏈接問題"是指在進行重復子樹合并的過程中由于屬性的過度合并而使值域被擴大。例 如對于目標主機ip = a,其上有帳號acc = al ;另有一 目標主機ip = b,其上有帳號acc =bl ;對如下決策樹進行決策圖存儲合并后會出現或鏈接問題。經過合并后會出現ip二a并 且acc = bl得到x的情況,而實際上ip為a的主機上沒有帳號bl,如圖1所示。
(3)擴展測試集,首先按特征構成是數據驅動還是假設驅動的差別,將建立的特征 組合或分割,然后在此基礎上引進多變量測試集。這些方法在調整決策樹表達時有效的擴 展可決策樹集; (4)選擇包含不同測試集評價函數,通過改善連續特征的描述,或修改搜索方法本 身實現; (5)使用數據庫約束,即通過削減數據庫或實例描述特征集來簡化決策樹。
現有技術中對決策樹的修剪方法不能同時兼顧決策樹的結構緊湊和決策樹的精 度,而"或鏈接問題"又極大的降低了決策樹的精度。因此,提供一種能夠有效地對決策樹 的結構進行簡化并保證決策樹的精度的決策樹優化方法和優化系統成為現有技術中急需 解決的技術問題。
發明內容
本發明的目的在于,針對現有技術中對決策樹的修剪方法不能同時兼顧決策樹的 結構緊湊和決策樹的精度的缺陷,提供一種能夠有效地對決策樹的結構進行簡化并保證決 策樹的精度的決策樹優化方法和優化系統。 該決策樹優化方法包括查詢所述決策樹中名稱相同且位于同一個父節點下的子 樹,并存儲所述子樹;當所述存儲的子樹為同層重復子樹時,合并所述同層重復子樹。
存儲子樹的操作具體包括當所述子樹為葉子節點時,存儲所述子樹的節點名稱; 當所述子樹為父節點,其親子節點為葉子節點時,存儲所述子樹的節點名稱及其所有親子 節點的名稱。
當所述子樹為葉子節點時,比較存儲的所述子樹的節點名稱;當所述子樹為父節
點,其親子節點為葉子節點時,比較所述子樹的節點名稱及其所有親子節點的名稱。
該決策樹優化系統包括查詢模塊,用于查找位于名稱相同且父節點ID相同的子
樹;子樹存儲模塊,用于存儲所述子樹;比較模塊,用于比較存儲的子樹;合并處理模塊,用
于當所述子樹為同層重復子樹時,對所述重復子樹進行合并。 本發明的決策樹優化方法和優化系統,通過對決策樹中的同層的子樹進行存儲后 判斷其是否為重復子樹,再進行合并,在保證決策樹的精度的前提下極大的減少重復子樹 問題,使決策樹的結構更為緊湊,運行效率更高。
圖la、圖lb分別是現有技術決策樹優化前、后的結構圖; 圖2是本發明第一實施例決策樹優化系統的結構圖; 圖3是本發明第一實施例決策樹優化方法的流程圖; 圖4a是本發明第二實施例需要進行優化的決策樹的結構圖; 圖4b、圖4c和圖4d是本發明第二實施例決策樹優化過程中以及優化后的結構 圖; 圖5是本發明本發明第三實施例優化后的決策樹;
圖6是本發明第二實施例節點D的子樹;
圖7是本發明第二實施例節點B的子樹。
具體實施例方式
以下結合附圖對本發明進行詳細說明。 如圖2所示,本發明第一實施例決策樹優化系統包括 查詢模塊12,用于查找位于名稱相同且父節點ID相同的子樹; 子樹存儲模塊14,用于存儲所述子樹,當重復子樹節點標識為0時,直接存儲該重
復子樹。當重復子樹節點標識為l,且其親子節點節點標識為0時,存儲該重復子樹的節點
名稱及其所有親子節點的名稱,具體存儲結構為{本節點名稱,葉子節點名稱1、葉子節點
名稱2........葉子節點名稱W 。當重復子樹節點標識為l,且其親子節點節點標識為1時,
存儲其親子節點,具體存儲結構為{本節點名稱,葉子節點名稱1、葉子節點名稱2........
葉子節點名稱NK 比較模塊16,用于比較存儲的子樹; 合并處理模塊18,用于當所述子樹為同層重復子樹時,對所述同層重復子樹進行 合并。 優選地,決策樹優化系統還包括決策樹存儲模塊11,存儲決策樹信息,包括各個 節點的ID、節點名稱、節點值、節點標識、層級以及父節點ID。子樹存儲模塊14中存儲決策 樹信息的具體存儲結構如下所示
typedef struct tree
{ int node id ;〃節點ID String noden謙;〃 節點名稱 Int parented ;〃父節點ID String nadevalue ;//節點值 Int flag ;〃標識 Int level ;〃層級 } TREE ; 其中,節點值為一個表達式;節點標識,用于區分該節點為葉子節點還是父節點, 設置當節點標識為O時,表示該節點為葉子節點,節點標識為1時,表示該節點為父節點;層 級設置為,自上而下層級增大,根節點為的層級值為0。 優選地,查詢模塊12,進一步用于查找層級相差一級且點名稱相同的子樹;子樹 存儲模塊14,進一步用于存儲所述層級相差一級且點名稱相同的子樹;比較模塊16,進一 步用于比較所述存儲的層級相差一級且點名稱相同的子樹;合并處理模塊18,進一步用于 當所述子樹為異層重復子樹時,將層級值大的子樹提升一級后,再對所述異層重復子樹進 行合并。 如圖3所示,第一實施例決策樹優化方法包括 步驟302,查詢決策樹中名稱相同且位于同一個父節點下的子樹; 步驟304,存儲所述子樹;
5
步驟306,判斷存儲的子樹是否為同層重復子樹,如果是,執行步驟308 ;
步驟308,合并所述同層重復子樹。 步驟304具體包括當所述子樹為葉子節點時,存儲所述子樹的節點名稱;當所述 子樹為父節點,其親子節點為葉子節點時,存儲所述子樹的節點名稱及其所有親子節點的 名稱。 步驟306具體包括當所述子樹為葉子節點時,比較存儲的所述子樹的節點名稱; 當所述子樹為父節點,其親子節點為葉子節點時,比較所述子樹的節點名稱及其所有親子 節點的名稱。 第一實施例決策樹優化方法還包括步驟301,存儲決策樹信息,所述決策樹信息包
括各個節點的ID、節點名稱、節點值、節點標識、層級以及父節點ID。 優選地,還包括步驟310,查找層級相差一級且點名稱相同的子樹, 步驟312,存儲層級相差一級且點名稱相同子樹; 步驟314,判斷所述子樹是否為異層重復子樹時; 步驟316,合并所述異層重復子樹。 步驟316具體包括步驟316a,將層級值大的重復子樹提升一級;步驟316b,對重 復子樹進行合并。 步驟316a的具體操作如下 步驟bl,尋找異層重復子樹所對應的父節點,以pl表示層級值較小的重復子樹的 父節點,以P2表示層級值較大的子樹的父節點; 步驟b2,對于層級值大的重復子樹進行節點值處理,尋找該重復子樹同父節點p2 下的所有兄弟節點,對其本身和兄弟節點值做修改,改為父節點P2的值&&自身節點值;
步驟b3,對于層級值較小的子樹進行節點值處理,尋找pl節點下的所有兄弟,對 其節點值做修改,改為父節點Pl的值&&自身節點值; 步驟b4,刪除其父節點pl、 p2,構造新節點new,節點new的各個屬性值除了節點 名稱外均與pl的各屬性值相等; 步驟b5,將所有原pl、p2下的父節點編號均指向新節點new,子樹提升完成。
本發明第二實施例對如圖4a所示的決策樹進行去除重復子樹優化處理,具體包 括如下步驟 1、對同層的重復子樹進行合并,包括如下步驟 (1)對于子樹X,圖6所示節點D的子樹,圖7所示節點B的子樹先去判斷是否存 在重復子樹 (2)對于子樹X是葉子節點則可直接進行比較,是否在同層下有相等的葉子節點, 有直接進行合并則變成圖4b ; (3)對于節點D的子樹先進行特殊存儲,再判斷是否存在重復子樹,有則進行合 并。對其存儲為(D,lll3,2,""h可將所有的一級子樹都轉化為這種形式存儲,并按比較 兩個一維數組是否相等來比較兩顆子樹是否相等。在這個例子中節點D的子樹存在重復子 樹,需要進行子樹合并,合并后如圖4c ; (4)對于節點B的子樹進行存儲為{B, " ", C, D, 1 II 3, 2},經過比較未發現重復子 樹。
2、對異層的重復子樹進行合并,包括如下步驟 (1)節點Y的父節點分別為節點D和節點B,將節點D下節點Y的節點值改為B = G II服&D = 5 ;節點B下節點Y的節點值改為B = F ; (2)如圖4d所示,構造新的節點new,將節點D和節點B下的節點Y合并,合并后 節點Y的節點值為(B = F) II (B = G II H&&D = 5);刪除節點節點D和節點B ;
(3)由于兩個節點X相差兩級,應此不作合并。 經過同層重復子樹的合并和異層重復子樹的合并之后,得到優化后的決策樹如圖 4d所示。 本發明第三實施例,在4A管理平臺中的應用本發明的決策樹優化方法。在4A管理 平臺中對審計決策樹優化中,可以解決審計決策樹由于重復子樹而引起的樹的結構散亂, 分類時性能不高等問題。 在計費系統中對于數據庫billl上的帳號root和filel的數據庫訪問權限授權 關系,其中帳號root對于詳單—l和詳單—2具有操作權限為select、create、alter、drop、 insert、叩date和delete權限;帳號root對于customl和custom2沒有任何操作權限;帳 號filel對于所有的詳單類和客戶位置信息類表格均具有select操作權限。對于實體權 限授權關系如下表所示。
ABCDEFGH
帳號-權限矩降衷(教據庫")
應用系統名稱計費數3瞎庫系統數據庫名稱billl主機IPJIfe址133.96.60.21
帳號 庫表名rootfill備注
詳單詳單1庫表權限S. C. A. DS
WT—一記錄權限S.I.U.DS
客戶位置信虔.customl庫表權限S
custom2記衆權限S 表1 根據以上的授權關系,通過4A中的智能審計決策樹方法可產生如下的策略 審計從帳號二root I操作對象=詳單敏感數據訪問 I操作對象=客戶位置信息非授權用戶操作 審計從帳號二fiU I審計操作=DROP :授權用戶非法操作 I審計操作=UPDATE :授權用戶非法操作 I審計操作=CREATE :授權用戶非法操作 I審計操作=DELETE :授權用戶非法操作 I審計操作=INSERT :授權用戶非法操作 I審計操作=ALTER :授權用戶非法操作
7
I審計操作=SELECT :敏感數據訪問 對于上圖所顯示的審計決策樹,存在很嚴重的重復子樹問題,如下所示 審計從帳號=fill審計操作=DROP :授權用戶非法操作 審計操作=UPDATE :授權用戶非法操作 審計操作=CREATE :授權用戶非法操作 審計操作=DELETE :授權用戶非法操作 審計操作=INSERT :授權用戶非法操作 審計操作=ALTER :授權用戶非法操作 審計操作=SELECT :敏感數據訪問 如圖5所示,優化后的審計操作中授權用戶非法操作的規則表達式為
審計從帳號==fill&fe審計操作 = = DROP || UPDATE 11 CREATE 11 DELETE 11 INSERT 11 ALTER 采用本發明的決策樹優化方法和優化系統,可以在保證分類精度的前提下極大的 減少重復子樹問題,使決策樹的結構更為緊湊,運行效率更高。 應說明的是以上實施例僅用以說明本發明而非限制,本發明也并不僅限于上述 舉例,一切不脫離本發明的精神和范圍的技術方案及其改進,其均應涵蓋在本發明的權利 要求范圍中。
權利要求
一種決策樹優化方法,其特征在于,包括查詢所述決策樹中名稱相同且位于同一個父節點下的子樹,并存儲所述子樹;當所述存儲的子樹為同層重復子樹時,合并所述同層重復子樹。
2. 根據權利要求1所述的決策樹優化方法,其特征在于,所述存儲所述子樹的操作具 體包括當所述子樹為葉子節點時,存儲所述子樹的節點名稱;當所述子樹為父節點,其親子節點為葉子節點時,存儲所述子樹的節點名稱及其所有 親子節點的名稱。
3. 根據權利要求2所述的決策樹優化方法,其特征在于,所述存儲所述子樹的操作之 后還包括當所述子樹為葉子節點時,比較存儲的所述子樹的節點名稱;當所述子樹為父節點,其親子節點為葉子節點時,比較所述子樹的節點名稱及其所有 親子節點的名稱。
4. 根據權利要求1至3中任意一項所述的決策樹優化方法,其特征在于,所述查詢所述 決策樹中的子樹的操作之前還包括存儲所述決策樹信息,所述決策樹信息包括各個節點的ID、節點名稱、節點值、節點 標識、層級以及父節點ID。
5. 根據權利要求4所述的決策樹優化方法,其特征在于,還包括 查找層級相差一級且點名稱相同的子樹,并存儲所述子樹; 當所述子樹為異層重復子樹時,合并所述異層重復子樹。
6. 根據權利要求5所述的決策樹優化方法,其特征在于,所述合并所述異層重復子樹 的操作具體包括將層級值大的子樹提升一級后,再對所述異層重復子樹進行合并。
7. —種決策樹優化系統,其特征在于,包括 查詢模塊,用于查找位于名稱相同且父節點ID相同的子樹; 子樹存儲模塊,用于存儲所述子樹; 比較模塊,用于比較存儲的子樹;合并處理模塊,用于當所述子樹為同層重復子樹時,對所述同層重復子樹進行合并。
8. 根據權利要求7所述的決策樹優化系統,其特征在于,還包括決策樹存儲模塊,用于 存儲所述決策樹信息,所述決策樹信息包括各個節點的ID、節點名稱、節點值、節點標識、 層級以及父節點ID。
9. 根據權利要求8所述的決策樹優化系統,其特征在于,所述查詢模塊,進一步用于查 找層級相差一級且點名稱相同的子樹;所述子樹存儲模塊,進一步用于存儲所述層級相差一級且點名稱相同的子樹; 所述比較模塊,進一步用于比較所述存儲的層級相差一級且點名稱相同的子樹; 所述合并處理模塊,進一步用于當所述子樹為異層重復子樹時,將層級值大的子樹提 升一級后,再對所述異層重復子樹進行合并。
全文摘要
本發明公開了一種決策樹優化方法和優化系統。其中決策樹優化方法包括查詢決策樹中名稱相同且位于同一個父節點下的子樹,并存儲所述子樹;當存儲的子樹為同層重復子樹時,合并同層重復子樹。本發明的決策樹優化方法和優化系統,通過對決策樹中的同層的重復子樹進行合并,并存儲該重復子樹,在保證決策樹的精度的前提下極大的減少重復子樹問題,使決策樹的結構更為緊湊,運行效率更高。
文檔編號G06F17/30GK101751399SQ20081018327
公開日2010年6月23日 申請日期2008年12月12日 優先權日2008年12月12日
發明者喬輝, 盧建輝, 張世勇, 智韶清, 武海斌, 狄宏, 賈殿承, 郭林江 申請人:中國移動通信集團河北有限公司