層別サンプリングは必要ですか(ランダムフォレスト、Python)?


14

Pythonを使用して、不均衡なデータセットでランダムフォレストモデルを実行します(ターゲット変数はバイナリクラスでした)。トレーニングデータセットとテストデータセットを分割するとき、階層化されたサンプリング(表示されているコードなど)を使用するかどうかに苦労しました。これまでのところ、プロジェクトで層別化されたケースがより高いモデルのパフォーマンスにつながることを観察しました。しかし、現在のデータセットとターゲットクラスの分布が非常に異なる可能性が高い新しいケースを予測するためにモデルを使用すると思います。そこで、私はこの制約を緩め、階層化されていないスプリットを使用する傾向がありました。誰でもこの点を明確にするためにアドバイスできますか?

train,test=train_test_split(myDataset, test_size=0.25, stratify=y)

回答:


13

各クラスに属する値の数のバランスが取れていない場合、層別サンプリングを使用するのは良いことです。基本的に、クラスの割合がデータセット全体と同じになるようにトレーニングとテストセットを取得するようにモデルに要求します。これは正しいことです。クラスのバランスが取れている場合、シャッフル(ここでは層別化は不要)により、基本的に公平なテストとトレーニングの分割が保証されます。

これで、モデルは、数の少ないクラス(数の少ないポイントを持つクラス)を予測する能力または少なくとも十分な装備を備えています。そのため、単に正確度を計算するのではなく、感度や特異度などの他のメトリックが与えられています。これらを監視してください、これらは保護者です。

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.