【问题标题】:What is the effect of using filtered classifier over normal classifier in weka在weka中使用过滤分类器对普通分类器有什么影响
【发布时间】:2015-01-05 14:45:08
【问题描述】:
我使用 weka 进行文本分类。首先,我使用 StringToWordVector 过滤器,过滤后的数据与 SVM 分类器 (LibSVM) 一起用于交叉验证。后来看了一篇博文here
上面说不适合先用filter再进行交叉验证。相反,它建议使用 FilteredClassifer。他的理由是
两周前,我写了一篇关于如何在 WEKA 中链接过滤器和分类器的帖子,以避免在对文本集合进行实验时产生误导性结果。问题是,在您的数据中使用 N 折交叉验证 (CV) 时,您不应该对完整的数据集合应用 StringToWordVector (STWV) 过滤器,然后对您的数据执行 CV 评估,因为您将使用每次运行都存在于您的测试子集中(但不在您的训练子集中)。
我无法理解这背后的原因。有人知道吗?
【问题讨论】:
标签:
weka
document-classification
【解决方案1】:
当您在 N 折交叉验证之前使用过滤器时,您将过滤每个实例中出现的每个单词,尽管它是测试实例或训练实例。目前,Filter 无法知道一个实例是测试实例还是训练实例。因此,如果您将 StringtoWordVector 与 TFTransform 或任何类似操作一起使用,则测试实例中的任何单词都可能影响转换值。 (简单地说,如果你正在实现词袋,那么你也会考虑测试实例)。这是不可接受的,因为训练参数不应受到测试数据的影响。因此,您可以在运行时进行过滤。那就是 FilteredClassifer。
要了解 N 折交叉验证的工作原理,请参阅 Rushdi Shams 在以下问题中的回答。请让我知道您是否理解。干杯..!!
Cross Validation in Weka