10倍交叉验证

Nic*_*ool 11 algorithm machine-learning

在k fold中我们有:你将数据分成(大约)相等大小的k个子集.你训练净k次,每次从训练中省略一个子集,但只使用省略的子集来计算你感兴趣的任何误差标准.如果k等于样本大小,则称为"留一出"交叉验证."Leave-v-out"是一种更复杂,更昂贵的交叉验证版本,涉及遗漏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  
Run Code Online (Sandbox Code Playgroud)

Kir*_*ril 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.
Run Code Online (Sandbox Code Playgroud)


Spe*_*ine 15

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

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

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

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

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

  • "最精确的分类模型是选中的".我在这里不同意.k-fold方法的目的是通过计算所有k个分区上的平均性能(精度等)来测试模型的性能而不偏离数据集分区.如果您选择最佳分区,则完全偏向于您的优势,如果您正在撰写科学论文(例如......),您的同行不应该因此而接受该论文. (4认同)