21

Pythonでsklearnのロジスティック回帰を使用して分類問題を解決しています。

私の問題は一般的/一般的なものです。2 つのクラス/結果 (正/負または 1/0) を持つデータセットがありますが、セットは非常に不均衡です。~5% の陽性と ~95% の陰性があります。

このような不均衡な問題に対処する方法がいくつかあることは知っていますが、sklearn パッケージを使用して適切に実装する方法についての適切な説明は見つかりませんでした。

これまでに行ったことは、肯定的な結果を持つエントリと、ランダムに選択された同数の否定的なエントリを選択することによって、バランスの取れたトレーニング セットを構築することです。その後、モデルをこのセットにトレーニングできますが、モデルを変更して元の不均衡な母集団/セットに取り組む方法に行き詰まっています。

これを行うための具体的な手順は何ですか? sklearn のドキュメントと例を調べましたが、適切な説明が見つかりませんでした。

4

2 に答える 2

22

class_weight="auto"分類子に渡そうとしましたか? sklearn のすべての分類子がこれをサポートしているわけではありませんが、サポートしているものもあります。ドキュメントストリングを確認してください。

また、負の例をランダムにドロップしたり、正の例をオーバーサンプリングしたりして、データセットのバランスを取り直すこともできます (+ わずかなガウス特徴ノイズを追加する可能性があります)。

于 2013-02-13T22:34:53.260 に答える
6

@agentscully 次の論文を読みましたか。

[SMOTE] ( https://www.jair.org/media/953/live-953-2037-jair.pdf ). 私は同じ非常に有益なものを見つけました。これがレポへのリンクです。ターゲットクラスのバランスをとる方法に応じて、次のいずれかを使用できます

  • 'auto' : (新しいバージョン 0.17 では非推奨) または 'balanced' またはクラス比を自分で指定 {0: 0.1, 1: 0.9}。
  • 「balanced」 : このモードは、重みをクラス頻度に反比例して調整しますn_samples / (n_classes * np.bincount(y)

さらに洞察が必要な場合はお知らせください。

于 2016-06-15T02:26:06.043 に答える