受け入れられた回答には、異なるアルゴリズムであるk-NN(k最近傍)の多くの要素が含まれています。
k-NNとNaiveBayesはどちらも分類アルゴリズムです。概念的には、k-NNは「近さ」の概念を使用して新しいエンティティを分類します。k-NNでは、「近さ」はユークリッド距離や余弦距離などのアイデアでモデル化されます。対照的に、NaiveBayesでは、「確率」の概念を使用して新しいエンティティを分類します。
質問はナイーブベイズに関するものなので、これが私が誰かにアイデアとステップを説明する方法です。できるだけ少ない方程式で、平易な英語でそれをやろうと思います。
まず、条件付き確率とベイズの定理
誰かがナイーブベイズのニュアンスを理解して理解する前に、まずいくつかの関連する概念、つまり条件付き確率の概念とベイズの定理を知る必要があります。(これらの概念に精通している場合は、「ナイーブベイズへの行き方」というタイトルのセクションにスキップしてください)
平易な英語での条件付き確率:何か他のことがすでに起こっているとすると、何かが起こる確率はどれくらいですか。
いくつかの結果Oといくつかの証拠Eがあるとしましょう。これらの確率の定義方法から:結果Oと証拠Eの両方を持つ確率は:(発生するOの確率)に( Oが起こった)
条件付き確率を理解するための1つの例:
米国上院議員のコレクションがあるとしましょう。上院議員は民主党員または共和党員である可能性があります。彼らはまた、男性または女性のいずれかです。
1人の上院議員を完全にランダムに選択した場合、この人が女性の民主党員である確率はどのくらいですか?条件付き確率は、それに答えるのに役立ちます。
(民主党と女性の上院議員)の確率= Prob(上院議員は民主党)に、民主党であると仮定した場合の女性であるという条件付き確率を掛けたもの。
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
まったく同じことを逆の方法で計算できます。
P(Democrat & Female) = P(Female) * P(Democrat | Female)
ベイズの定理を理解する
概念的には、これはP(エビデンス|既知の結果)からP(結果|既知のエビデンス)に移行する方法です。多くの場合、既知の結果が与えられた場合、特定の証拠がどのくらいの頻度で観察されるかを知っています。証拠があれば、この既知の事実を使用して逆を計算し、その結果が発生する可能性を計算する必要があります。
P(エビデンスがわかっている場合の結果)= P(結果がわかっている場合のエビデンス)×Prob(結果)、P(エビデンス)でスケーリング
ベイズの定理を理解するための典型的な例:
Probability of Disease D given Test-positive =
P(Test is positive|Disease) * P(Disease)
_______________________________________________________________
(scaled by) P(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 | result)が1の場合、1を掛けているだけです。
- 確率(いくつかの特定の証拠|結果)が0の場合、確率全体。矛盾する証拠が見られる場合は、その結果を除外できます。
- すべてをP(Evidence)で割るので、計算せずに逃げることもできます。
- 事前の乗算の背後にある直感は、より一般的な結果に高い確率を与え、ありそうもない結果に低い確率を与えるためです。これらはまた呼ばれ
base rates
、予測された確率をスケーリングする方法です。
NaiveBayesを適用して結果を予測する方法は?
考えられる結果ごとに、上記の式を実行するだけです。分類しようとしているので、各結果はaclass
と呼ばclass label.
れ、証拠を調べて、このクラスまたはそのクラスである可能性を検討し、各エンティティにラベルを割り当てることが私たちの仕事です。ここでも、非常に単純なアプローチを採用しています。確率が最も高いクラスが「勝者」と宣言され、そのクラスラベルがその証拠の組み合わせに割り当てられます。
果物の例
理解を深めるために例を試してみましょう。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つです。
ナイーブベイズアルゴリズムの背後にある概念を理解するのに役立つことを願っています。