10倍交叉验证

时间:2011-10-01 10:42:08

标签: algorithm machine-learning

在K折中我们有这个: 你将数据分成k个子集 (大约)相同的大小。你每次离开都会训练净k次 从训练中取出一个子集,但只使用省略的子集 计算你感兴趣的错误标准。如果k等于样本 大小,这称为“留一法”交叉验证。 “离开 - 退出”是一个 更复杂,更昂贵的交叉验证版本 遗漏所有可能的v个子集。

术语培训和测试意味着什么?我无法理解。

请您告诉我一些参考资料,我可以用一个例子来学习这个算法吗?

Train classifier on folds: 2 3 4 5 6 7 8 9 10; Test against fold: 1
Train classifier on folds: 1 3 4 5 6 7 8 9 10; Test against fold: 2
Train classifier on folds: 1 2 4 5 6 7 8 9 10; Test against fold: 3
Train classifier on folds: 1 2 3 5 6 7 8 9 10; Test against fold: 4
Train classifier on folds: 1 2 3 4 6 7 8 9 10; Test against fold: 5
Train classifier on folds: 1 2 3 4 5 7 8 9 10; Test against fold: 6
Train classifier on folds: 1 2 3 4 5 6 8 9 10; Test against fold: 7
Train classifier on folds: 1 2 3 4 5 6 7 9 10; Test against fold: 8
Train classifier on folds: 1 2 3 4 5 6 7 8 10; Test against fold: 9
Train classifier on folds: 1 2 3 4 5 6 7 8 9;  Test against fold: 10  

2 个答案:

答案 0 :(得分:25)

简而言之: 培训是向算法提供反馈的过程,以便调整其产生的分类器的预测能力。

测试是确定算法产生的分类器的实际准确性的过程。在测试期间,分类器被给予从未见过的数据实例,以最终确认分类器的准确性与训练期间的准确性没有显着差异。

然而,您错过了中间的关键步骤:验证(这是您在10倍/ k倍交叉验证中所指的)。

验证(通常)在每个训练步骤之后执行,并且执行该验证以帮助确定分类器是否过度装配。验证步骤不会为算法提供任何反馈,以便调整分类器,但它有助于确定过度拟合是否正在发生,并在训练终止时发出信号。

以下列方式考虑该过程:

1. Train on the training data set.
2. Validate on the validation data set.
if(change in validation accuracy > 0)
   3. repeat step 1 and 2
else
   3. stop training
4. Test on the testing data set.

答案 1 :(得分:15)

在k-fold方法中,你必须将数据分成k个段,其中k-1用于训练,而一个被省略并用于测试。它完成了k次,第一次,第一段用于测试,剩下的用于训练,然后第二段用于测试,剩下的用于训练,等等。从你的10折的例子可以清楚地看出,它应该很简单,再读一遍。

现在关于培训是什么以及测试是什么:

分类训练是创建分类模型的部分,使用一些算法,用于创建训练模型的流行算法是ID3,C4.5等。

测试意味着通过在测试数据上运行模型来评估分类模型,然后创建混淆矩阵,然后计算模型的准确度和错误率。

在K-fold方法中,创建了k个模型(从上面的描述中可以清楚地看到),并且选择了最准确的分类模型。