3

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

一种明显的方法是遍历所有特征,一次删除一个,然后每次重新运行分类测试,看看哪个特征的分类准确率下降幅度最大。但是,这可能会隐藏功能之间的相互依赖关系。

但是,我正在考虑基于理解 C4.5 算法的另一种方法。由于树中的每个拆分都基于最大信息增益决策,因此在更接近树根的特征上进行拆分必须意味着该特征比在树中具有不同特征的拆分具有更多的信息增益。因此,对于在树内多次分裂中出现的给定特征 F,我可以计算 F 到根的平均距离。然后我可以按平均距离对所有特征进行排名,最低的平均值是最有价值的特征。这是一个正确的方法吗?

4

2 回答 2

4

有点死灵帖子...但是这里有...

我假设您想知道属性重要性的原因是您可以仅使用相关属性来构建更好的树。

如果是这种情况,您始终可以使用元分类器“AttributeSelectedClassifier”,然后将 j48 作为分类器。

然后,您必须选择属性子集的评估器和搜索方法。例如,我目前正在试验“WrapperSubsetEval”评估器和“GeneticSearch”搜索算法。

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

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

这在计算上很昂贵,因为它必须构建和测试许多树,但它可以产生良好的结果(并且比尝试手动完成要快得多):)

于 2012-12-02T05:24:39.550 回答
2

您可以尝试“属性选择”选项卡。在那里,您可以执行 PCA 分析、CfsSubsetEval + BestFirst... 以确定哪些是最佳特征。

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

于 2012-09-04T13:57:02.473 回答