我总是从我读的是交叉验证这样执行心想:
在k折交叉验证,在原始样品被随机地划分成k个子样本。 第k子样品,单个子样本被保留作为用于测试模型的验证数据,并且剩余的k - 1子样品被用作训练数据。 然后将交叉验证过程被重复k次(褶皱),每个用于恰好一次作为验证数据第k子样品。 从折叠k个结果然后可以被平均(或以其它方式组合),以产生一个单一的估计
因此,K型模型是建立和最后一个就是其中的平均值。 在Weka的指导写在每个模型使用所有数据集总是建筑。 那么,如何在Weka的交叉验证工作? 是从所有数据和“交叉验证”所建立的模型意味着k重创建然后每个折叠在其上被评估并且最终输出结果是简单地从折叠的平均结果?
所以,这里是这种情况下再次:你有100点标签的数据
使用训练集
- WEKA将100个标记的数据
- 它使用了一种算法来构建这些100个数据的分类
- 再次应用于的分类器对这些100个数据
- 它提供了该分类器的性能(施加到从它被开发的相同的100个数据)
用10倍CV
WEKA需要100个标记的数据
它产生10个相同大小的集。 每一组被分为两组:90个标记数据用于训练和10个标记的数据被用于测试。
它产生一个分类器90个从标签数据的算法,并应用对组1的10个检测数据。
它为2组同样的事情到10和9个产生多个分类
它平均从10大小相等的(90训练和10测试)组中产生的10个分类器的性能
让我知道这是否回答你的问题。
我会回答的评论,但我的名誉仍不允许我:
除了Rushdi的接受的答案,我想强调的是其对交叉验证创建的模型折叠集的性能测试已经进行了,平均毕竟丢弃。
由此产生的模型总是基于完整的训练集,不管你的测试选项。 由于MTA问的更新到引用的环节,那就是: http://list.waikato.ac.nz/pipermail/wekalist/2009-December/046633.html 。 这是从WEKA维护者之一的答案,指出正是我写的。
我想我想通了。 采取(例如) weka.classifiers.rules.OneR -x 10 -d outmodel.xxx
。 这做了两两件事:
- 它创建基于完整数据集的模型。 这是写入模式
outmodel.xxx
。 该模型不被用作交叉验证的一部分。 - 然后交叉验证运行。 交叉验证涉及(在这种情况下)创建与所述训练10分新的模式和如已经描述的对数据的分段测试。 关键是在交叉验证所使用的模型是暂时的,并只用于生成统计数据。 它们不等同于,或用于被提供给用户的模式。
Weka的跟着你在这里提到的传统的k-折交叉验证。 你有完整的数据集,然后将其划分为K值等于集(K1,K2,...,K10例如用于10倍CV)不重叠的。 然后,在第一次运行时,采取K1至K9作为训练集,建立一个模型。 使用上K10该模型得到的性能。 接下来是K1至K8和K10作为训练集。 从开发他们的模型,并运用它来K9来获得性能。 以这种方式,使用所有其中每个折叠至多1时间被用作测试集的褶皱。
然后Weka的平均性能并提出了在输出窗格。
一旦我们通过将数据在10段做了10交叉验证和创建决策树和评估,有什么做的Weka运行的算法第十一时间对整个数据集。 那么这将产生我们在实践中可能部署一个分类。 我们用10倍交叉验证,以获得对错误的评估结果和估计,最后我们做一个分类更多的时间来得到一个实际的分类在实践中使用。 在第k个交叉验证,我们将拥有不同的决策树,但最后一个是在整个数据集创建。 CV来看看我们是否有过学习或很大的差异问题。