我已经和Weka合作了一段时间,在我的研究中,我发现很多代码示例都使用了测试和训练集。例如,通过Discretization和Bayesian Networks,他们的示例几乎总是使用测试和训练集来显示。我可能在这里缺少对数据处理的一些基本理解,但我不明白为什么这似乎总是如此。我在一个项目中使用Discretization和Bayesian Networks,对于他们两个,我没有使用测试或训练集,也不明白为什么我需要。我正在BayesNet上进行交叉验证,所以我正在测试它的准确性。我误解了测试和训练集用于什么?哦,请使用最简单的术语;我对数据处理的世界还不是很有经验。
答案 0 :(得分:5)
培训和测试集背后的想法是测试泛化错误。也就是说,如果你只使用一个数据集,你可以通过简单地学习这个集合来实现完美的准确性(这是最近邻分类器所做的,Weka中的IBk
)。一般来说,这不是你想要的 - 机器学习算法应该学习你给它的示例数据背后的一般概念。测试是否发生这种情况的一种方法是使用单独的数据进行培训和测试。
如果您正在使用交叉验证,那么您将使用单独的培训和测试集。这只是一种将整个数据集划分为训练和测试的方法。例如,如果您进行10倍交叉验证,则整个数据将被划分为10组相同大小的数据。其中9个被组合并用于训练,剩下的一个用于测试。然后重复该过程,结合九个不同的集合进行培训,依此类推,直到所有十个单独的分区都用于测试。
因此,培训/测试集和交叉验证在概念上做同样的事情,交叉验证只是通过对整个数据集进行平均而采用更严格的方法。
答案 1 :(得分:1)
训练数据是指用于“构建模型”的数据。 例如,您使用算法J48(树分类器)对实例进行分类,训练数据将用于生成表示“学习概念”的树,该概念应该是概念的概括。它意味着学习规则,生成树,调整后的神经网络等等;将能够获得新的(看不见的)实例并正确地对它们进行分类(“学习概念”不依赖于训练数据)。
测试集是用于测试模型是否已正确学习概念的数据的百分比(它与训练数据无关)。
在WEKA中,您可以运行执行将数据集拆分为trainig数据(在J48的情况下构建树)和测试数据(以测试模型以确定已经学习了概念)。例如,您可以将60%的数据用于培训,40%用于测试(确定培训和测试所需的数据量是数据挖掘的关键问题之一)。
但我建议您快速查看交叉验证,这是一种在WEKA中实施的强大测试方法。这里已经解释得很好: https://stackoverflow.com/a/10539247/1565171
如果您有更多问题,请发表评论。