2016-11-12 3 views
5

最近のバージョンのscikit-learnパッケージにはBalanced Random Forest(BRF)の実装があるのだろうかと思います。 BRFは、不均衡なデータの場合に使用されます。これは通常のRFとして機能しますが、ブートストラップの繰り返しごとに、アンダーサンプリングによって流行クラスのバランスをとります。例えば、N0 = 100、N1 = 30の2つのクラスが与えられた場合、それぞれのランダムサンプリングで、第1のクラスから30個のインスタンスが得られ、第2のクラスから同じインスタンスがインスタンス化されます。平衡データセット。詳細はplease refer to this paperをご覧ください。scikit-learn(python)のバランスランダムフォレスト

RandomForestClassifier()には 'balance_weight ='パラメータがありますが、これは 'balanced'に設定されている可能性がありますが、ブートスクラップされたトレーニングサンプルのダウンサンプリングに関することはわかりません。

+0

あなたは解決策を見つけましたか? – oliversm

+0

@oliversm、残念ながらそうではありません。私はこの問題を去った。おそらくscikit学習フォーラムで問題を開き、解決策を提案するべきでしょう。それは素晴らしいだろう。 –

+0

Briemanによって提案された方法は、Scikitが既に提供しているものを使って実装するのはかなり簡単です。見過ごされているようですが、残念です。 – oliversm

答えて

4

私はこれが10ヶ月遅れていることを知っていますが、あなたが探しているのはBalancedBaggingClassifierからimblearnです。

imblearn.ensemble.BalancedBaggingClassifier(base_estimator=None, 
n_estimators=10, max_samples=1.0, max_features=1.0, bootstrap=True, 
bootstrap_features=False, oob_score=False, warm_start=False, ratio='auto', 
replacement=False, n_jobs=1, random_state=None, verbose=0) 

効果的には、エスカレータを上に重ねながら、多数クラスを連続的にアンダーサンプリングすることです。 scikit-learnのランダムなフォレストや基本推定を使用することができます。ここにはexampleがあります。

+1

ありがとう!私はこのパッケージでちょっと遊んでいて、かなり面白いと感じました。私はさらにあなたの例を探求します。 –

+0

@ArnoldKleinはい、その非常に便利ですが、ドキュメントはまだ少し改善が必要です。 – mamafoku

関連する問題