単純ベイジアン分類アルゴリズムとデモンストレーション例

この記事の初めに、新しい機械学習手法であるベイジアン アルゴリズムを学びましょう。
今回は、最も基本的な単純ベイジアン分類アルゴリズムから始めて、関連するアルゴリズムの原理を理解します。

次の分類問題を考えてみましょう。サンプルには 2 種類の特徴のみが含まれており、ラベルは 0 と 1 のみです。
現時点では、2つの特徴量をそれぞれa、bとした場合の分類結果を評価したいと考えています。

ナイーブ ベイジアン分類アルゴリズムを使用するコア ロジックは次のとおりです。確率論の関連理論に基づいて、2 つの特徴値がそれぞれ a と b である場合のラベル値 0 と 1 の確率を直接計算し、次に、分類結果としてより大きい確率値値に対応するラベル。

ベイズの公式

確率論に基づいているため、アルゴリズムを使用するために必要な確率論の原理を理解する必要があります。
恥ずかしいことに、学部の確率講座の成績は良かったのですが、実はほとんど内容を忘れてしまっていて、今でも基本的な条件付き確率の公式 P ( B ∣ A ) = P ( AB ) / P ( A ) P から始めています
。 (B|A)=P(AB)/P(A)P ( B A )=P ( A B ) / P ( A )
此处、P ( B ∣ A ) P(B|A)P ( B A )は、A の条件下で B が発生する確率 (事後確率)、P ( AB ) P(AB)P ( A B )は A と B が同時に発生する確率を指し、P(A) は A が発生する確率 (事前確率) を指します。

まず、条件付き確率の式を再検討するための簡単な例を見つけます。同一のボックスが 5 つあり、1 つのボックスのみにお金が入っていると仮定します。最初のボックスにはお金が入っていないとして A を定義し、2 番目のボックスにはお金があるとして B を定義します。最も単純な直感的なロジックを使用すると、
P ( A ) = 4 / 5 、P ( AB ) = 1 / 5 、P ( B ∣ A ) = 1 / 4 P(A)=4/5,P(AB )=1/5、P(B|A)=1/4P ( A )=4/5 P ( A B )=1/5 P ( B A )=1/4
明らかに、このインスタンスの確率値は前の条件付き確率の式を満たします。

条件付き確率で A と B を変更すると、
P ( A ∣ B ) = P ( AB ) / P ( B ) P(A|B)=P(AB)/P(B) が得られます。P ( A B )=P ( A B ) / P ( B )

P ( B ∣ A ) ∗ P ( A ) = P ( A ∣ B ) ∗ P ( B ) = P ( AB ) P(B|A)*P (A )=P(A|B)*P(B)=P(AB)P ( B A )P ( A )=P ( A B )P ( B )=P ( A B )
別の変形を行います
P ( B ∣ A ) = P ( A ∣ B ) ∗ P ( B ) P ( A ) P(B|A)=\frac{P(A|B)*P( B )}{P(A)}P ( B A )=P ( A )P ( A B )P ( B )
はー、やっとベイズの公式が出てきた。

アルゴリズム原理

上の式を見ると、機械学習とはほとんど関係がないようなので、この式を理解するには機械学習の言語を使用する必要があります:
P (カテゴリ ∣ 特徴) = P (特徴 ∣ カテゴリ) ∗ P (カテゴリ) ) P (特徴) P (カテゴリー|特徴)=\frac{P(特徴|カテゴリー)*P(カテゴリー)}{P(特徴)}P (カテゴリ∣特徴) _ _=P 特性P (機能∣カテゴリ) _ _P カテゴリー
この記事の冒頭の分類問題に戻ると、特徴のセットが 2 つあり、P ( 0 ∣ 特徴 1 = a , 特徴 2 = b ) P(0|特徴 1=a, 特徴) を計算できます。 2=b)P ( 0∣機能1 _=_特徴2=b )およびP ( 1 ∣ 特徴 1 = a 、特徴 2 = b ) P(1|特徴 1=a、特徴 2=b)P ( 1∣特性1 _=_特徴2=b )前者の P 値が大きい場合、分類は 0 として分類され、そうでない場合は 1 として分類されます。

次に、P ( 0 ∣ 特徴 1 = a , 特徴 2 = a ) P(0|特徴 1=a, 特徴 2=a) を取ります。P ( 0∣機能1 _=_特徴2=a )例として、その具体的な計算プロセスを分析します。
P ( 0 ∣ 特徴 1 = a , 特徴 2 = b ) = P (特徴 1 = a , 特徴 2 = b ∣ 0 ) ∗ P ( 0 ) P (特徴 1 = a , 特徴 2 = b ) P(0| 特徴 1=a 、特徴 2=b)=\frac{P(特徴 1=a, 特徴 2=b|0)*P(0)}{P(特徴 1=a, 特徴 2=b)}P ( 0∣機能1 _=_特徴2=b )=P (特徴1=_特徴2=b )P (特徴1=_特徴2=b ∣0 )P ( 0 )
まず最も単純なP ( 0 ) P(0)を計算します。P ( 0 ) : 特定のトレーニング セットの後、P ( 0 ) P(0)P ( 0 )は、トレーニングセット内のラベル値の数をカウントすることで直接取得できます。

次に、P (特徴 1 = a , 特徴 2 = b ∣ 0 ) P (特徴 1=a, 特徴 2=b|0) を考えます。P (特徴1=_特徴2=b ∣0 ) : トレーニング セットが与えられた後、固有値がそれぞれ正確に a と b になる、または 0 になるケースはほとんどないため、トレーニング セットで直接組み合わせの数を見つけることを期待することは信頼できません。 。
この P 値を安定して計算するために、ここでは特性が互いに独立しているという仮定を立てます。
このようにして、値は
P (特徴 1 = a , 特徴 2 = b ∣ 0 ) = P (特徴 1 = a ∣ 0 ) ∗ P (特徴 2 = b ∣ 0 ) P(特徴 1=a ) と等価になります。 、特徴 2=b|0)=P(特徴 1=a|0)*P(特徴 2=b|0)P (特徴1=_特徴2=b ∣0 )=P (特徴1=a ∣0 )P (特徴2=b ∣0 )
上の式の右側の値は、トレーニング セットの統計を通じて簡単に取得できます。

次に、上の式を簡単に証明します。まず、条件付き確率の式
P ( AB ∣ C ) = P ( ABC ) P ( C ) P(AB|C)=\frac{P(ABC)}{P(C)} を展開します。P ( A B C )=P ( C )P ( A BC )
右の式を変形します
P ( AB ∣ C ) = P ( AC ) P ( C ) ∗ P ( ABC ) P ( AC ) P(AB|C)=\frac{P(AC)}{P(C)} * \frac{P(ABC)}{P(AC)}P ( A B C )=P ( C )P ( A C )P ( A C )P ( A BC )
明らかに、正しい式は 2 つの条件付き確率値
P ( AB ∣ C ) = P ( A ∣ C ) ∗ P ( B ∣ AC ) P(AB|C)=P(A|C)*P(B|AC )P ( A B C )=P ( A C )P ( B A C )
A と B は互いに独立しているため、C が発生する条件下では、A が発生するかどうかは B の発生確率に影響しません。つまり、P
( B ∣ AC ) = P ( B ∣ C ) P( B|AC)=P(B|C)P ( B A C )=P ( B C )
を上の式に代入すると、
P ( AB ∣ C ) = P ( A ∣ C ) ∗ P ( B ∣ C ) P(AB|C)=P(A|C)* となります。 P(B|C)P ( A B C )=P ( A C )P ( B C )
A を「特徴 1=a」、B を「特徴 2=b」、C を「ラベル値 = 0」とすると、上式は P (特徴 1 =
a、特徴 2 = b ∣)0 ) = P (特徴 1 = a ∣ 0 ) ∗ P (特徴 2 = b ∣ 0 ) P(特徴 1=a,特徴 2=b|0)=P(特徴 1=a|0)*P( 特徴 2 =b|0)P (特徴1=_特徴2=b ∣0 )=P (特徴1=a ∣0 )P (特徴2=b ∣0 )
これまでのところ、式は証明されました。

最後にP (特徴 1 = a、特徴 2 = b) P(特徴 1 = a、特徴 2 = b)を見てください。P (特徴1=_特徴2=b ) : 特徴が互いに独立していると仮定すると、この値は
P (特徴 1 = a , 特徴 2 = b ) = P (特徴 1 = a ) ∗ P (特徴 2 = b ) P(特徴 1=a、特徴 2=b)=P(特徴 1=a)*P(特徴 2=b)P (特徴1=_特徴2=b )=P (特徴1=_P (特徴2=b )

実際、P ( 0 ∣ feature1 = a , feature2 = b ) P(0|feature1=a, feature2=b) を計算しても関係ありません。P ( 0∣機能1 _=_特徴2=b )またはP ( 1 ∣ 特徴 1 = a 、特徴 2 = b ) P(1|特徴 1=a、特徴 2=b)P ( 1∣特性1 _=_特徴2=b )、分母はすべてP (特徴 1 = a、特徴 2 = b) P (特徴 1 = a、特徴 2 = b)P (特徴1=_特徴2=b )P ( 0 ∣ feature1 = a , feature2 = b ) P(0|feature1=a, feature2=b) を
評価するだけの場合P ( 0∣機能1 _=_特徴2=b )およびP ( 1 ∣ 特徴 1 = a 、特徴 2 = b ) P(1|特徴 1=a、特徴 2=b)P ( 1∣特性1 _=_特徴2=b )サイズ関係はP (特徴 1 = a、特徴 2 = b) P (特徴 1 = a、特徴 2 = b) をP (特徴1=_特徴2=b )値。

デモの例

このセクションでは、インターネット上でよく使用されている例を参照して、単純ベイジアン分類アルゴリズムの計算プロセスを示します。

次の表は、男の子が異なる固有値を持っている場合に、女の子が結婚したいと思うさまざまな状況を示しています。
ここでの特性には、外見 (1 は高い、0 は低い)、性格 (1 は良い、0 は悪い)、身長 (2/1/0 はそれぞれ高い/中程度/低い)、モチベーション (1 ははい、0 は低いことを意味します) が含まれます。いいえ); 機能は結婚しています (1 ははい、0 はいいえを意味します)。

さて、特性値が顔面=0、性格=0、身長=0、意欲=0の男の子がいたとします。その場合、その女の子は結婚すべきでしょうか、それとも結婚​​すべきでしょうか?

アルゴリズムについてはひとまず置いておいて、予測するための単純な認識から始めましょう。
上の表の値から、女の子が結婚すると、男の子は常に優れたいくつかの特性、つまり少なくとも「通常の」論理的思考を持っていることが簡単に判断できます。
したがって、4つの特性がすべて劣る状況に直面した場合、自然に結婚しないことを選択するでしょう。
つまり、確率的に見ると、結婚する確率よりも結婚しない確率の方がはるかに高いのです。

次に、アルゴリズムの観点からどのような結論が導き出されるのか、そしてその結論を得るにはどうすればよいのかを見てみましょう。
まず、結婚の確率を計算します。

P ( 結婚 = 1 ∣ ヤン値 = 0 、性格 = 0 、身長 = 0 、自発性 = 0 ) = P (ヤン値 = 0 ∣ 結婚 = 1 ) ∗ P (性格 = 0 ∣ 結婚 = 1 ) ∗ P ( 身長 = 0 ∣ 結婚 = 1 ) ∗ P ( 自発性 = 0 ∣ 結婚 = 1 ) ∗ P ( 結婚 = 1 ) P (外見 = 0 ) ∗ P (性格 = 0 ) ∗ P (身長 = 0 ) ∗ P ( 自発的 = 0 ) P(結婚=1|容姿=0, 性格=0, 身長=0, 自発的=0)=\frac{P(容姿=0|結婚=1)*P(性格= 0|結婚=1)*P(身長=0|結婚=1)*P(やる気=0|結婚=1)*P(結婚=1)}{P(額面=0)*P(性格= 0)*P(身長=0)*P(やる気=0)}P 既婚)=1∣外観_=0 キャラクター=0 身長=0 自発的な=0 )=P (額面金額)=0 )P (文字=0 )P (高さ=0 )P やる気が出る=0 )P (額面金額)=0∣=1 )P (文字=0∣=1 )P (高さ=0∣=1 )P やる気が出る=0∣=1 )P 既婚)=1 )

上式では、P(結婚=1)、P(額面=0)、P(性格=0)、P(身長=0) P(結婚=1)、P(額面=0)、P(性格=0)、P(身長=0)P 既婚)=1 ) P (額面=0 ) P (文字=0 ) P (高さ=0 )およびP (やる気 = 0 ) P (やる気 = 0)P やる気が出る=0 )も同じ計算ロジックです。P ( 結婚 = 1 ) P ( 結婚 = 1)P 既婚)=1 )を例として、これらの値の計算プロセスを簡単に説明します。

テーブルには合計 10 個のサンプルがあり、marriage=1 のサンプル数は 6 なので、
P (marriage= 1) = 6 / 10 = 3 / 5 P(marriage=1)=6/10=3 となります。 /5P 既婚)=1 )=6/10=3/5
このロジックを参照すると、
P (額面 = 0 ) = 2 / 5 、 P (性格 = 0 ) = 3 / 10 、 P (身長 = 0 ) = 1 / 2 、 P ( 自発的= 0 ) = 3 / 10 P(額面=0)=2/5、P(性格=0)=3/10、P(身長=0)=1/2、P(やる気=0)=3/ 10P (額面金額)=0 )=2/5 P (文字=0 )=3/10 P (高さ=0 )=1/2 P やる気が出る=0 )=3/10

P (額面 = 0 ∣ 結婚 = 1 )、P (性格 = 0 ∣ 結婚 = 1 )、P (身長 = 0 ∣ 結婚 = 1 ) P(額面 = 0|結婚 = 1)、P(性格 = 0 |既婚=1)、P(身長=0|既婚=1)P (額面金額)=0∣=1 ) P (文字=0∣=1 ) P (高さ=0∣=1 )および P (やる気 = 0 ∣ 既婚 = 1 ) および P (やる気 = 0 | 既婚 = 1)そしてP やる気満々=0∣=1 )計算ロジックは同じです(Yan 値 = 0 ∣ 結婚 = 1) P(Yan 値 = 0 | 結婚 = 1) を
使用します。P (額面金額)=0∣=1 )を例として、これらの値の計算プロセスを説明します。

まず、元のテーブルを「結婚 = 1」の条件に従って次の新しいテーブルにフィルタリングします。


新しいテーブルには 6 つのサンプルがあり、額面 = 0 のサンプルの数は 3 であるため、
P ( 額面 = 0 ∣ 結婚 = 1 ) = 3 / 6 = 1 / 2 P(額面 = 0 | 結婚=1 )=3/6=1/2P (額面金額)=0∣=1 )=3/6=1/2
この論理を参照すると、
P (性格 = 0 ∣ 結婚 = 1 ) = 1 / 2 、 P ( 身長 = 0 ∣ 結婚 = 1 ) = 1 / 6 、 P ( 自発的 = 0 ∣ 結婚= 1 ) = 1 / 6 P(性格=0|結婚=1)=1/2、P(身長=0|結婚=1)=1/6、P(やる気=0|結婚=1)=1/ 6P (文字=0∣=1 )=1/2 P (高さ=0∣=1 )=1/6 P やる気が出る=0∣=1 )=1/6上記のデータ値を使用すると、女の子が結婚する確率を P (結婚 = 1 ∣ 容姿 = 0 、性格 = 0 、身長 = 0 、意欲 = 0 ) = 1 2 ∗ 1 6 ∗ として得ることができます

1 6 ∗ 1 6 ∗ 3 5 2 5 ∗ 3 10 ∗ 1 2 ∗ 3 10 P(結婚=1|容姿=0、性格=0、身長=0、動機=0)=\frac{\frac{1 } {2}*\frac{1}{6}*\frac{1}{6}*\frac{1}{6}*\frac{3}{5}}{\frac{2}{5} * \frac{3}{10}*\frac{1}{2}*\frac{3}{10}}P 既婚)=1∣外観_=0 キャラクター=0 身長=0 自発的な=0 )=52103211032161616153

同様に、女の子が結婚しない確率は
P (結婚 = 0 ∣ 外見 = 0 、性格 = 0 、身長 = 0 、自発性 = 0 ) = 1 4 ∗ 1 2 ∗ 1 ∗ 1 2 ∗ 2 として計算できます。 5 2 5 ∗ 3 10 ∗ 1 2 ∗ 3 10 P(結婚=0|容姿=0, 性格=0, 身長=0, 意欲=0)=\frac{\frac{1}{4}*\ frac {1}{2}*1*\frac{1}{2}*\frac{2}{5}}{\frac{2}{5}*\frac{3}{10}*\frac{ 1 }{2}*\frac{3}{10}}P 既婚)=0 |額面金額=0 キャラクター=0 身長=0 自発的な=0 )=5210321103412112152
結婚する確率は結婚しない確率よりも低いため、少女は結婚しないことを選択すると判断できます。
さらに両者の比を計算すると、結婚しない確率は結婚する確率の 18 倍であり、前回の予想と同じであることがわかります。

コード

単純ベイジアン分類アルゴリズムでは、最適化アルゴリズムは使用されないため、個人的な観点から言えば、コードを実装する必要はありません。

ただし、強迫性障害自体には標準化された「コード実装」モジュールが必要であるため、このセクションが存在します。

おすすめ

転載: blog.csdn.net/taozibaby/article/details/128702631