2016-07-24 5 views
2

SKlearnを使用し、バイナリ分類[1、0]のpredict_proba(x)関数で確率を得るとき、この関数は各クラスに分類される確率を返します。例[.8、.34]。バイナリマシン学習の信頼度確率

コミュニティには、すべての要素を考慮した単一の分類の信頼度に減らすための標準的な方法が採用されていますか?

オプション1) ただ、この例では予測された分類(0.8の確率を取る)

オプション2) 考慮したいくつかの数式や関数呼び出し異なる確率の全てと単一の数値を返します。このような信頼アプローチは、異なるクラス間の分離があまりない場合には、異なるクラスの確率をどのように近づけ、より低い信頼を返すかを考慮に入れることができる。

+2

例では、クラスの確率の合計が1になるべきではありませんか? –

答えて

0

これを行う基準はありません。しかし、あなたができることは、閾値を変えることです。私が正確に意味するのは、predictを使用する代わりに、データセットを分類するバイナリを出力することです。予測するためのしきい値として0.5を取ることです。 1で分類する確率が> 0.5である場合と同様に、それは1と0に分類され、< = 0.5であると分類される。しかし、これによってf1スコアが悪化することがあります。

したがって、しきい値を変更し、スコア関数として使用する最大f1スコアまたはその他のメトリックを生成する方法を選択する必要があります。 ROC(Receiver operating characteristic)カーブは、この目的のためにのみ意味されます。そして、実際には、これだけのクラスの確率を与えるためのsklearnの背後にある動機は、が最高のスレッシュホールドを選ぶようにします。

非常に良い例は、患者ががんにかかっているかどうかを予測することです。だから、賢明にあなたのスレッシュホールドを選ぶ必要があります。もしあなたがそれを高く選べば、偽ネガティブをたくさん得ているかもしれません。あるいは、それを低く選ぶと、偽陽性をたくさん得るかもしれません。したがって、必要に応じてしきい値を選択するだけです(偽陽性を増やす方が良い)。

希望すると助かります!

+0

マルチクラスの問題の場合はどうなりますか?どのようにしてthreasholdを選ぶのですか? – Sandeep

+0

@Sandeep基本的に複数のROC曲線をプロットします。これは役に立ちます - http://stats.stackexchange.com/questions/2151/how-to-plot-roc-curves-in-multiclass-classification – hashcode55

関連する問題