svmtrain を使用して、いくつかのデータのペアを区別しています。svmtrain は 1 つのケース (svmclassify によって検証された ~70% の精度で分類器オブジェクトを出力する) で目的どおりに動作しますが、他のすべてのケースは失敗するようです。私の特徴ベクトルは 134 次元で、各クラスに 300 から 800 のデータ ポイントを使用しています。(各クラスのデータ ポイントの数は必ずしも同じではありません)。メソッドを使用してsvmtrainのデフォルトカーネルを使用してみました
SVM = svmtrain(double(train{k}), group_train{k},'showplot',true);
この場合、次のエラーが表示されます。
最適化問題を解決できません: 最大反復回数を超えました。options.MaxIter を増やします。現在の解を出発点として問題を解き続けるには、quadprog を呼び出す前に x0 = x を設定します。
また、呼び出しを使用して反復回数を拡張し、カーネルを指定しようとしました。
options = optimset('maxiter',1000,'largescale','on');
SVM = svmtrain(double(train{k}),group_train{k},'Kernel_Function','mlp','Method','QP',...
'quadprog_opts',options);
この場合、次のエラーが表示されます。
最適化問題を解決できません: 終了: 解は無制限で無限にあります。制約は十分に制限的ではありません。
うまくいった場合、最初のクラスから 338 のデータ ポイントがあり、2 番目のクラスから 476 のデータ ポイントがあります。例として、機能しない 3 つのケースでは、2 番目のクラスに 828、573、および 333 のデータ ポイントがありますが、最初のクラスは同じままで 338 のデータ ポイントがあります。どちらのメソッド呼び出しも機能していないようです。
手伝っていただけませんか?私はこの問題を 1 週間解決しようとしてきましたが、うまくいきませんでした。1 GHz プロセッサと 2 GB RAM を搭載した仮想マシン Windows XP で MATLAB 7.9.0 R2009B を使用しています。
どうもありがとう!-Vivek