1

これは変な要求かもしれないので、最初に説明してください。最近、突然 hd がクラッシュし、libSVM でモデル ファイルを生成するために使用していたデータ ファイルを失いました。私はこのデータ ファイルから生成した SVM モデルとスケーリング ファイルを持っています。model_sv_to_instances(model, &instances)インスタンスを取得するプロセスは非常にコストがかかるため、モデル ファイルのサポート ベクターからデータ ファイルを生成する方法があるかどうか疑問に思っていました。 . (オリジナルと同じにはならないことはわかっていますが、何もないよりはましです) RBF カーネルで確率的 SVM を使用しています。

4

3 に答える 3

6

特定のモデル ファイルを任意のテキスト エディターで開くと、次のような内容が表示されます。

 svm_type c_svc
 kernel_type sigmoid
 gamma 0.5
 coef0 0
 nr_class 2
 total_sv 4
 rho 0
 label 0 1
 nr_sv 2 2
 SV
 1 1:0 2:0
 1 1:1 2:1
 -1 1:1 2:0
 -1 1:0 2:1

あなたにとって興味深いのは、SVとのラインの後です。

 1 1:0 2:0
 1 1:1 2:1
-1 1:1 2:0
-1 1:0 2:1

これらはサポート ベクターとして選択されたデータ ポイントであるため、ファイルを解析するだけです。フォーマットは次のとおりです: [ラベル] [インデックス1]:[値1] [インデックス2]:[値2] ... [インデックスn][値n]

たとえば、私の例から、私のトレーニング セットは次のようになったと結論付けることができます。

x y desired val 
0 0     -1
0 1      1
1 0      1
1 1     -1

いくつかの考慮事項と警告。SV の数とデータ ポイントの比率は、使用したパラメーターによって異なります。場合によっては比率が大きく、データと比較して SV が非常に少ない場合があります。

心に留めておくべきもう 1 つのことは、この削減によって問題が変わる可能性が高いということです。データ ポイントとして SV だけを使用して再度トレーニングすると、完全に異なるパラメーター セットを持つ完全に異なるモデルが得られる可能性があります。

幸運を!

于 2013-03-11T13:57:23.917 に答える
1

あなたのRBF場合はラッキーです。libsvm FAQによると、モデル ファイルからサポート ベクターを抽出できます。

モデル ファイルでは、パラメーターと labels などのその他の情報の後に、各行がサポート ベクターを表します。

ただし、これらはサポート ベクターに過ぎず、元の入力データのほんの一部であることに注意してください。

于 2013-03-11T13:02:44.757 に答える
1

私の知る限りでは、一般的な SVM モデル、特に libSVM モデルは、サポート ベクターのみで構成されています。これらのベクトルは、クラス間の境界線を表します。ほとんどの場合、それらはデータ ポイントの大部分を表しているわけではありません。残念ながら、モデルからデータを再生成する方法はないと思います。

そうは言っても、モデルに何らかの価値があるかもしれない難解なケースを考えることができます。そのようなケースでのデータの回復を専門とする会社があります (たとえば、クラッシュした HD から)。ただし、復元されたデータにはギャップがある場合があります。場合によっては、モデルがリバース エンジニアリングされて、不足している箇所が埋められることがあります。ただし、これは非常に理論的です。

EDIT:他の回答が述べているように、サポートベクターによって表されるデータポイントの割合は、特定の問題とパラメーターによって異なる場合があります。ただし、前述のように、ほとんどの場合、元のデータ セットのごく一部しか再構築できません。

于 2013-03-11T08:28:18.813 に答える