find optimal hyperparameters in SVM

6 次查看(过去 30 天)
Hello
I'm trying to optimize a SVM model for my training data then predict the labels of new data with it. Also I must find SVM with best hyperparameter by using k-fold crossvalidation. TO do so I wrote the following code:
Mdl = fitcsvm(trainingData,labels,'OptimizeHyperparameters','auto',...
'HyperparameterOptimizationOptions',struct('Optimizer','gridsearch','AcquisitionFunctionName',...
'expected-improvement-per-second','MaxObjectiveEvaluation',10,'ShowPlots',false,'Verbose',0));
label = predict(Mdl,testData);
the problem is every time I ran this code and calculated the classification accuracy for test data I got different classification accuracy.
I should mention that when I train SVM without optimizing hyperparameters results are alaways the same. Is this mean every time I have diffierent hyperparameters? How can I solve this and obtain unique classification accuracy?

采纳的回答

Alan Weiss
Alan Weiss 2020-11-2
Read what the bayesopt documentation has to say about your chosen acquisition function: "Acquisition functions whose names include per-second do not yield reproducible results because the optimization depends on the runtime of the objective function. " In other words, choose the 'expected-improvement-plus' or 'expected-improvement' acquisition function for reproducibility.
Alan Weiss
MATLAB mathematical toolbox documentation
  3 个评论
Alan Weiss
Alan Weiss 2020-11-2
The other possibility is to reset the random number stream before each optimization:
rng default % Or any seed you like
Alan Weiss
MATLAB mathematical toolbox documentation

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Problem-Based Optimization Setup 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by