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?
0 个评论
采纳的回答
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
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 Center 和 File Exchange 中查找有关 Problem-Based Optimization Setup 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!