等しくないグループの単純ベイズ分類器


8

単純ベイズ分類器を使用して、2つのデータグループを分類しています。データの1つのグループが他のグループよりもはるかに大きい(4倍以上)。分類器の各グループの事前確率を使用しています。

問題は、私が得た結果の真陽性率が0%、偽陽性率が0%であるということです。以前の値を0.5と0.5に設定した場合も同じ結果が得られました。

しきい値をより良いものに設定して、よりバランスの取れた結果を得るにはどうすればよいですか?

ロジスティック回帰分類器を使用すると、同様の問題が発生しました。バイアスから前期を差し引くことで解決しました。

このデータでフィッシャー線形判別を使用すると、中間に設定されたしきい値で良い結果が得られます。

この問題にはいくつかの一般的な解決策があると思いますが、見つけることができませんでした。

更新:私は分類器が過剰適合していることに気づきました。トレーニングセットのパフォーマンスは完璧です(100%正確)。

同じグループを使用すると、分類子は「小さな」グループにも分類を開始しますが、パフォーマンスはかなり低くなります(FLDまたはLRよりも悪い)。

UPDATE2:問題は、完全な共分散行列を使用していたことでした。対角共分散行列で実行すると、より「バランスの取れた」結果が得られました。


0%真陽性および0%偽陽性?それはすべてを他のグループに入れているに違いありません...そして、「ポジティブ」グループの事前確率を80%に設定してみてください。しかし、最初に、コードのどこかに間違いがないことを確認してください...
jbowman '13

多分前のものは大きすぎる/小さすぎるのでしょうか?(浮動小数点演算のいくつかの問題?)
Dov

回答:


7

すべてのパターンをネガティブクラスに割り当てることは、「賢い結果」ではありません。Bayes最適分類子は常にすべてのパターンを過半数クラスに属するものとして分類する可能性があります。この場合、分類子は本来行うべきことを正確に行っています。ポジティブクラスに属するパターンの密度がネガティブクラスに属するパターンの密度を決して超えない場合、属性値に関係なくネガティブクラスの可能性が高くなります。

このような状況でやるべきことは、偽陽性と偽陰性のエラーの相対的な重要性を考慮することです。実際には、2つの異なるタイプのエラーのコストが同じであることはまれです。したがって、誤検出と誤検出のエラーの損失を特定し、これらを考慮してしきい値確率を設定します(誤分類コストの違いは、以前の確率を変更することと同じであるため、単純なベイズに実装するのは簡単です)。損失の交差検定の推定を最小限に抑えるために事前分布を調整することをお勧めします(不均等な誤分類コストを組み込んで)。

誤分類コストが等しく、トレーニングセットが運用条件を表す前のトレーニングセットである場合、実装が正しいと仮定すると、すでに最良のNB分類器を持っている可能性があります。


アップデートを確認してください。私の分類子は過剰適合です。いずれにせよ、等しいグループを使用すると、分類子はより良い動作を開始しますが、それでもパフォーマンスは低くなります。1つのグループがはるかに大きい場合、しきい値(事前)を変更してもパフォーマンスにはまったく影響しません。ありがとう
ラン

1
@Ranここに何かが足りないという気持ちを取り除くことはできません。各分類子のAUCを報告できますか?2.クラスごとにいくつのポジティブ/ネガティブインスタンスがありますか?3.分類子をどのように検証しましたか?which-k-fold-cv?トイレ?3. NBの性質は、0または1に近い極端な確率p(class | x)を作成することに注意してください。したがって、p(class = 1 | x)> t =>となるように、最良の判定しきい値を見つける必要があります。クラス1、それ以外はクラス0。このような決定しきい値を見つけることは、事前分布を調整することと同じです。
steffen

事前分布を変更@Ran 持つパフォーマンスに影響を与えるために;)。小さな変更でも効果がない場合は、極端な方法を試してください。
steffen

2
@ラン、トレーニングセットのサイズ、属性の性質などに関する追加情報がないと問題を特定することは困難です。ただし、条件付き確率がゼロになるとNBに問題が発生するということが1つ思い浮かびます。 、それが発生した場合と同様に、他の属性の値に関係なく、出力はゼロになります。少数派クラスの確率は常に正確にゼロですか?その場合は、それが問題である可能性があります。その場合、ラプラス補正を使用して条件付き確率を推定すると役立つ場合があります。
Dikran Marsupial 2011

0

計算によって大きなグループに適合するように、小さいデータグループを拡大します。小さいグループのデータを引き伸ばしますが、より均等な計算が可能になります。

現在のようにまだ変な結果が得られる場合は、実装全体を最初から確認して、(おそらく単純な)エラーを探し出してください。


「計算で小さいデータを拡大する」とはどういう意味ですか?さらに説明できますか?
Dov

すべてをネガティブクラスに属するものとして分類することは奇妙な結果ではありません。ネガティブパターンの密度がどこでもポジティブパターンの密度を常に上回るため、これは正しいことです。
Dikran Marsupial 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.