如何在Weka构建的决策树中查找特征重要性

时间:2012-07-19 20:27:26

标签: machine-learning data-mining weka decision-tree

我使用Weka成功构建了一个J48(C4.5)决策树。我现在想评估一下我的功能是多么有效或重要。

一种显而易见的方法是遍历所有功能,一次删除一个功能,每次重新运行分类测试,以查看哪个功能的分类精度下降最大。但是,这可能会隐藏功能之间的共同依赖关系。

然而,我正在考虑另一种基于理解C4.5算法的方法。由于树中的每个分割都基于最大信息增益决策,因此对靠近树根的特征的分割必须意味着特征比具有树中较低特征的分割具有更多信息增益。因此,对于在树中的多个分裂中发生的给定特征F,我可以计算F远离根的平均距离。然后,我可以按平均距离对所有要素进行排名,最低平均值是最有价值的特征。这是一种正确的方法吗?

2 个答案:

答案 0 :(得分:4)

一个死灵帖子......但是这里......

我假设您想知道属性重要性的原因是,您只需使用相关属性即可构建更好的树。

如果是这种情况,您可以随时使用元分类器" AttributeSelectedClassifier"然后把j48作为分类器。

然后必须为属性子集和搜索方法选择评估程序。例如,我目前正在试验" WrapperSubsetEval"评估员和" GeneticSearch"搜索算法。

对于包装器评估,您需要选择一个分类器(它实际上会构建分类器以查看它在搜索测试的每个属性子集上的效果),在我的情况下我使用j48(匹配它)使用分类器我想使用设置的属性。

通过这些设置,它将演化一个属性的子集(使用遗传算法),它与j48算法配合良好,然后它将使用该演化属性集在您的数据上运行j48。

这是计算上昂贵的,因为它必须构建和测试许多树,但它可以提供良好的结果(并且比手动尝试快得多):)

答案 1 :(得分:2)

您可以尝试“属性选择”标签。 在那里,您可以执行PCA分析,CfsSubsetEval + BestFirst ...以确定哪些是最佳功能。

另一种(但是手动)方式是训练和测试具有不同属性的相同算法,并使用T检验统计检查结果,以确定改善是否具有统计显着性。