5

次のように、 MLP カーネルを使用して matlab で svmtrain を使用しています。

mlp=svmtrain(train_data,train_label,'Kernel_Function','mlp','showplot',true);

しかし、私はこのエラーが発生します:

??? Error using ==> svmtrain at 470
Unable to solve the optimization problem:
Exiting: the solution is unbounded and at infinity;
the constraints are not restrictive enough.

理由は何ですか?他のカーネルを試しましたが、エラーはありませんでした。私もsvmtrainの答えを試しました -次のように最適化問題を解決できません:

options = optimset('maxiter',1000);
svmtrain(train_data,train_label,'Kernel_Function','mlp','Method','QP',...
'quadprog_opts',options);

しかし、再び同じエラーが発生しました。私のトレーニング セットは、2 つのクラス データ ポイントの単純な 45*2 データ セットです。

4

1 に答える 1

1

ここでの解決策は実際には何も説明していません。問題は、二次計画法が最適化問題に収束できないことです。通常のアクションは反復回数を増やすことですが、同じサイズのデータ​​で1,000,000回の反復でこれをテストしましたが、それでも収束に失敗します。

options = optimset('maxIter',1000000);

mlp = svmtrain(data,labels,'Kernel_Function','mlp','Method','QP',...
'quadprog_opts',options); 

??? Error using ==> svmtrain at 576
Unable to solve the optimization problem:
Exiting: the solution is unbounded and at infinity;
 the constraints are not restrictive enough.

私の質問は、最適化のためにSMOよりも二次計画法を使用している理由はありますか?SMOを使用してまったく同じことを行うと、正常に機能します。

mlp = svmtrain(data,labels,'Kernel_Function','mlp','Method','SMO');

mlp = 

          SupportVectors: [40x2 double]
                   Alpha: [40x1 double]
                    Bias: 0.0404
          KernelFunction: @mlp_kernel
      KernelFunctionArgs: {}
              GroupNames: [45x1 double]
    SupportVectorIndices: [40x1 double]
               ScaleData: [1x1 struct]
           FigureHandles: []
于 2013-01-23T12:50:30.823 に答える