我是图像分类的新手,目前正在研究通过multisvm函数对四组图像进行分类的SVM(支持向量机)方法,我的算法每次训练和测试数据都是随机选择的,每次性能都不同。有人建议进行交叉验证,我不明白为什么我们需要交叉验证,这样做的主要目的是什么?. 我的实际数据集包括训练矩阵大小28×40000
和测试矩阵大小17×40000
。如何通过此数据集进行交叉验证对我有帮助。提前致谢 。
问问题
792 次
3 回答
2
交叉验证用于选择您的模型。可以根据您的验证错误估计样本外错误。因此,您希望选择验证错误最少的模型。在这里,模型指的是您想要使用的功能,更重要的是,您的 SVM 中的gamma
和。C
交叉验证后,您将使用选定的gamma
且C
平均验证误差最小的来训练整个训练数据。
您可能还需要估计特征和参数的性能,以避免高偏差和高方差。可以从样本内错误和验证错误中观察您的模型是否存在欠拟合或过拟合。
理想情况下,10-fold通常用于交叉验证。
于 2013-12-12T22:41:17.010 回答
1
您总是需要交叉验证您的实验,以确保采用正确的科学方法。例如,如果您不进行交叉验证,那么您读取的结果(例如准确性)可能会因您的测试集而存在很大偏差。在极端情况下,您的训练步骤可能非常弱(就拟合数据而言),而您的测试步骤可能非常好。这适用于所有机器学习和优化实验,而不仅仅是 SVM。为了避免此类问题,只需将您的初始数据集分成两部分(例如),然后在第一组中训练并在第二组中进行测试,然后反向重复该过程,在第二组中进行训练并在第一组中进行测试。这将保证您可以看到对数据的任何偏差。正如有人建议的那样,您可以通过更进一步的划分来执行此操作:10 倍交叉验证,
于 2013-12-14T17:26:27.333 回答