2

関数を最小化するために、Matlab のfminsearchメソッドを使用しています。

c = cvpartition(200,'KFold',10);
minfn = @(z)kfoldLoss(fitcsvm(cdata,grp,'CVPartition',c,...
    'KernelFunction','rbf','BoxConstraint',exp(z(2)),...
    'KernelScale',exp(z(1))));
opts = optimset('TolX',5e-4,'TolFun',5e-4);
[searchmin fval] = fminsearch(minfn,randn(2,1),opts)

最小化は 2 つのパラメーターで行われます。

ここで、3 番目のパラメーターを最小化したいと思いますが、このパラメーターは正の整数値 (1、2、3、...) しか取ることができません。

正の整数のみを考慮するように fminsearch に指示するにはどうすればよいですか?

次に、3 番目のパラメーターが 10 に初期化されたが、実際の最適値が 100 である場合、そのような場合に fminsearch は高速に収束しますか?

4

3 に答える 3

3

fminsearch整数のみを考慮するように指示することはできません。使用するアルゴリズムは離散最適化には適していません。一般に、離散最適化は連続最適化よりもはるかに困難です。

整数パラメーターの妥当な値が比較的少ない場合は、それらすべてをループすることができますが、コストがかかりすぎる可能性があります。または、独自の 1 次元の離散最適化関数を作成してfminsearch、試行する整数パラメーターの各値を呼び出すようにすることもできます。(たとえば、標準的な 1 次元の連続最適化アルゴリズムを模倣し、隣接する 2 つのアルゴリズムよりも優れているパラメーター値を見つけたら、単に戻ることができます。) この関数を特定の問題に適応させることができる場合があります。あなたは解決しようとしています。

于 2016-04-28T00:37:07.567 に答える