2013-01-20 95 views
2

我已经和Weka一起工作了一段时间,在我的研究中,我发现很多代码示例都使用测试和训练集。例如,使用离散化和贝叶斯网络,他们的例子几乎总是用测试和训练集显示。我可能在这里错过了对数据处理的一些基本理解,但我不明白为什么这似乎总是如此。我在一个项目中使用离散化和贝叶斯网络,对于他们两个,我没有使用测试或训练集,也没有看到为什么我需要。我在BayesNet上进行交叉验证,所以我正在测试它的准确性。我误解了什么测试和训练集用于?哦,请使用最简单的术语;我对数据处理世界还不是很有经验。何时使用Weka的测试和训练集?

回答

5

培训和测试集背后的想法是测试概括性错误。也就是说,如果只使用一个数据集,只需简单地学习这个集合就可以达到完美的精确度(这是最近邻分类器所做的,Weka中的IBk)。一般而言,这不是您想要的 - 机器学习算法应该学习您给出的示例数据背后的一般概念。测试这种情况的一种方式是使用单独的数据进行培训和测试。

如果您使用的是交叉验证,那么您正在使用单独的培训和测试集。这只是将整个数据集划分为训练和测试的一种方式。例如,如果您进行10次交叉验证,则您的整个数据将被划分为10组大小相等的数据。其中9个被组合并用于训练,剩下的一个用于测试。然后重复这个过程,并结合九个不同的训练集合等等,直到所有十个单独的分区都将被用于测试。

因此,训练/测试集和交叉验证在概念上是做同样的事情,交叉验证通过对整个数据集进行平均来简单地采取更严格的方法。

+0

相当古老的问题,但有关于此问题。因此,如果我有培训,开发和测试集,WEKA的发展角色是什么?我如何在WEKA中使用我的开发集? – KillBill

+0

不确定你的意思是“开发集”。你通常会有训练,测试和验证集。 –

1

培训数据是指用于“构建模型”的数据。例如,它使用算法J48(树分类器)对实例进行分类,训练数据将用于生成代表“学习概念”的树,该概念应该是概念的概括。这意味着学习规则,生成树,调整后的神经网络,或其他任何;将能够获得新的(看不见的)实例并将其正确分类(“学习概念”不依赖于培训数据)。

测试集是将用于测试模型是否正确学习概念(它独立于训练数据)的数据的百分比。

在WEKA中,您可以执行将数据集分解为trainig数据(在J48的情况下构建树)和测试数据(测试模型以确定概念已被学习)的执行。例如,您可以将60%的数据用于培训,40%用于测试(确定需要多少数据进行培训和测试是数据挖掘的关键问题之一)。

但我建议您快速查看交叉验证,这是一种在WEKA中实施的稳健测试方法。这里已经很好地解释了: https://stackoverflow.com/a/10539247/1565171

如果您还有其他问题,请发表评论。

相关问题