`

交叉验证

 
阅读更多

交叉验证通常把数据分为训练机,验证集和测试集。主要分为以下三种:

 

1).Hold-Out Method

将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为此Hold-OutMethod下分类器的性能指标.此种方法的好处的处理简单,只需随机把原始数据分为两组即可,这种方法没有达到交叉的思想,随机的将原始数据分组,最后验证集分类准确率的高低与原始数据的分 组有很大的关系,所以这种方法得到的结果其实并不具有说服性.

 

2).K-fold Cross Validation

将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其 余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标.K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2.K-CV可以有效的避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性.

3).Leave-One-Out Cross Validation

 

如果设原始数据有N个样本,那么LOO-CV就是N-CV,即 每个样本单独作为验证集,其余的N-1个样本作为训 练集,所以LOO-CV会得到N个模型,用这N个模型最终 的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标.相比于前面两种有两个明显的优点:
a.每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠。
b.实验过程中没有随机因素会影响实验数据,确保实验过程是可以被复制的。


缺点则是计算成本高,因为需要建立的模型数量与原始数据样本数量相同,当原始数据样本数量相当时,LOO-CV在实作上便有困难几乎就是不显示,除非每次训练分类器得到模型的速度很快,或是可以用并行化计算减少计算所需的时间.

 


 

使用Cross-Validation时常犯的错误

许多研究都有用到evolutionary algorithms(EA)与classifiers,所使用的fitness function中通常都有用到classifier的辨识率,然而把cross-validation用错的案例还不少。前面说过,只有training data才可以用于model的建构,所以只有training data的辨识率才可以用在fitness function中。而EA是训练过程用来调整model最佳参数的方法,所以只有在EA结束演化后,model参数已经固定了,这时候才可以使用test data。

那EA跟cross-validation要如何搭配呢?CV的本质是用来estimate某个classification method对一组dataset的generalization error不是用来设计classifier的方法,所以cross-validation不能用在EA的fitness function中,因为与fitness function有关的样本都属于training set,那试问哪些样本才是test set呢?如果某个fitness function中用了cross-validation的training或test辨识率,那么这样的实验方法已经不能称为 cross-validation了。

EA与k-CV正确的搭配,是将dataset 分成k等份的subsets后,每次取1份subset作为test set,其余k-1份作为training set,并且将该组training set套用到EA的fitness function计算中(至于该training set如何进一步利用则没有限制)。因此,正确的k-CV 会进行共k次的EA演化,建立k个classifiers。而k-CV的test辨识率,则是k组test sets对应到EA训练所得的k个classifiers辨识率之平均值。

 

  • 大小: 56.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics