Main Content

predictConstraints

一連の点における連結制約違反の予測

説明

ConstraintViolations = predictConstraints(results,XTable) は、XTable 内の点における連結制約関数の違反を返します。

[ConstraintViolations,sigma] = predictConstraints(results,XTable) は、連結制約関数の標準偏差も返します。

すべて折りたたむ

この例では、最適化された SVM モデルの連結制約を予測する方法を示します。このモデルの詳細については、bayesopt を使用した交差検証分類器の最適化を参照してください。

rng default
grnpop = mvnrnd([1,0],eye(2),10);
redpop = mvnrnd([0,1],eye(2),10);
redpts = zeros(100,2);
grnpts = redpts;
for i = 1:100
    grnpts(i,:) = mvnrnd(grnpop(randi(10),:),eye(2)*0.02);
    redpts(i,:) = mvnrnd(redpop(randi(10),:),eye(2)*0.02);
end
cdata = [grnpts;redpts];
grp = ones(200,1);
grp(101:200) = -1;
c = cvpartition(200,'KFold',10);
sigma = optimizableVariable('sigma',[1e-5,1e5],'Transform','log');
box = optimizableVariable('box',[1e-5,1e5],'Transform','log');

目的関数は、分割 c における SVM モデルの交差検証損失です。連結制約は、モデル内のサポート ベクターの個数から 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;

この関数と 1 つの連結制約を使用してオプティマイザーを呼び出します。

fun = @(x)mysvmfun(x,cdata,grp,c);
results = bayesopt(fun,[sigma,box],'IsObjectiveDeterministic',true,...
    'NumCoupledConstraints',1,'PlotFcn',...
    {@plotMinObjective,@plotConstraintModels,@plotObjectiveModel},...
    'AcquisitionFunctionName','expected-improvement-plus','Verbose',0);

制約モデルのプロットは、範囲内にあるパラメーターはほとんどが実行不可能であり、比較的高い値の box パラメーターおよび狭い範囲の sigma パラメーターのみが実行可能であることを示しています。制御変数 box および sigma のいくつかの値について連結制約の値を予測します。

sigma = logspace(-2,2,11)';
box = logspace(0,5,11)';
XTable = table(sigma,box);
cons = predictConstraints(results,XTable);
[XTable,table(cons)]
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

入力引数

すべて折りたたむ

ベイズ最適化の結果。BayesianOptimization オブジェクトを指定します。

予測点。列数が D のテーブルを指定します。D は、問題に含まれている変数の個数です。これらの点で予測が実行されます。

データ型: table

出力引数

すべて折りたたむ

制約違反。NK 列の行列として返されます。NXTable の行数、K は連結制約の個数です。制約違反は、XTable 内の点における連結制約に対応するガウス過程モデルの事後平均です。

制約の標準偏差。NK 列の行列として返されます。NXTable の行数、K は連結制約の個数です。この標準偏差は、XTable 内の点における事後分布の標準偏差を表します。

バージョン履歴

R2016b で導入