4

ウェブページからの広告である画像を検出するアプリを構築しようとしています。それらを検出すると、クライアント側での表示を許可しなくなります。

このStackoverflowの質問に答えた助けから、SVMが私の目標への最良のアプローチであると思いました。

そこで、SVMとSMOを自分でコーディングしました。UCIデータリポジトリから取得したデータセットには3280個のインスタンス(データセットへのリンク)があり、そのうちの約400個は広告画像を表すクラスからのものであり、残りは非広告画像を表すものです。

現在、最初の2800の入力セットを取得してSVMをトレーニングしています。しかし、正解率を調べた後、これらの2800の入力セットのほとんどが非広告画像クラスからのものであることがわかりました。そのため、そのクラスの精度は非常に高くなっています。

だから私はここで何ができますか?トレーニングするためにSVMにいくつの入力セットを与える必要がありますか?また、クラスごとにいくつの入力セットを提供しますか?

ありがとう。乾杯。(前の質問とは文脈が違うので、基本的に新しい質問をしました。ニューラルネットワーク入力データの最適化


返信いただきありがとうございます。広告クラスと非広告クラスのC値が正しく導出されているかどうかを確認したいと思います。これについてフィードバックをください。

ここに画像の説明を入力してください

または、ここでドキュメントバージョンを確認できます。

ここでy1eqaulからy2へのグラフを見ることができます ここに画像の説明を入力してください

ここでy1はy2と等しくありません ここに画像の説明を入力してください

4

2 に答える 2

6

これには 2 つの方法があります。1 つは、トレーニング データのバランスをとって、広告画像と非広告画像が同数含まれるようにすることです。これは、400 の広告画像をオーバーサンプリングするか、数千の非広告画像をアンダーサンプリングすることによって実行できます。使用するデータ ポイントの数に応じてトレーニング時間が大幅に増加する可能性があるため、最初に広告以外の画像をアンダーサンプリングして、400 個の広告画像とランダムに選択された 400 個の広告以外の画像でトレーニング セットを作成することをお勧めします。

もう 1 つの解決策は、重み付けされた SVMを使用して、広告画像のマージン エラーが非広告のマージン エラーよりも大きく重み付けされるようにすることです。パッケージ libSVM の場合、これは-wiフラグで行われます。データの説明から、広告画像を非広告画像よりも約 7 倍重み付けしてみることができます。

于 2010-02-18T20:16:18.040 に答える
4

トレーニングセットに必要なサイズは、機能スペースのまばらさによって異なります。私が見る限り、あなたはあなたが使用することを選択した画像機能について話し合っていません。トレーニングを行う前に、各画像を、画像を説明する数値のベクトル(特徴)に変換する必要があります。できれば、気になる側面をキャプチャします。

ああ、スポーツ用にSVMを再実装しない限り、libsvmを使用することをお勧めします。

于 2010-02-17T20:32:54.090 に答える