0

matlab で multisvm 関数を使用しようとしています。小さなデータセットでは、すべてがうまく機能します。必要なサイズを大きくすると、次のエラーが発生します。

seqminopt>seqminoptImpl の使用エラー (198 行目) 最大反復回数内で収束が達成されませんでした。

seqminopt のエラー (81 行目) [alphas offset] = seqminoptImpl(data, targetLabels, ...

svmtrain のエラー (499 行目) [alpha, bias] = seqminopt(training, groupIndex, ...

multisvm のエラー (20 行目) models(k) = svmtrain(TrainingSet,G1vAll);

私はオンラインで解決策を探していましたが、これを見つけました: http://www.mathworks.com/matlabcentral/answers/66183

ここでのアドバイスは「反復の最大数を増やしてください」です。問題は、これを行うのは簡単ではないようだということです。私はやや初心者ですが、これらすべてのファイルを調べて自分でこれを理解しようとしていますが、成功していません。反復回数を増やしてこの問題を解決する方法を知っている人はいますか?

4

2 に答える 2

4

Svmtrain は、たとえば 2 つのグループ間の正しい線を見つけようとしています。正しい行が見つからない場合は、行の関数のいくつかのパラメーターを変更して、グループを分離した正しい行を見つけ、反復パラメーターの反復を行います。デフォルトでは、正しい行を 15000 回見つけようとします。次のコードを使用すると、svmtrain は修正された行を見つけるために 100000 回試行します。しかし、トレーニングの時間は当然長くなります。

options.MaxIter = 100000;
my_svm_struct = svmtrain((Training, Group, 'Options', options); 
于 2013-12-09T23:26:59.643 に答える
2

これは、関数のオプションの'options'パラメーター( ) を使用して行うことができます。svmtrainのドキュメントには、これに関する詳細情報が含まれています。svmtrainMaxIter

statsetSMO (デフォルト)optimsetを使用している場合、または QP ソルバーを使用している場合は、オプション構造体を作成する必要があります。

于 2013-05-22T10:12:19.677 に答える