3

データ セット (6 つのターゲット クラス) で複数クラスの分類の問題があります。トレーニング データのクラス ラベルの分布は偏っています。以下は、各クラス ラベル (1 ~ 6) の分布です。

(array([174171,     12,     29,   8285,   9996,  11128]),

vowpal wabbit の oaa スキームを使用して分類し、各例でデフォルトの重み 1.0 を試しました。ただし、ほとんどのモデルでは、これはモデルが評価のすべての例で 1.0 を予測するという結果になります (ラベル 1 はトレーニング セットで非常に大きな表現を持っているため)。

分類子のパフォーマンスを向上させるために、各クラスの例に適用できるさまざまな重みを試してみます。

各例の重みを決定するためのテクニックに関する指針や実用的なヒントは非常に役立ちます。考えられる手法の 1 つは、頻度に応じて逆比率で例を重み付けすることでした。残念ながら、これにより、分類器がラベル 2 および 3 に大きく偏り、評価のほとんどすべてに対して 2 および 3 を予測する結果になるようです。

モデルの選択は、重みの決定に影響しますか。私はニューラル ネットワークとロジスティックおよびヒンジ損失関数を実験しています。

4

1 に答える 1

4

より良いアプローチがあるかもしれませんが、私はあなたがしたように、次のようにラベルの希少性に基づいて例を逆に重み付けすることから始めます:

ラベル数の合計 =174171 + 12 + 29 + 8285 + 9996 + 11128 = 203621そう

174171 回 (全体の 85.5%) 表示されるラベル 1 が重み付けされます。12 回表示される (最も少ない) 203621/174171 = 1.16909 ラベル 2 が重み付けされます。203621/12 = 16968.4

等々。

train-set の例がよくシャッフルされていることを確認してください。これは、オンライン学習において非常に重要です。同じラベルの例をひとくくりにすると、オンライン パフォーマンスが非常に低下します。

シャッフルがうまくいき、新しい例でパフォーマンスが悪くなった場合は、重みをあまり積極的sqrt()に変更できませんlog()

もう 1 つのアプローチは、コストに敏感な新しいマルチクラス オプションの 1 つを使用することです。たとえば--csoaa 、github の VW wiki には、これらのオプションとそのトレーニング セット形式の使用方法の詳細を含むいくつかの例があります。

選択した損失関数は確実に影響を与えるはずです。ただし、一般に、 でマルチクラスまたはその他の削減ベースのオプションを使用する場合はvw、 をそのままにし--loss_functionて、アルゴリズムに組み込みのデフォルトを使用させる必要があることに注意してください。別の損失関数を試して、リダクション組み込み損失関数よりも良い結果が得られた場合、これは の開発者にとって興味深いものになる可能性がありますvw。バグとして報告してください。

于 2013-11-14T06:27:49.477 に答える