Rのランダムフォレストを使用した分類では、クラスサイズの不均衡をどのように調整する必要がありますか?


16

現在取り組んでいるプロジェクトのさまざまな分類方法を調査しており、ランダムフォレストを試すことに興味があります。私は自分自身を教育しながら努力しているので、CVコミュニティから提供された助けに感謝します。

データをトレーニング/テストセットに分割しました。Rのランダムフォレストでの実験(randomForestパッケージを使用)から、小さなクラスの誤分類率が高いという問題がありました。不均衡なデータでのランダムフォレストのパフォーマンスに関するこの論文を読み、著者は、ランダムフォレストを使用する場合のクラスの不均衡に対処する2つの方法を提示しました。

1.重み付きランダムフォレスト

2.バランスのとれたランダムフォレスト

Rパッケージはクラスの重み付けを許可していません(Rヘルプフォーラムから、classwtパラメーターが正しく実行されておらず、将来のバグ修正としてスケジュールされていることを読みました)ので、オプション2を残します。ランダムフォレストの反復ごとに各クラスからサンプリングされたオブジェクトの数。

ランダムフォレストのサンプルサイズを同じに設定するのは不安です。将来のデータでパフォーマンスが低下する大規模なクラスに関する情報を失いすぎると感じているからです。より大きなクラスをダウンサンプリングするときの誤分類率は改善することが示されていますが、ランダムフォレストで不均衡なクラスサイズに対処する他の方法があるかどうか疑問に思っていましたか?


1
同様の問題にも直面しています。もしあれば、重み付きランダムフォレストとメトリックベースのランダムフォレストのスクリプトを提供してください。返信を楽しみにしています

回答:


5

これらのオプションが気に入らない場合は、代わりにブースティング方法の使用を検討しましたか?適切な損失関数が与えられると、ブーストにより、重みが自動的に再調整されます。ランダムフォレストの確率的性質が魅力的な場合、確率的勾配ブースティングも同様にそれを構築します。


こんにちはDavid、提案に感謝します。ランダムフォレスト内で、またはランダムフォレストと組み合わせてブースティングが可能でしょうか?また、ノイズの多いデータではブースティングを適用できない場合があることを読みました。私が扱っているデータには多くの「ノイズの多い」変数が含まれています。現在、機能選択なしでランダムフォレストを実行し、不均衡に対処するために大きなクラスをダウンサンプリングしています。私は許容できる結果を得ています(トレーニングセットで小さいクラスの85%と大きいクラスの93%を正しく分類しています)が、改善はいつでも歓迎します。
ialm

@Jonathanランダムフォレストがさまざまなブースト方法に勝つ前に、どれだけのノイズが必要かをよく理解していませんが、私の印象では、多くのノイズが必要です。gbmパッケージにはR機能して「重み」という用語を持っている、とあなたは「bag.fraction」という用語を減少させることにより、ランダムな森林に非常によく似た方法でのランダム性を向上させることができます。試してみる価値があるようです。
デビッドJ.ハリス

@ DavidJ.Harris Boostingも、特に絶対的な希少性の場合、少数派クラスに関する情報がまばらである場合、クラスの不均衡に苦しんでいます。
アントワーヌ

2

オブジェクトに重みを付けることは、オブジェクトを複製することとなんらかの意味で同じだと思います。たぶん、異なるクラスを適切にサンプリングして、ブートストラップ手順を変更してみてください。

0.5


0

大きなクラスをサンプリングする代わりに、小さなクラスを展開できます!大規模なクラスの観測数が数倍多い場合、小規模な場合、バイアスは小さくなります。その超大規模なデータセットを処理できることを願っています。

また、大規模なクラスに関するほとんどの情報を処理する観測値のサブセットを識別することもできます。多くの可能な手順があります。最も単純な方法は最近傍法に基づいていると考えます。オリジナルのもの。

randomForestはFortranとcで書かれており、ソースコードは入手可能です(http://cran.r-project.org/src/contrib/randomForest_4.6-2.tar.gz)が、人間性が計算される場所を見つけることはできません。追伸 ランダムフォレストが人類の代わりにジニを使用すること


より大きなクラスで観測値のサブセットを特定することは、興味深いアイデアのようです。プロジェクトの2番目の部分は、実際には、より大きなクラスを、将来の研究に役立つ可能性のある、より小さく有用なサブグループに区別することです。コードのエントロピー計算に関しては、実際にコードを詳しく調べたわけではなく、RFの背後にある理論の一部しか見ていないので、コメントすることはできません。
ialm

私はずっと前にそのコードを修正したかったのですが、そのための時間が足りなかったため、重みを追加することは概念的に難しいでしょう。
Qbik

Rのランダムフォレストは回帰ツールとして使用できますが、教師なし分類にも役立つ可能性があります。昔、私は教師なしのクラスター化にランダムフォレストを使用する方法を自分で考えていましたが、アイデアは得ましたが、まだテストしていませんでしたが、残念ながらかなり計算が厳しいようです-
Qbik

0

(1)重み関数は機能せず、修正されたかどうかはわかりません。

(2)ほとんどは、バランスの取れたデータでオプション2を使用します。大量のデータを失わないための鍵は、層化サンプリングです。各ツリーに対して一意のバランスの取れたセットをランダムにサンプリングします。


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