0

私は、できればガウスカーネルを使用して、サポートベクター回帰(SVR)を適用する必要がある論文に取り組んでいます。少し調べてみると、LibSVMがこのタスクに役立つことがわかりました。

ただし、私はかなりの困難に直面しています。このライブラリまたは他の同様のライブラリを使用して、SVRパラメータ(カーネル帯域幅、コスト、イプシロン(スラック変数))を経験的に決定する方法が正確にはわかりません。また、トレーニングエラーとテストエラーの両方をプロットする方法も示します。

すべての提案を歓迎します。

4

1 に答える 1

5

最適なパラメーターは、データによって異なります。最良の (そしておそらく唯一の) オプションは、複数のパラメーター セットを連続して試し、どのメトリックを選択しても、どれが最高のパフォーマンスを発揮するかを確認することです。

トレーニング エラーとテスト エラーのプロットに関しては、分類子を評価する良い方法は、F 値をパフォーマンスの指標として使用することです。これにより、偽陽性と偽陰性の両方のエラーを考慮し、特定のドメインに応じてそれらに重みを付けることができます。トレーニングとテストのエラーをプロットすることで別の意味がある場合は、明確にしてください。

編集:あなたのコメントに応えて

LibSVM は、それ自身のパラメーターを最適化する方法も知りません。そのため、svm_train 関数への引数としてパラメーターを提供する必要があります。独自のパラメーターを実験的に最適化する必要があり、そのためには、パフォーマンスの単一の定量的尺度が必要になります。30 値問題の意味がわかりませんが、真陽性、偽陽性、真陰性、偽陰性を創造的に再定義することで、F 値を使用できるはずです。

2 つのオプションがあります。1 つはより包括的で、もう 1 つは計算コストが低くなります。3 層のネストされたループを使用して、ガンマ、C、およびイプシロンのさまざまな可能な組み合わせをテストし、テスト データで最高のパフォーマンスが得られるパラメーターを選択することができます (特定のテストへの過適合を避けるために、クロス検証を使用することをお勧めします)。データ)、またはそれぞれを連続して最適化することができます。最初に、いくつかの当たり障りのない、デフォルトの C とイプシロンが与えられ、最良の値が見つかるまで多くのガンマ値を反復処理します。次に、C とイプシロンについても同じことを行います。

2 番目の方法を強化する場合は、各パラメーターを最適化するときに、他のすべてのパラメーターに既定値ではなく最適な値を使用し、各パラメーターを複数回最適化するようにします (連続して実行できるようにするため)。他のパラメータのより良い値)。

いずれかの方法をより正確にするには (ただし、オーバーフィッティングの可能性が常にあることを忘れないでください)、テレスコーピング検索を使用します。たとえば、最初に 1 から 101 までを 10 のステップ サイズで検索するとします。したがって、1、11 を検索します。 、21...101。51 の最高値を達成した後の次の実行では、46、47、48、49、50、51、52、53、54、55、56 を検索して、同じ情報を再利用しますが、より正確になる。

どちらの方法もランダムな変動の影響を受けにくくするには (交差検証用に生成するランダム フォールドなど)、既定のパラメーターを使用して複数の交差検証テストを実行します (適切な既定値は、C ではおそらく 1.0 であり、イプシロンの場合は1E-9、ガンマについてはわかりません)、使用するパフォーマンス測定の平均と標準偏差を取得します。次に、特定のパフォーマンス測定値が 2 番目に優れたものよりも統計的に有意に優れているかどうか、または単に既定のパラメーターを使用するよりも優れているかどうかを判断できます。

于 2012-07-22T01:03:17.937 に答える