1. 程式人生 > >weka使用ID3和C4.5演算法 分類實驗

weka使用ID3和C4.5演算法 分類實驗

使用weka做分類任務並建立相應決策樹(ID3演算法和C4.5演算法)

  1. weka安裝
  2. 相關知識理論
    2.1 決策樹
    2.2 ID3演算法
    2.3 C4.5演算法
  3. 分類實驗
    3.1 資料處理
    3.2 使用ID3演算法
    3.3 使用C4.5演算法
    3.4 ID3和C4.5的比較
  4. 總結

1.weka安裝
weka官網Download地址:
https://www.cs.waikato.ac.nz/ml/weka/downloading.html
注意有帶java環境和不帶java環境的版本,如果電腦中有JRE環境選擇後者安裝。
2.相關理論知識


2.1 決策樹
決策樹是一種特殊的樹形結構,一般由節點和有向邊組成。其中,節點表示特徵、屬性或者一個類。而有向邊包含有判斷條件。決策樹從根節點開始延伸,經過不同的判斷條件後,到達不同的子節點。而上層子節點又可以作為父節點被進一步劃分為下層子節點。一般情況下,我們從根節點輸入資料,經過多次判斷後,這些資料就會被分為不同的類別。這就構成了一顆簡單的分類決策樹。分類樹的輸出是一個標量,而回歸樹的一般輸出為一個實數。
決策樹學習三個階段:特徵選擇、樹的生成、樹的修剪
特徵選擇:特徵選擇是指從訓練資料中眾多的特徵中選擇一個特徵作為當前節點的分裂標準,如何選擇特徵有著很多不同量化評估標準標準,從而衍生出不同的決策樹演算法。
決策樹生成
: 根據選擇的特徵評估標準,從上至下遞迴地生成子節點,直到資料集不可分則停止決策樹停止生長。 樹結構來說,遞迴結構是最容易理解的方式。
剪枝:決策樹容易過擬合,一般來需要剪枝,縮小樹結構規模、緩解過擬合。剪枝技術有預剪枝和後剪枝兩種。
2.2 ID3演算法
ID3演算法中根據資訊理論的資訊增益評估和選擇特徵,每次選擇資訊增益最大的特徵做判斷模組。ID3演算法可用於劃分標稱型(離散型)資料集(需手動用工具轉換),沒有剪枝的過程,為了去除過度資料匹配的問題,可通過裁剪合併相鄰的無法產生大量資訊增益的葉子節點(例如設定資訊增益閥值)。使用資訊增益的話其實是有一個缺點,那就是它偏向於具有大量值的屬性–就是說在訓練集中,某個屬性所取的不同值的個數越多,那麼越有可能拿它來作為分裂屬性,而這樣做有時候是沒有意義的,另外ID3不能處理連續分佈的資料特徵,於是就有了C4.5演算法。
2.3 C4.5演算法

C4.5是ID3的一個改進演算法,繼承了ID3演算法的優點。C4.5既可以處理離散型屬性,也可以處理連續性屬性(本質還是先轉換為離散的再處理)。C4.5演算法用資訊增益率來選擇屬性,克服了用資訊增益選擇屬性時偏向選擇取值多的屬性的不足在樹構造過程中進行剪枝;能夠完成對連續屬性的離散化處理;能夠對不完整資料進行處理。C4.5演算法產生的分類規則易於理解、準確率較高;但效率低,因樹構造過程中,需要對資料集進行多次的順序掃描和排序。
ID3演算法的資訊理論基礎–資訊熵、資訊增益 等知識在本文最下方的參考文獻中。
3. 分類實驗
3.1 資料處理
根據自己的資料,再結合這個步驟來。
開啟weka,選擇explorer模式,匯入要求格式的訓練集資料。
3.1.1 remove無用屬性資訊(特徵選擇)
選擇與分類標準無關屬性,點選remove。
這裡寫圖片描述
3.2 使用ID3演算法
1)選擇Classify,選擇ID3演算法。
若發現ID3是灰的不能選,幾個原因:
(1)未匯入ID3演算法包;
選擇一開始開啟weka的GUI介面,點選Tools->Package Manager->需下載包。(有些忘了哪個包。。。)
(2)若還是灰色,ID3演算法要求屬性都是離散型變數,看你的資料是否符合要求,否則選擇連續型資料將其離散化;
choose->supervised->attribute->Discretize.
choose離散化後結果:
離散化
(3)若還是灰色,就是缺失值問題,ID3演算法也要求不能有缺失值!
choose->unsupervised->attribute->ReplaceMissingValues
這裡寫圖片描述
2)這時選擇分類時,ID3演算法已經可以點選了,選擇ID3演算法,選擇交叉驗證或者使用自己的測試集,點選start,可得到決策樹及準確率結果。
這裡寫圖片描述
3.3 使用C4.5演算法
C4.5即J48一樣,選擇J48,可以點選choose右邊的J48,彈出的框可設定置信因子及其他引數,然後點選start,可得到決策樹及結果。
這裡寫圖片描述
3.4 ID3和C4.5的比較
1、 在得到結果的左下角可看到每次實驗結果,ID3沒有視覺化的樹,但是C4.5可生成視覺化樹(右擊選擇Visualize tree)。原因好像是C4.5中封裝了這個功能,ID3沒有裡邊的方法沒有實現,可利用程式碼實現。
2、C4.5比ID3演算法準確率更高,選擇該演算法更好。
4.總結
C4.5比ID3演算法準確率更高,資料預處理也有一定的關係,當資料處理的足夠好時,可能ID3演算法比C4.5準確率高。

本實驗只是熟悉weka用法及入門級知識,以分類實驗為例,過程中資料處理粗糙可先不用深究,有任何錯誤及good idea感謝留言。