私は画像分類が初めてで、現在、multisvm 関数によって 4 つの画像グループを分類するための SVM(support Vector Machine) メソッドに取り組んでいます。私のアルゴリズムは、トレーニング データとテスト データがランダムに選択されるたびに異なり、パフォーマンスは毎回異なります。クロスバリデーションを行うように提案された人もいましたが、クロスバリデーションが必要な理由と、これの主な目的は何ですか? . 私の実際のデータセットは、トレーニング行列のサイズ28×40000
とテスト行列のサイズで構成されています17×40000
。このデータセットで相互検証を行う方法は私を助けてくれます。前もって感謝します 。
3 に答える
正しい科学的アプローチを保証するために、実験を常に相互検証する必要があります。たとえば、相互検証を行わないと、読み取った結果 (精度など) がテスト セットによって大きく偏る可能性があります。極端な場合、トレーニング ステップは (データのフィッティングに関して) 非常に弱く、テスト ステップは非常に優れている可能性があります。これは、SVM だけでなく、すべての機械学習と最適化実験に適用されます。このような問題を回避するには、最初のデータセットを 2 つに分割し (たとえば)、最初のセットでトレーニングし、2 番目のセットでテストし、プロセスを逆に繰り返します。2 番目のセットでトレーニングし、最初のセットでテストします。これにより、データへの偏りが確実に目に見えるようになります。誰かが示唆したように、さらに分割してこれを実行できます。
私は multiSVM に詳しくありませんが、libSVM をチェックしてみてください。libSVM は、さまざまなプログラミング言語をサポートする人気のある無料の SVM ライブラリです。
ここでは、交差検証について簡単に説明します。これは、トレーニング データをサブグループに分割することで、モデルのオーバー フィッティングを回避する方法です。このようにして、両方のサブグループに最適に適合するモデル (一連のパラメーターによって定義される) を見つけることができます。
たとえば、次の図では、モデルの定義に使用されるパラメーター化されたガンマ値と C 値の検証精度等高線をプロットしています。この等高線図から、ヒューリスティックに最適な値 (テストされたものから) は、81 ではなく 84 に近い精度を与える値であることがわかります。
交差検証の詳細については 、このリンクを参照してください。