不均衡データ用のSVM


15

データセットでサポートベクターマシン(SVM)を使用しようとしています。しかし、問題を試みる前に、SVMは極端に不均衡なデータに対してうまく機能しないと警告されました。私の場合、95〜98%の0と2〜5%の1を使用できます。

スパース/アンバランスデータでSVMを使用することについて説明したリソースを見つけようとしましたが、見つけることができたのは 'sparseSVM'(少量のサポートベクターを使用)だけでした。

私は誰かが簡単に説明できることを望んでいました:

  1. そのようなデータセットでSVMがどの程度うまくいくと予想されるか
  2. SVMアルゴリズムに変更を加える必要がある場合
  3. これについて議論するリソース/論文

回答:


15

多くのSVM実装は、正と負のインスタンスに異なる重みを割り当てることでこれに対処しています。基本的に、正の重みの合計が負の重みの合計と等しくなるように、サンプルの重量を量ります。もちろん、SVMの評価では、データの95%が負の場合、常に負を予測することで95%の精度を得るのは簡単です。したがって、バランスをとるために、評価指標にも重みを付ける必要があります。

特にlibsvm、タグとして追加したには、クラスの重みを設定できるフラグがあります(-w信じていますが、ドキュメントを)。

最後に、個人的な経験から、SVMが体重補正の有無にかかわらず非常に類似した結果をもたらすことがよくあることを教えてください。


それに私を打つ:
マーククレセン14

@Bitwiseでは、データの不均衡という同じ問題があり、99%の精度が得られます。libsvmで重みを使用しました。また、評価指標にも重みを付ける必要があると述べました。評価指標をどのように重み付けできるか知りたいと思いました。
ハニゴック

1
@HaniGocは、基本的に各クラスの精度を個別に計算し、その平均値を取得します。だから、例えば、あなたが10クラスAおよび90、クラスBを持っている場合、あなたが持っているであろう標準精度のクラスB、であることをすべてのサンプルを推測が、重み付けされた精度であなたが持っているであろう0.5 * 0 / 10 + 90 / 90 = 0.590/100=0.90.5(0/10+90/90)=0.5
ビット単位

7

SVMは、まばらで不均衡なデータに対して正常に機能します。クラスウェイトSVMは、マイノリティクラスのトレーニングインスタンスにより高い誤分類ペナルティを割り当てることにより、不均衡なデータを処理するように設計されています。


5

そのようなスパースデータの場合、SVMはうまく機能します。

@Bitwiseで述べられているように、アルゴリズムのパフォーマンスを測定するために精度を使用すべきではありません。

代わりに、計算しなければならない精度、リコールF-スコアアルゴリズムのを。


あなたの推論を広げてください。また、(テストセットの)分類が完了したら、Fスコアをどのように測定しますか?ありがとう
スペイシー14年

テストセットのFScoreを測定するには、手動で分類し、手動データと予測データを使用してリコールと精度を計算する必要があります。SVMがスパースデータでうまく機能する理由を教えてください。
アレクサンドルコフ14年

はい、SVMがまばらなデータで機能する理由も同様にいいでしょう。ありがとう
スペイシー14年

「単にスパースフィーチャを使用しても、SVMに問題はありません。これを確認する方法の1つは、座標軸をランダムに回転させることです。これにより、問題は変わらず同じ解決策が得られますが、データ完全に非スパース(これはランダムな突起がどのように動作するか一部である」(stats.stackexchange.com/questions/23470/...
alexandrekow
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.