2012-07-19 76 views
1

我使用Weka成功構建了J48(C4.5)決策樹。我現在想評估我的功能有多麼有效或重要。如何在Weka構建的決策樹中查找特徵重要性

一個顯而易見的方法是遍歷所有功能,一次刪除一個,並重新運行分類測試每次看到它配備了具有分類準確率的最大跌幅。但是,這可能會隱藏功能之間的相互依賴關係。

不過,我基於理解的C4.5算法思維的另一種方法。由於樹中的每個分割都基於最大信息增益決策,因此靠近樹根的特徵上的分割必定意味着該特徵比樹中具有較低特徵的分割具有更多的信息增益。因此,對於在樹內幾次分割中出現的給定特徵F,我可以計算出F距離根的平均距離。然後,我可以按平均距離排列所有特徵,最低的平均值是最有價值的特徵。這是否是一個正確的方法?

+0

平均距離根節點不會一個好的度量標準,因爲信息增益的量在樹中的各個層次上不是恆定的。最好總結與特定特徵對應的所有分支的信息增益,並將每個分支處的增益與分支處存在的採樣數加權。 – bogatron 2012-07-20 13:45:08

+0

Weka是否提供每個拆分信息獲取的數據?輸出文本文件不顯示它。 – stackoverflowuser2010 2012-07-20 17:36:36

+0

我不知道Weka是否明確存儲了信息增益,但如果知道每個節點處的觀察值/採樣數,則可以自己計算。我不知道默認樹形可視化是否讓您可以選擇查看每個節點上的樣本數量,但是有一個插件可顯示該信息:http://weka.wikispaces。com/Explorer + tree +可視化+插件 – bogatron 2012-07-23 18:11:16

回答

2

您可以嘗試「屬性選擇」選項卡。 在那裏,您可以執行PCA分析,CfsSubsetEval + BestFirst ...以確定哪些是最佳功能。

另一個(但手動)方法,是訓練和測試具有不同屬性的相同的算法和統計使用T-檢驗,以確定該改善是統計學顯著檢查結果。

+0

有沒有辦法在不離開Weka的情況下進行T檢驗? – Vladtn 2013-08-01 11:27:38

+0

@弗拉特恩:實驗者窗口旨在執行統計顯着性檢驗 – 2016-06-06 01:18:01

4

位一個死靈後的...但在這裏不用...

我假設你想知道屬性的重要性的原因,所以你可以只使用相關建設更美好的樹屬性。

如果是這樣的話,你總是可以使用元分類「AttributeSelectedClassifier」然後把J48作爲分類。

則必須選擇屬性的子集的評估和搜索方法。例如,我目前正在使用「WrapperSubsetEval」評估器和「GeneticSearch」搜索算法進行實驗。

對於包裝評估,你需要選擇一個分類器(它實際上會建立分類器,看它在搜索測試的每個屬性子集上的表現如何),在我的情況下,我使用j48(匹配它我想要使​​用屬性集的分類器)。

通過這些設置,就會演變屬性的子集(用遺傳算法),這與J48的算法效果很好,然後它會運行與設置演進屬性對數據的J48。

這是計算成本,因爲它必須建立和測試許多樹,但它可以提供良好的結果(然後試圖通過做手工快得多):)

相關問題