什么是交叉验证?它的应用有哪些?

交叉验证就是把一个样本集分割成若干等分,用其中一等分作为测试集其他等分作为训练集进行算法训练分析验证的的行为。如若分成K等分,则称作K折交叉验证。(K的数值的确定根据经验设定)

254007-1.png

如上图所示,一个数据集中有12个样本,进行3折交叉验证,每一等份4个样本,分别用不同的颜色来表示。以BP算法为例:

实验一:以等分一为测试集,等分二和三作为训练集

实验二:以等分二为测试集,等分一和三作为训练集

实验三:以等分三为测试集,等分一和二作为训练集

应用一:选择合适的训练集和测试集

以上面的3折交叉验证为例,每一次实验都会针对测试集计算出一个对应的误差参数,选择误差参数最小的那一组作为最终的训练集和测试集

应用二:作为评估算法参数的指标

以优化svm的参数c和g为例,在选定一组c和g时怎么评估这个参数的效果好不好呢,这个时候肯定是把样本数据带入svm做一下训练和测试,看一下测试的误差大小来评判。这个时候就犯难了,因为不知道选哪些作训练哪些作测试,如果随意选的话又怕因为选的不好导致最后的测试结果有一定的随意性。这个时候可以使用交叉验证,以上面的3折交叉验证为例,实验一计算出一组测试集误差,实验二计算出一组误差,依次类推每一次实验都会计算出对应的误差,把这些误差加起来取均值,作为最终判断c和g参数好坏的依据。这么做的好处就是能让每组样本都做过训练和测试,减少实验的偶然性






请前往:http://www.mark-to-win.com/TeacherV2.html?id=269