我有一个包含两个类的数据集,并试图使用Weka获得最佳分类器。我能获得的最佳分类器的准确率约为79%。然后我尝试通过对数据进行分类并在数据本身中保存此分类生成的概率分布,为数据添加属性。 当我重新修改数据的培训过程时,我的准确率超过了93%!我确定这是错的,但我无法弄清楚原因。 这些是我经历的确切步骤:
AddClassification
。Supervised->attribute
J48
默认设置。Output Distribution
设置为true。distribution_yourFirstClassName
和distribution_yourSecondClassName
。J48
。 这是创建分类器的有效方法吗?我没有"作弊"通过在原始数据中添加分类信息?如果它是有效的,那么如何继续创建可以预测未标记数据的分类器?如何添加附加属性(分发)?
我确实尝试使用FilteredClassifier
复制相同的效果,但它没有效果。
感谢。
答案 0 :(得分:1)
您似乎已经进行的过程似乎与Stacking集合方法有些接近,其中分类器输出用于生成集合输出(更多关于here)。
但是,在您的情况下,属性和先前训练的分类器输出正用于预测您的课程。大多数第二个J48模型的规则很可能都是基于第一个(因为类输出将与J48相比更强烈地与其他属性相关联),但需要进行一些微调以提高模型精度。在这种情况下,两个头的概念优于一个'用于改善模型的整体性能。
但并不是说这一切都很好。如果您需要将J48与未看到的数据一起使用,那么您将无法使用与属性相同的J48(除非您之前保存过它)。此外,通过使用多个分类器而不是单个J48,您将添加更多处理工作。还需要考虑这些成本来解决您正在解决的问题。
希望这有帮助!
答案 1 :(得分:1)
好的,这是我进行级联学习的方式:
在此设置中,您在测试之前消除了查看数据的偏见。另外,建议A1和A2应该不同。