• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      ID3分類及其剪枝算法研究

      2017-01-21 14:53:12劉沖楊磊李娜
      軟件導(dǎo)刊 2016年12期
      關(guān)鍵詞:決策樹

      劉沖+楊磊+李娜

      摘 要:分類是數(shù)據(jù)挖掘的一個重要課題。分類的目的是建立一個分類模型,該模型能把數(shù)據(jù)庫中的數(shù)據(jù)項映射到給定類別中的某一個利用該模型形成分類規(guī)則并預(yù)測未來數(shù)據(jù)趨勢[1]。決策樹歸納是經(jīng)典的分類算法,構(gòu)建決策樹模型算法中最有影響力的方法是ID3算法。針對ID3算法缺點,使用預(yù)剪枝和后剪枝相結(jié)合的辦法處理決策樹中的過學(xué)習(xí)情況,可生成一個更簡單、更精確的決策樹。

      關(guān)鍵詞:ID3分類算法; 決策樹; 剪枝算法

      DOIDOI:10.11907/rjdk.162536

      中圖分類號:TP312

      文獻標(biāo)識碼:A文章編號:1672-7800(2016)012-0033-02

      1 ID3分類算法

      1.1 ID3算法原理

      決策樹歸納是經(jīng)典的分類算法[1]。ID3算法是Quinlan提出的一個著名的決策樹生成方法。決策樹是指具有以下性質(zhì)的樹:每個內(nèi)部節(jié)點都被標(biāo)記一個屬性,每個弧都被標(biāo)記一個值,這個值對應(yīng)于相應(yīng)父節(jié)點屬性;每個葉節(jié)點都被標(biāo)記一個類[2]。ID3算法是一種基于信息熵的決策樹算法,算法的核心是在生成決策樹時使用信息增益作為訓(xùn)練樣本集合的分裂度量標(biāo)準(zhǔn),選擇信息增益最大值的屬性對訓(xùn)練樣本劃分,該屬性使得劃分樣本分類所需的信息量最小。該方法可以減少訓(xùn)練樣本的劃分次數(shù),并盡可能得到一棵簡單的決策樹來描述相關(guān)信息。

      1.2 ID3算法缺點

      (1)對噪聲較為敏感,訓(xùn)練數(shù)據(jù)的輕微錯誤會導(dǎo)致不同結(jié)果,魯棒性較差;算法結(jié)果隨訓(xùn)練集記錄個數(shù)的改變而不同,不便于漸行漸進學(xué)習(xí)。

      (2)ID3算法只能處理離散屬性的數(shù)據(jù),對于連續(xù)屬性數(shù)據(jù),必須先進行離散化處理才能使用。如產(chǎn)品名稱是一個離散性屬性,適合用ID3算法處理,而產(chǎn)品價格是連續(xù)性屬性,必須對產(chǎn)品價格進行離散化處理后才能使用。

      (3) ID3算法不能處理屬性為空的記錄,而在實際業(yè)務(wù)數(shù)據(jù)中,又存在大量的空記錄,如果僅僅有一個缺失值就單純地刪除整條記錄的話,那么最終可能得到一個很小的訓(xùn)練集,同時這個訓(xùn)練集可能已經(jīng)丟失了業(yè)務(wù)數(shù)據(jù)中所包含的一些重要信息,所以要對缺省屬性進行處理才能使訓(xùn)練集適用于ID3算法。

      (4)ID3算法在搜索過程中不進行回溯,每當(dāng)選擇了一個屬性進行分類后,以后的處理過程就不會再考慮該屬性了,這樣算法很容易收斂到局部最優(yōu)而不是全局最優(yōu)。

      (5)ID3算法對于較小的數(shù)據(jù)集很有效,當(dāng)這些算法用于非常大的數(shù)據(jù)庫挖掘時,算法效率成為瓶頸。

      2 剪枝算法

      決策樹是分類和預(yù)測的強有力工具,而易于理解和表示規(guī)則是決策樹的優(yōu)勢。在最終形成的決策樹上,每個內(nèi)部節(jié)點都被標(biāo)記一個屬性,每個弧都被標(biāo)記一個值,這個值對應(yīng)于相應(yīng)父節(jié)點屬性;每個葉節(jié)點都被標(biāo)記一個類;每個分枝代表對該屬性的測試輸出。決策樹的生成過程分為兩個步驟:一是生成樹,二是對樹的剪枝,就是去掉一些可能是噪聲或者是錯誤的數(shù)據(jù)[3]。

      樣本分為訓(xùn)練集和測試集,給定一個決策樹A,如果在假設(shè)空間中存在另一個決策樹B,使得A在訓(xùn)練集上的錯誤率比B小,但是在測試集上A的錯誤率差比B大,則稱A為過度擬合訓(xùn)練數(shù)據(jù)。

      導(dǎo)致這種過度擬合現(xiàn)象的發(fā)生原因是:①訓(xùn)練樣本中存在隨機錯誤或噪聲,噪聲會導(dǎo)致分類結(jié)果沖突,比如對某個實例的每個屬性都有相同的屬性值,但在訓(xùn)練集和測試集中卻有著不同的分類結(jié)果;②當(dāng)訓(xùn)練樣本數(shù)據(jù)量比較小時,特別是當(dāng)決策樹中的某些分枝與客觀事實不符合時,很可能出現(xiàn)巧合的規(guī)律性[4-5]。第①種情況適應(yīng)于后剪枝方法,第②種情況適應(yīng)于預(yù)剪枝方法。

      (1)預(yù)剪枝:在生成決策樹之前,通過一定規(guī)則較早地停止樹的生長。由于預(yù)剪枝不必生成整棵決策樹,且算法相對簡單,效率較高,適合處理大規(guī)模數(shù)據(jù)問題。該方法能大大縮短決策樹規(guī)則生成時間,但如果閾值設(shè)置不準(zhǔn)確,會大大降低算法的精確度。預(yù)剪枝具體在什么時候停止決策樹生長衍生出多種方法:最簡單的方法是在決策樹生長到某一固定高度時停止樹的生長;如果某節(jié)點的實例個數(shù)與總樣本的個數(shù)之比小于某個閾值就停止樹的生長。

      (2)后剪枝:允許決策樹過度擬合數(shù)據(jù),它由完全生長的樹剪去分枝。通過刪除節(jié)點分枝剪掉樹節(jié)點。這種方法能保證結(jié)果具有較高的準(zhǔn)確度,但代價是處理大規(guī)模數(shù)據(jù)分類集時會耗費較多時間。常用的后剪枝算法有REP方法、PEP方法和MEP方法等。后剪枝方法主要是通過不斷修改子樹使之成為葉節(jié)點[6]。

      3 ID3改進算法實現(xiàn)

      決策樹生成后,從根到葉子結(jié)點可以創(chuàng)建一條IF-THEN形式規(guī)則,規(guī)則左邊為規(guī)則前件,葉子節(jié)點的屬性值為規(guī)則后件。分類規(guī)則的質(zhì)量可以用準(zhǔn)確率和覆蓋率兩個參數(shù)度量[7]。

      (1)準(zhǔn)確率:是指結(jié)點在測試集上正確預(yù)測的實例數(shù)與分配給該節(jié)點的實例總數(shù)之比,度量該節(jié)點能夠正確預(yù)測目標(biāo)值的可能性。實際中由于測試集數(shù)目較大,求出各個結(jié)點的準(zhǔn)確率會影響算法的執(zhí)行效率,故采用總的準(zhǔn)確率來評估分類質(zhì)量,也就是用所有節(jié)點在測試集中預(yù)測正確的實例數(shù)與測試集大小的比例來反映總體評價標(biāo)準(zhǔn)。

      (2)覆蓋率:指節(jié)點中占某一類最多的實例數(shù)量與訓(xùn)練樣本集中該類的實例數(shù)量之比,以此度量從訓(xùn)練集中分配了多少實例給該節(jié)點。覆蓋率也叫置信度,置信度小于某個閾值的節(jié)點會被預(yù)剪掉,如果一個父節(jié)點所有的子結(jié)點都被剪枝掉了,則該父節(jié)點成為葉結(jié)點。把父節(jié)點的節(jié)點名替換為該節(jié)點中某實例所對應(yīng)的類標(biāo)號,并且釋放掉分裂屬性,以便讓后續(xù)節(jié)點可以重新利用該屬性。通過設(shè)置置信度閾值,可以較快得到一棵決策樹。

      3.1 算法數(shù)據(jù)結(jié)構(gòu)

      改進后的算法實現(xiàn)過程中用到的決策樹結(jié)點代碼:

      class TreeNode { TreeNode parent; //父節(jié)點 String parentAttribute; //指向父結(jié)點的哪個屬性 String nodeName; //節(jié)點名 String[] attributes; //屬性數(shù)組 TreeNode[] childNodes; //子節(jié)點數(shù)組 String maxAttribute; //結(jié)點中占最多實例數(shù)所對應(yīng)的屬性 int errorNum; //記錄決策樹在測試集中的錯誤數(shù) double percent; //置信度,置信度小于某個閾值,屬性提前停止分裂

      }

      3.2 算法實現(xiàn)

      根據(jù)未剪枝前的決策樹和測試集遞歸調(diào)用算法,計算出樹中每個節(jié)點的錯誤數(shù),然后根據(jù)REP剪枝準(zhǔn)則來剪枝決策樹,代碼如下:

      public void repairDTree(TreeNode node)

      {

      TreeNode[] childs = node.childNodes;int total=0;

      for (int i = 0; i < childs.length; i++)

      if (childs[i] != null)

      total=total+childs[i].errorNum; //計算出子結(jié)點的錯誤總數(shù)

      //如果父節(jié)點錯誤數(shù)不大于子結(jié)點的錯誤總數(shù),則刪除子結(jié)點

      if(total>=node.errorNum)

      node.childNodes = new TreeNode[0];

      else for (int i = 0; i < childs.length; i++)

      {

      if (childs[i] != null) repairDTree(childs[i]);

      }

      }

      4 實驗結(jié)果比較

      針對不同的訓(xùn)練集,ID3算法在改進前后的性能比較情況如表1所示。從數(shù)據(jù)倉庫中隨機抽取4個樣本集作為數(shù)據(jù)來源,且所有實驗都在同一配置同一操作系統(tǒng)的機器上進行。

      從時間復(fù)雜度上分析:改進后的算法在決策樹生成時間上明顯比改進前短,而且隨著數(shù)據(jù)量的增大,改進前后算法在時間上都非線性遞增。數(shù)據(jù)量越大,遞增的幅度越大,在時間復(fù)雜度上試驗結(jié)果與理論相符。

      從準(zhǔn)確率上分析:ID3改進算法在測試集上的預(yù)測準(zhǔn)確率比改進前高。由于采用了后剪枝算法,從而消除了決策樹生成過程中的過學(xué)習(xí)問題,提高了預(yù)測準(zhǔn)確率。ID3算法改進后的預(yù)測準(zhǔn)確率隨著訓(xùn)練集和測試集的增長呈現(xiàn)出線性增長趨勢,即樣本集越大,效果越明顯。

      參考文獻:

      [1] 鄒媛.基于決策樹的數(shù)據(jù)挖掘算法的應(yīng)用與研究[J].科學(xué)技術(shù)與工程,2010,10(18):4510-4515.

      [2] 孫愛東,朱梅階.基于屬性值的ID3算法改進[J].計算機工程設(shè)計,2008,29(12): 3011-3012.

      [3] 楊學(xué)兵.決策樹算法及其核心技術(shù)[J].計算機技術(shù)與發(fā)展,2007,17(1):43-45.

      [4] 魯為,王樅.決策樹算法的優(yōu)化與比較[J].計算機工程,2007,33(16):189-190.

      [5] 李道國.決策樹剪枝算法的研究和改進[J].計算機工程,2005(8):33-46.

      [6] 邵峰晶,于忠清.數(shù)據(jù)挖掘原理與算法[M].北京:中國水利水電出版社,2003.

      [7] 朱顥東.ID3算法的優(yōu)化[J].華中科技大學(xué)學(xué)報,2010,38(5):9-12.

      (責(zé)任編輯:杜能鋼)

      猜你喜歡
      決策樹
      基于決策樹和神經(jīng)網(wǎng)絡(luò)的高血壓病危險因素研究
      一種針對不均衡數(shù)據(jù)集的SVM決策樹算法
      決策樹和隨機森林方法在管理決策中的應(yīng)用
      電子制作(2018年16期)2018-09-26 03:27:06
      基于改進決策樹的故障診斷方法研究
      決策樹多元分類模型預(yù)測森林植被覆蓋
      電子制作(2017年24期)2017-02-02 07:14:23
      基于決策樹算法的數(shù)據(jù)挖掘應(yīng)用研究
      今日財富(2016年6期)2016-10-21 05:40:53
      基于決策樹的出租車乘客出行目的識別
      基于決策樹的復(fù)雜電網(wǎng)多諧波源監(jiān)管
      電測與儀表(2016年2期)2016-04-12 00:24:40
      基于模糊關(guān)聯(lián)規(guī)則和決策樹的圖像自動標(biāo)注
      基于肺癌CT的決策樹模型在肺癌診斷中的應(yīng)用
      凭祥市| 石狮市| 广灵县| 濮阳县| 广州市| 泾阳县| 怀宁县| 临安市| 高青县| 淄博市| 龙南县| 黄冈市| 周口市| 中宁县| 萨嘎县| 留坝县| 勐海县| 怀集县| 乳山市| 辰溪县| 綦江县| 洪雅县| 嘉善县| 塘沽区| 株洲县| 绥阳县| 陇川县| 汪清县| 浪卡子县| 萍乡市| 巴楚县| 彭泽县| 京山县| 普安县| 睢宁县| 大悟县| 抚松县| 青冈县| 上饶市| 新化县| 西青区|