首页 > 解决方案 > 如何在 matlab 中选择交叉验证中的最佳模型?

问题描述

我有两个数据集,我想fitcsvm通过其中一个训练一个 SVM 分类模型 ( ),然后预测另一个的标签。我使用 10 倍交叉验证 ( crossval) 来训练我的模型,所以我有 10 个不同的模型。我的问题是这些模型中的哪一个最适合预测,我怎样才能找到它?这是我的代码:

Mdl = fitcsvm(trainingData,labels);
CVMdl = crossval(Mdl);  

标签: matlabsvmcross-validation

解决方案


你可能在这里混淆了一些东西。该函数fitcsvm训练单个模型,并且该函数crossval验证该单个模型。然后它将返回一个评估值。

通常,您不能通过交叉验证来训练模型(正如它所说,这是一种验证技术)。但是,您可以使用交叉验证来训练好的模型。

您正在寻找的是一种超参数优化。这些方法可以在给定数据集上自动训练多个模型,以找到 SVM 的最佳调整值。看看这里的文档

你可以像这样打开它

Mdl = fitcsvm(trainingData,labels,'OptimizeHyperparameters','auto')

您可能想使用交叉验证来训练具有相同调整参数的多个模型,但我想,您必须自己编写。也许这已经对您有所帮助。


推荐阅读