【问题标题】:CrossValidation in Accord.NETAccord.NET 中的交叉验证
【发布时间】:2016-03-23 23:42:53
【问题描述】:

假设我们使用 10 折启动交叉验证来训练支持向量机,根据理论,每个折都将使用不同的模型,并且基于最小的交叉验证错误,我们将选择该模型,现在根据 Accord.NET这是我们用来实现交叉验证的框架:

var crossvalidation = new CrossValidation(size: data.Length, folds: 3);


crossvalidation.Fitting = delegate(int k, int[] indicesTrain, int[] indicesValidation)
{

// Lets now grab the training data:
var trainingInputs = data.Submatrix(indicesTrain);
var trainingOutputs = xor.Submatrix(indicesTrain);

// And now the validation data:
var validationInputs = data.Submatrix(indicesValidation);
var validationOutputs = xor.Submatrix(indicesValidation);


// Create a Kernel Support Vector Machine to operate on the set
var svm = new KernelSupportVectorMachine(new Polynomial(2), 2);

// Create a training algorithm and learn the training data
var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs);

double trainingError = smo.Run();

// Now we can compute the validation error on the validation data:
double validationError = smo.ComputeError(validationInputs, validationOutputs);

// Return a new information structure containing the model and the errors achieved.
return new CrossValidationValues(svm, trainingError, validationError);
};

然后我们计算:

// Compute the cross-validation
var result = crossvalidation.Compute();

现在如何从这些折叠中提取最佳模型,或者如果不是前面提到的,框架的工作逻辑是什么?

【问题讨论】:

  • 我认为这里有点混乱。交叉验证可用于确定与模型一起使用的最佳超参数,但绝不应挑选交叉验证中误差最小的模型成为您的“最佳”模型。
  • 换句话说,使用交叉验证的正确方法是使用它来识别最佳超参数,然后您应该使用所有可用数据创建一个新模型使用这些超参数并将这个模型作为你迄今为止的“最佳”模型。
  • 我知道这个问题被问到已经好几年了......但是你会从交叉验证中提取哪些超参数来训练 SVM?

标签: c# accord.net


【解决方案1】:

我开始以其他方式考虑这个问题,可能这是一个很好的答案候选,由于缺乏适当的文档,不像 encog 等。可能我们应该自己选择我们的模型然后使用每个选定的模型对其运行交叉验证,然后可以使用平均值来选择合适的模型。

【讨论】:

【解决方案2】:

你可以对结果执行以下操作:

var minError = result.Models.Select(y=>y.ValidationValue).Min();
var bestModel = result.Models.Where(x=>x.ValidationValue==minError).FirstOrDefault()

首先找出错误最小的模型,然后选择产生此错误的模型。

【讨论】:

  • 虽然这确实可以用来选择误差最小的模型,但这个模型应该被用作迄今为止的“最佳”模型。在交叉验证期间估计的内部模型除了用于估计由特定超参数选择产生的误差外,不应有任何用途。
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 2018-03-09
  • 2018-06-13
  • 2012-01-13
  • 2014-08-19
  • 2015-05-13
  • 2015-05-27
  • 2011-07-09
相关资源
最近更新 更多