:::

Weka決策樹分類法使用教學 / Weka J48 Decision Tree Classification Tutorial

image

決策樹是資料探勘(data mining) 分類 (classifition)中的代表性演算法。它是一種監督式演算法,一般是用於預測、建立模型上。它可以協助我們將多維度的大量資料分析成為一些簡單易懂的規則。舉例來說,我們要如何判斷一個職缺好不好呢?我們可以從合約期間、薪資、工時、休假等候選屬性來判斷。決策樹可以幫你分析出第一年薪資會是判斷工作好壞的重要屬性,其次是法定假日。

這兒先不談決策樹背後複雜的演算法,我們可以直接使用開放原始碼的Weka就能簡單地建置一顆決策樹。這篇就是教大家如何使用Weka來建置決策樹的操作教學。



如何取得Weka? / How to get Weka?

關於Weka的介紹我在之前的「Weka的BayesNet分類器操作說明」已有說明,在此就不再重複介紹。

輸入資料 / Data for Mining

image

本教學使用的是Weka提供的範例資料 labor.arff,這是加拿大工業的勞工職缺資料,從至少500多人的資料中整理各種職缺的屬性資訊,以及這份職缺到底是可接受或不可接受的訓練樣本。

這份資料包含了16種屬性:

  • duration: 合約期間,1~7,數值變數。
  • wage-increase-first-year: 首年增加的工資,2.0~7.0,數值變數。
  • wage-increase-second-year: 第二年增加的工資,2.0~7.0,數值變數。
  • wage-increase-third-year: 第三年增加的工資,2.0~7.0,數值變數。
  • cost-of-living-adjustment: 生活津貼調整,沒有/tcf/tc (我不確定這是什麼意思),名義變數。
  • working-hours: 每週工作時數,35~40,數值變數。
  • pension,退休金規劃,沒有/ret_allw/老闆提供,名義變數。
  • stand by-pay: 待命薪資,2~25,數值變數。
  • shift-differential: 工作從II轉換到III的補助 (不確定),1~25,數值變數。
  • education-allowance: 教育津貼,有/沒有,名義變數。
  • statutory-holidays: 法定假日,9~15,數值變數。
  • vacation: 帶薪休假的天數,ba/avg(平均)/gnr,名義變數。
  • longterm-disability-assistance: 僱主對長期工作失能的補助,有/無,名義變數。
  • contribution-to-dental-plan: 僱主提供的牙醫就診補助,沒有/一半/全額,名義變數。
  • bereavement-assistance: 僱主對於喪親的補助,有/無,名義變數。
  • contribution-to-health-plan: 僱主補助員工健康的規劃,無/一半/全額,名義變數。

以及訓練樣本屬性:

  • class:可接受或不可接受 [名義變數]

資料格式 / Data Format

image

這份資料是以Weka的ARFF格式撰寫。這是一種Weka使用的純文字檔案格式,詳細可以看「Data Mining 學習路 - Day 7 資料處理第一步:(3)準備輸入檔案 ARFF」的說明。

es_231_libreoffice_calc85

Weka也可以使用預處理器將CSV格式轉換成ARFF。因此我們可以使用LibreOffice Calc來將資料儲存成CSV格式,再來匯入到Weka計算。作法請見LibreOffice Calc的說明


建置決策樹的步驟 / Building Decision Tree Steps

安裝好Weka,有了資料之後,我們就可以來正式建置決策樹啦。

1. 開啟Weka / Open Weka GUI Chooser

image

請開啟安裝好的Weka。

2. 開啟Weka Explorer / Open Weka Explorer

image

選擇Explorer開啟。

3. 開啟檔案 / Open File

image

在Preproccess裡面點選「Open file…」,選擇準備好的檔案,例如labor.arff。

4. 切換到分類法頁籤 / Switch to Classify

image

確定資料正常載入之後,從上面的頁籤切換到「Classify」(分類法)裡面。

5. 選擇分類法 / Choose Classifier

image

在Classification底下按下「Choose」。

image

切換到「trees」資料夾,點選「J48」。

6. 選擇訓練樣本屬性 / Choose Training Tuples of Data

這一步要選擇一個屬性作為訓練決策樹的依據。這一步不一定要做,因為預設值它就幫我們選好了最後一個屬性。

image

如果你的資料中訓練決策樹的依據不是最後一個屬性,那就依照上圖手動選擇屬性吧。

7. 建立決策樹 / Creating Decision Tree

image

接著按下上圖 (A) 的「Start」。然後右邊Classifier output會顯示建置的數值。其中上圖(B)的「Correctly Classified Instances」表示這顆決策樹的正確率為73.6842%。(附帶一題,這個正確率在分類演算法中並不算高。)

8. 顯示決策樹 / Visualize Tree

image

接著在左邊的Result list中剛剛建置的結果上按滑鼠右鍵,選擇「Visualize tree」。

image

決策樹建置結果就出來了。

從這張圖中我們可以得知首年增加的薪資法定休假是重要的分類依據,整理的規則如下:

  • 首年增加的薪資在2.5以下的話,則是不好的工作
  • 首年增加的薪資大於2.5的話,則繼續看下列規則:
    • 法定休假在10以下的話,則是不好的工作
    • 法定休假在大於10的話,則是好的工作。

 

這樣就建置完成一顆決策樹了!

總共50 則留言 ( 我要發問 , 隱藏留言 顯示留言 )

  1. 回覆刪除
  2. 回覆刪除
    回覆
    1. 回覆刪除
    2. 回覆刪除
    3. 回覆刪除
  3. 回覆刪除
    回覆
    1. 回覆刪除
    2. 回覆刪除
    3. 回覆刪除
  4. 回覆刪除
    回覆
    1. 回覆刪除
    2. 回覆刪除
    3. 回覆刪除
  5. 回覆刪除
    回覆
    1. 回覆刪除
  6. 回覆刪除
    回覆
    1. 回覆刪除
  7. 回覆刪除
    回覆
    1. 回覆刪除
  8. 回覆刪除
    回覆
    1. 回覆刪除
  9. 回覆刪除
    回覆
    1. 回覆刪除
  10. 回覆刪除
    回覆
    1. 回覆刪除
  11. 回覆刪除
    回覆
    1. 回覆刪除
  12. 回覆刪除
    回覆
    1. 回覆刪除
  13. 回覆刪除
    回覆
    1. 回覆刪除
    2. 回覆刪除
    3. 回覆刪除
  14. 回覆刪除
  15. 回覆刪除
    回覆
    1. 回覆刪除
  16. 回覆刪除
    回覆
    1. 回覆刪除
  17. 回覆刪除
    回覆
    1. 回覆刪除
    2. 回覆刪除
  18. 回覆刪除
  19. 回覆刪除
    回覆
    1. 回覆刪除