2015-09-10 37 views
6

私はクラスの不均衡の問題があり、この使用して、コストに敏感な学習を解決したいです。scikitで学ぶサンプルウェイトとクラスウェイトの違いは何ですか?

  1. サンプルの下と

修正損失関数を使用するクラスに重みを与える

  • サンプル以上の質問

    Scikitは、クラスの重みとサンプルの重みと呼ばれる2つのオプションを持って学びます。サンプルウェイトは実際にオプション2)とクラスウェイトオプション1)を実行していますか?オプション2)は、クラスの不均衡を処理するために推奨される方法です。

    +1

    私は、これは、主に問題に依存していると思います。あなたのデータがどのように不均衡であり、おそらくあなたが試したことがあるかについて、より多くの情報を提供できますか? – NBartley

    答えて

    4

    それは似た概念だが、sample_weightsで、あなたはいくつかのサンプルにもっと注意を学ぶために推定器を強制することができ、かつclass_weightsであなたには、いくつかのクラスに注意を払って学ぶために推定器を適用することができます。 sample_weight/class_weight = 0は、基本的には、エスティメータが学習プロセスでそのようなサンプル/クラスをまったく考慮する必要がないことを意味します。したがって、このクラスのclass_weight = 0の場合、クラシファイア(たとえば)は何らかのクラスを予測しません。いくつかのsample_weight/class_weight大きなsample_weight/class_weight以外ならば、他のサンプル/クラスに - 推定すると、最初の場所でそのサンプル/クラス上の誤差を最小化しようとします。ユーザ定義のsample_weightsとclass_weightsを同時に使用することができます。

    単純なクローニング/削除でトレーニングセットをアンダーサンプリング/オーバーサンプリングしたい場合、これは対応するsample_weights/class_weightsの増加/減少と同じです。あなたはまた、人為的に試すことができ、より複雑なケースでは

    SMOTEのような技術を用いて、サンプルを生成します。

    2

    sample_weightおよびclass_weightは類似の機能を持っています。つまり、見積もり担当者がいくつかのサンプルにもっと注意を払うためです。

    実際のサンプルの重みはsample_weight * weights from class_weightになります。

    これはオーバー/オーバーサンプリングと同じ目的を果たしますが、動作が異なる可能性があります。ランダムなフォレストなどのサンプルをランダムに選択するアルゴリズムがあり、オーバーサンプリングしたかどうかは重要です。

    それをまとめると:
    class_weightsample_weight両方やる2)、オプション2)は、クラスの不均衡を処理するための一つの方法です。私は普遍的に推薦された方法を知らないので、あなたの特定の問題について1)、2)、1)+ 2)を試して、最も効果的なものを見てみましょう。

    関連する問題