我使用Weka已经有一段时间了,在我对它的研究中,我发现很多代码示例都使用了测试和训练集。例如,对于离散化和贝叶斯网络,它们的示例几乎总是使用测试和训练集显示的。我可能在这里错过了对数据处理的一些基本理解,但我不明白为什么总是这样。我在一个项目中使用离散化和贝叶斯网络,对于这两个项目,我都没有使用测试或训练集,也不明白为什么我需要这样做。我正在对BayesNet执行交叉验证,所以我正在测试它的准确性。我是否误解了测试和训练集的用途?哦,请使用最简单的术语;我在数据处理领域仍然不是很有经验。
发布于 2013-01-21 07:16:52
训练和测试集背后的想法是测试泛化误差。也就是说,如果你只使用了一个数据集,你可以通过简单地学习这个数据集来达到完美的准确性(这就是最近邻分类器所做的,在Weka中是IBk )。但是,一般来说,这并不是您想要的--机器学习算法应该学习您给出的示例数据背后的一般概念。测试这种情况是否发生的一种方法是使用单独的数据进行训练和测试。
如果使用交叉验证,则使用单独的训练集和测试集。这只是一种将整个数据集划分为训练和测试的方法。例如,如果进行10折交叉验证,则将整个数据划分为10个大小相等的集合。其中九个组合并用于训练,其余一个用于测试。然后重复这个过程,将9个不同的集合组合起来进行训练,依此类推,直到所有10个单独的分区都将用于测试。
因此,训练/测试集和交叉验证在概念上是做同样的事情,交叉验证只是采取了一种更严格的方法,对整个数据集进行平均。
发布于 2013-01-22 16:07:44
训练数据是指用于“构建模型”的数据。例如,如果您使用算法J48 (树分类器)对实例进行分类,则训练数据将用于生成树,该树将表示应该是概念的泛化的“学习概念”。这意味着学习的规则、生成的树、调整后的神经网络或其他任何东西将能够获得新的(看不见的)实例并正确地对它们进行分类(“学习的概念”不依赖于训练数据)。
测试集是将用于测试模型是否正确地学习了概念的数据的百分比(它独立于训练数据)。
在WEKA中,您可以运行将数据集分割为训练数据(在J48的情况下构建树)和测试数据(测试模型,以确定概念是否已被学习)的执行。例如,您可以将60%的数据用于训练,40%用于测试(确定训练和测试需要多少数据是数据挖掘的关键问题之一)。
但我建议您快速查看交叉验证,这是一种在WEKA中实现的健壮的测试方法。这里已经很好地解释过了:https://stackoverflow.com/a/10539247/1565171
如果你有更多的问题,请留言。
https://stackoverflow.com/questions/14430051
复制相似问题