CV是用来验证分类器性能的一种统计分析方法,其基本思想是在某种意义下将原始数据进行分组,一部分作为测试集,另一部分作为验证集;先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以得到的分类准确率作为评价分类器的性能指标。常见的 CV 方法如下:
1.1 交叉验证(Cross Validation,CV)
伪代码:
Start bestAccuracy = 0; bestc = 0; bestg = 0; % 其中n1,n2都是预先给定的数 for c = 2^(-n1):2(n1) for g = 2^(-n2):2^(n2) 将训练集平均分成 N 部分,设为 train(1),train(2),···,train(N) 分别让每一个部分作为测试及进行预测(剩下的N-1部分作为训练集对训练集进行训练),取得最后 得到的所有分类准确率的平均数,设为 cv. if(cv > bestAccuracy) bestAccuracy = cv;bestc = c;bestg = g; end end end Over
采用CV的方法,在没有测试标签的情况下可以找到一定意义下的最佳参数c和g。这里所说的“一定意义下”指的是此时最佳参数c和g是使得训练集在CV思想下能够达到最高分类准确率的参数,但不能保证会使得测试集也达到最高的分类准确率。用此方法对wine数据进行分类预测,MATLAB 实现代码如下:
%% 交叉验证 bestcv = 0; bestc = 0; bestg = 0; for log2c = -5:5 for log2g = -5:5 cmd