Этот пример показывает, как предсказать двойные ограничения оптимизированной модели SVM. Для получения дополнительной информации этой модели, смотрите, Оптимизируют перекрестный Подтвержденный Классификатор SVM Используя bayesopt.
Целевая функция является потерей перекрестной проверки модели SVM для раздела c
. Двойное ограничение является количеством векторов поддержки в модели минус 100. Модель имеет 200 точек данных, таким образом, двойной ограничительный диапазон значений от-100 до 100. Положительные значения означают, что ограничение не удовлетворено.
function [objective,constraint] = mysvmfun(x,cdata,grp,c)
SVMModel = fitcsvm(cdata,grp,'KernelFunction','rbf',...
'BoxConstraint',x.box,...
'KernelScale',x.sigma);
cvModel = crossval(SVMModel,'CVPartition',c);
objective = kfoldLoss(cvModel);
constraint = sum(SVMModel.IsSupportVector)-100.5;
Вызовите оптимизатор с помощью этой функции, и ее связал ограничение.
Ограничительный график модели показывает, что большинство параметров в области значений неосуществимо, и выполнимо только для относительно высоких значений параметра box
и маленькой области значений параметра sigma
. Предскажите двойные ограничительные значения для нескольких значений контрольных переменных box
и sigma
.
ans =
11x3 table
sigma box cons
________ ______ _______
0.01 1 99.539
0.025119 3.1623 106.74
0.063096 10 94.781
0.15849 31.623 25.242
0.39811 100 -38.79
1 316.23 -56.379
2.5119 1000 -34.247
6.3096 3162.3 4.9263
15.849 10000 39.193
39.811 31623 60.69
100 1e+05 71.82