RandomForest-sklearnの分類しきい値


9

1)sklearnのRandomForestで分類しきい値(デフォルトでは0.5だと思います)を変更するにはどうすればよいですか?

2)sklearnでアンダーサンプリングするにはどうすればよいですか?

3)RandomForest分類器から次の結果が得られました:[[1635 1297] [520 3624]]

         precision    recall  f1-score   support

class 0       0.76      0.56      0.64      2932
class 1       0.74      0.87      0.80      4144

平均/合計0.75 0.74 0.73 7076

最初に、データは不均衡です(クラス0から30%、クラス1から70%)。したがって、分類子はクラス1に偏っている可能性が高いと思います。つまり、一部をクラス0からクラス1に移動します(クラス0には1297の誤分類がありますが、クラス1には520の誤分類があります)。どうすれば修正できますか?ダウンサンプリングが役立つ場合?または分類しきい値を変更しますか?

更新:クラス0は人口の40%、クラス1は60%です。ただし、クラス0からクラス1(1297)へのドリフトは高く、これは低くなります。

回答:


7

実際に、内部ランダムフォレストのpredictメソッドを呼び出すメソッドがクラスにランダムフォレストをラップしpredict_proba、カスタムしきい値よりも高い場合にのみクラス1を出力することができます。

あるいはsample_weight、少数派クラスのサンプルに高い値を渡すことにより、トレーニングアルゴリズムにバイアスをかけることができます。


ありがとう。マイナークラスの体重を増やすことを考えていました。ただし、RandomForest分類子には何も表示されません(SGDclassifierにあります)
Big Data Lover

fitメソッドは、sample_weight非常に柔軟でシミュレーションを可能にするclass_weight(ターゲットクラスごとに1つの重み)パラメーター(パラメーターごとに1つの重み)を受け入れます。
ogrisel 2013

ありがとう。clf = clf.fit(X、Y、sample_weight = preprocessing.balance_weights(y)を使用すると、ValueError:オペランドをシェイプと一緒にブロードキャストできませんでした。yはバイナリ0/1
Big Data Lover

の形はy何ですか?なぜあなたは異なっていますYy
ogrisel 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.