これは古い質問であり、確立された答えがあることを理解しています。私が投稿している理由は、受け入れられた回答には、異なるアルゴリズムであるk-NN(k-最近傍)の多くの要素があるためです。
k-NNとNaiveBayesはどちらも分類アルゴリズムです。概念的には、k-NNは「近さ」の概念を使用して新しいエンティティを分類します。k-NNでは、「近さ」はユークリッド距離やコサイン距離などのアイデアでモデル化されます。対照的に、NaiveBayesでは、「確率」の概念を使用して新しいエンティティを分類します。
質問はナイーブベイズに関するものなので、ここに私が誰かにアイデアとステップを説明する方法を示します。できるだけ少ない方程式で、できるだけ平易な英語でそれを行うようにします。
まず、条件付き確率とベイズのルール
ナイーブベイズのニュアンスを理解して理解する前に、まず、いくつかの関連する概念、つまり条件付き確率の概念とベイズの規則を知る必要があります。(これらの概念に精通している場合は、「ナイーブベイズへのアクセス」というタイトルのセクションにスキップしてください)
平易な英語での条件付き確率:何か他のことがすでに起こっているとすると、何かが起こる確率はどのくらいでしょうか。
いくつかの結果Oといくつかの証拠Eがあるとしましょう。これらの確率の定義方法から、次のようになります。結果Oと証拠Eの両方を持つ確率は、(Oが発生する確率)に(Eの確率)を掛けたものです。 Oが起こった)
条件付き確率を理解するための1つの例:
米国の上院議員のコレクションがあるとします。上院議員は民主党員でも共和党員でもよい。彼らはまた、男性または女性です。
私たちが1人の上院議員を完全にランダムに選択した場合、この人が女性の民主党員である確率はどれくらいですか?条件付き確率は、その答えに役立ちます。
(民主党と女性の上院議員)の確率=確率(上院議員は民主党員)に、民主党員であることを考えると、女性であることの条件付き確率を掛けます。
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
まったく同じことを逆の方法で計算できます:
P(Democrat & Female) = P(Female) * P(Democrat | Female)
ベイズ規則について
概念的には、これはP(エビデンス|既知の結果)からP(アウトカム|既知のエビデンス)に進む方法です。多くの場合、既知の結果から、特定の証拠がどれほど頻繁に観察されるかがわかります。証拠が与えられた場合、この既知の事実を使用して逆を計算し、その結果が発生する可能性を計算する必要があります。
P(エビデンスがわかっている場合の結果)= P(アウトカムがわかっている場合のエビデンス)x Prob(結果)の積、P(エビデンス)でスケーリング
ベイズの法則を理解するための古典的な例:
Probability of Disease D given Test-positive =
Prob(Test is positive|Disease) * P(Disease)
_______________________________________________________________
(scaled by) Prob(Testing Positive, with or without the disease)
さて、これらはすべて単純なベイズに到達するための前文にすぎませんでした。
ナイーブベイズへの行き方
これまでのところ、1つの証拠についてのみ話し合った。実際には、複数の証拠が与えられた場合の結果を予測する必要があります。その場合、数学は非常に複雑になります。その複雑さを回避するための1つのアプローチは、複数の証拠を「分離」し、各証拠を独立したものとして扱うことです。このアプローチが、これが単純ベイズと呼ばれる理由です。
P(Outcome|Multiple Evidence) =
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)
多くの人々はこれを次のように覚えることを選択します:
P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
P(Evidence)
この方程式に関するいくつかの点に注意してください。
- Prob(evidence | outcome)が1の場合は、1を掛けるだけです。
- 確率(特定の証拠|結果)が0の場合、確率全体。矛盾する証拠がある場合は、その結果を除外できます。
- すべてをP(Evidence)で除算するので、計算せずに済むこともあります。
- 事前確率を掛ける背後にある直観は、より一般的な結果には高い確率を与え、予想外の結果には低い確率を与えるためです。これらも呼ばれ
base rates
、予測確率をスケーリングする方法です。
NaiveBayesを適用して結果を予測する方法
考えられる結果ごとに上記の式を実行してください。私たちはを分類しようとしているので、それぞれの結果はと呼ばれ、class
それはclass label.
Ourの役割です。繰り返しますが、非常に単純なアプローチを採用します。最も高い確率を持つクラスが「勝者」として宣言され、そのクラスラベルがその証拠の組み合わせに割り当てられます。
果物の例
私たちの理解を深めるために例で試してみましょう:OPは「果物」の識別例を求めました。
1000個の果物に関するデータがあるとします。彼らはたまたまバナナ、オレンジまたは他の果物です。私たちは各果物について3つの特徴を知っています:
- 長いかどうか
- 甘いかどうか
- その色が黄色の場合。
これが「トレーニングセット」です。これを使用して、遭遇する新しい果物の種類を予測します。
Type Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
___________________________________________________________________
Banana | 400 | 100 || 350 | 150 || 450 | 50 | 500
Orange | 0 | 300 || 150 | 150 || 300 | 0 | 300
Other Fruit | 100 | 100 || 150 | 50 || 50 | 150 | 200
____________________________________________________________________
Total | 500 | 500 || 650 | 350 || 800 | 200 | 1000
___________________________________________________________________
フルーツコレクションについては、多くのことを事前に計算できます。
いわゆる「事前」確率。(果物の属性をまったく知らなかった場合、これは私たちの推測です。)これらは私たちのbase rates.
P(Banana) = 0.5 (500/1000)
P(Orange) = 0.3
P(Other Fruit) = 0.2
「証拠」の確率
p(Long) = 0.5
P(Sweet) = 0.65
P(Yellow) = 0.8
「可能性」の確率
P(Long|Banana) = 0.8
P(Long|Orange) = 0 [Oranges are never long in all the fruit we have seen.]
....
P(Yellow|Other Fruit) = 50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75
果物を考えると、どのようにそれを分類するのですか?
未知の果物の特性が与えられ、それを分類するように依頼されたとしましょう。果実は長く、甘い、黄色であると言われています。バナナですか?オレンジですか?それとも他の果物ですか?
3つの結果それぞれの数値を1つずつ実行するだけです。次に、最も高い確率を選択し、未知の果物を、以前の証拠(1000の果物トレーニングセット)に基づいて、最も確率が高いクラスに属するものとして「分類」します。
P(Banana|Long, Sweet and Yellow)
P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
= _______________________________________________________________
P(Long) * P(Sweet) * P(Yellow)
= 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)
= 0.252 / P(evidence)
P(Orange|Long, Sweet and Yellow) = 0
P(Other Fruit|Long, Sweet and Yellow)
P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
= ____________________________________________________________________________________
P(evidence)
= (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)
= 0.01875 / P(evidence)
圧倒的なマージン(0.252 >> 0.01875
)で、このスウィート/ロング/イエローフルーツがバナナである可能性が高いと分類します。
なぜベイズ分類器はそれほど人気があるのですか?
最終的に何が起こるかを見てください。ほんの一部のカウントと乗算。これらすべての用語を事前に計算できるため、分類が簡単、迅速かつ効率的になります。
Let z = 1 / P(evidence).
次の3つの量をすばやく計算します。
P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence) = z * Prob(Other) * Prob(Evidence1|Other) * Prob(Evidence2|Other) ...
最も大きい番号のクラスラベルを割り当てれば完了です。
名前にもかかわらず、ナイーブベイズは特定のアプリケーションで優れていることがわかりました。テキスト分類は、それが本当に素晴らしい分野の1つです。
Naive Bayesアルゴリズムの背後にある概念の理解に役立つことを願っています。