Machine learning Weka中级联分类器的错误方法
我有一个包含两个类的数据集,并试图使用Weka获得最佳分类器。我能得到的最佳分类器的准确率约为79%。然后我尝试将属性添加到数据中,方法是对数据进行分类,并将该分类生成的概率分布保存在数据本身中。 当我在修改后的数据上重新运行训练过程时,我获得了93%以上的准确率!!我肯定这是错的,但我不知道为什么。 以下是我所经历的确切步骤:Machine learning Weka中级联分类器的错误方法,machine-learning,classification,weka,Machine Learning,Classification,Weka,我有一个包含两个类的数据集,并试图使用Weka获得最佳分类器。我能得到的最佳分类器的准确率约为79%。然后我尝试将属性添加到数据中,方法是对数据进行分类,并将该分类生成的概率分布保存在数据本身中。 当我在修改后的数据上重新运行训练过程时,我获得了93%以上的准确率!!我肯定这是错的,但我不知道为什么。 以下是我所经历的确切步骤: 在Weka中打开数据 单击添加过滤器并从Supervised->attribute中选择AddClassification 选择一个分类器。我选择带有默认设置的J48
Supervised->attribute
中选择AddClassification
J48
输出分布设置为true
distribution\u yourFirstClassName
和distribution\u yourSecondClassName
J48
李>
FilteredClassifier
复制同样的效果,但没有成功。
谢谢。您所执行的过程似乎有点接近叠加集成方法,即使用分类器输出生成集成输出(更多信息) 然而,在您的例子中,属性和先前训练的分类器输出用于预测您的类。第二个J48模型的大多数规则很可能基于第一个(因为类输出与J48的相关性比其他属性更强),但需要进行一些微调以提高模型精度。在这种情况下,使用“两个头比一个头好”的概念来提高模型的整体性能 但这并不是说一切都好。如果您需要将J48用于看不见的数据,那么您将无法使用用于属性的J48(除非您以前保存了它)。此外,与单个J48相比,您使用多个分类器增加了更多的处理工作。这些成本也需要针对您正在解决的问题进行考虑
希望这有帮助 好的,下面是我如何进行级联学习的:
在此设置中,您消除了在测试数据之前查看数据的偏差。此外,建议A1和A2应不同。我不确定这种方法是否与堆叠类似。在堆叠过程中(据我所知有限),你训练几个分类器,然后训练一个元分类器在第一个分类器的结果之间进行“选择”。在我的例子中,第一个分类器生成的分布保存在数据中,然后第二个分类器将运行。这意味着第二个分类器不仅基于先前的结果,而且基于前一阶段所有结果的“分布”。如果这就像叠加一样,我应该得到同样的结果,如果我叠加两个J48。我试过了,但没有得到相同的结果。完全正确,ABT。我描述了它的相似性,即有一个一级分类器,然后有一个二级分类器,除了属性之外还获取第一个输出。它不会产生与使用堆叠方法的两个分类器相同的结果。我在一个标准数据集上试用了你提出的方法,准确率从72%提高到91%,因此该方法肯定会改善结果,但数据需要通过两个分类器来获得结果,而不是一个。有趣的方法。自从我提出这个问题以来,我就发现自从第一个分类器“看到”了整个数据之后,我基本上是在测试我的训练集,即使它使用了一个新的分类器。所以现在的问题可能是:它起作用了吗?准确度的“提升”有多大意义?最后一点:你如何使用这种方法预测未标记的数据?是的,我得到了统计上显著的提升。进行了t检验以确认这一点(尽管即使未进行试验也可以看到增压)。由于10倍CV结果令人满意,我会遵循经验法则:我会将D1_new和D10_new放在一起创建一个D_new,用A2训练分类器,并将其应用于完全看不见的测试数据集。我可以补充一点:在我的研究中,我发现当我在10倍CV设置的数据集上单独应用A1和A2时,A1对阳性类的分类很好,A2对阴性类的分类很好。也许这就是为什么