貝葉斯理論

例子-正向機率

仍是拿質檢員的例子來作分析,假如我是一個質檢員,如今接到了三箱零件須要檢驗,其中第一箱有10個零件,第二箱有20個零件,第三箱有15個。半小時過去了,檢驗的結果出爐,第一箱有1個不合格,第二箱有3個不合格,第三箱2個不合格。html

箱子 總零件個數 不合格
A 10 1
B 20 3
C 15 2

那如今我從這三個箱子中隨便拿取一個零件,這個零件是合格的機率是多少呢?咱們假設事件D:零件合格,則:算法

\begin{equation*}
\begin{split}
P(D)&=P(A)*P(D| A) + P(B) *P(D| B) + P(C)*P(D | C) \\
&=(1/3) * (9/10) + (1/3) * (17/20) + (1/3) * (13/15)  \\
&= 0.872
\end{split}
\end{equation*}

像這樣得出一個零件是合格的機率就計算出來了,可是在機器學習領域中,可能咱們更想知道,給你一個樣本,這個樣本屬於哪一個類目的問題,這也叫分類問題,這就涉及到反向機率的問題。網絡

反向機率-樸素貝葉斯理論

如今咱們假設這樣一個場景:你拿到了一個零件,這個零件是屬於哪一個箱子?這個問題在機器學習中就是類比爲:給你一個樣本,這個樣本有不少特徵,機器模型輸出該樣本屬於哪一個類別。這樣咱們來理解貝葉斯理論。機器學習

條件機率

P(A|B) = \frac{P(AB)}{P(B)}

P(A|B)表示事件B已經發生的前提下,事件A發生的機率,叫作事件B發生下事件A的條件機率,P(AB)表示事件A、事件B共同發生的機率,P(B)表示事件B發生的機率,這樣就計算就是一個條件機率。 咱們結合上面零件合格這個場景繼續思考,若是咱們知道了這件零件是合格的,那麼它是來自A、B、C三類中具體哪一個類中?具體哪一個類目咱們確定是不知道的,由於三個類目都有合格的零件,可是咱們能夠知道這件合格的零件來自每一個類目的機率是多少,也就是求P(A|D)P(B|D)P(C|D),其中D表示這件零件是合格的機率,由條件機率知道:學習

\begin{equation*}
\begin{split}
P(A|D) = \frac{P(A*D)}{P(D)} \\
P(B|D) = \frac{P(B*D)}{P(D)} \\
P(C|D) = \frac{P(C*D)}{P(D)} 
\end{split}
\end{equation*}

其中 P(D) 已經在上面計算出來了, P(D)=0.872P(A*D) 表示這件零件來自A箱子,而且是正品的機率,兩個條件是獨立的,因此咱們計算爲:測試

\begin{equation*}
\begin{split}
P(A*D) &=P(A)*P(D|A)\\
&= (1/3) * (9/10)  \\
&=0.3
\end{split}
\end{equation*}

因而咱們能夠計算合格商品來自每一個箱子的機率:code

\begin{equation*}
\begin{split}
P(A|D) &= \frac{P(A*D)}{P(D)} \\
&=0.3/0.872 \\
&=0.344 \\
\\
P(B|D) &= \frac{P(B*D)}{P(D)} \\
&=0.283 /0.872\\
&=0.324 \\
\\
P(C|D) &= \frac{P(C*D)}{P(D)} \\
&=0.289/0.872 \\
&=0.332
\end{split}
\end{equation*}

從而知道了合格的零件最可能來自箱子A,由於來自箱子A的機率最高,達到了0.344。從這個例子中咱們能夠引出貝葉斯理論:htm

咱們假設事件D發生了,求事件D發生是由於事件A的機率,求逆向機率,怎麼理解?看下面: 一、假設事件A致使事件D發生的條件機率是:blog

P(D|A) = \frac{P(D*A)}{P(A)}

因此$$P(D*A)=P(D|A)*P(A)$$ 二、如今事件D發生了,多是事件A致使的,也多是事件B致使,或者其餘事件致使的,咱們想知道,是事件A致使的機率,因此,事件D發生是由於事件A致使的條件機率,公式以下:事件

P(A|D) = \frac{P(D*A)}{P(D)}

將1步驟中的P(D*A)=P(D|A)*P(A) 代入到本公式中,替換分子P(D*A)獲得:

P(A|D) = \frac{P(D|A)*P(A)}{P(D)}

公式推導如上,通過上述兩個步驟後,咱們能夠獲得最終的貝葉斯公式:

P(A|D) = \frac{P(D|A)*P(A)}{P(D)}

可能有人問:咱們這麼轉換公式是爲了什麼?其實推導工程也就用了兩次條件機率,正好兩次條件機率公式的分子是同樣的,用來替換一下,其實這是由於在咱們平常中,咱們比較容易知道結果,就像你帶着眼罩從箱子裏隨便拿到一個零件,這個零件合格或不合格是容易判斷的,可是你怎麼知道它是來自哪一個箱子的?因而咱們的問題就變成了:從三個箱子中拿出一個零件,這個零件是屬於某一個箱子的機率,問題角度變了,咱們再也不關注它是合格仍是不合格,合格或不合格很容易知道,但它屬於哪一個箱子就不容易知道,貝葉斯的提出就是解決這個問題

類比到機器學習領域

好了,咱們知道了貝葉斯理論,那麼對應到機器學習領域,這個思惟怎麼轉換?類比到機器學習就是:給你一條樣本,這個樣本的特徵給出來了,每一個特徵的具體數值也給你了,如今請你告訴我它屬於哪一個類目?固然,這確定是一條測試集,由於在訓練集中,每一條記錄都被標記告終果,也就是被打上標籤,在二分類任務中,樣本屬於A類就被標記1,不屬於A類就被標記0,形式化描述就是以下:

輸入:訓練集X_{train}=\{{x_1},{x_2},{x_3},...,{x_n}\} ,測試集 X_{test}=\{{x_1},{x_2},{x_3},...,{x_m}\} 其中x_1=\{{t_1},{t_2},{t_3},...,{t_h}\},每個樣本又h個特徵,訓練集中每個樣本還有一個label標註結果。

這是比較形式化的一個描述,但又比較抽象,咱們能夠這麼理解,給你測試集的一個樣本,這個樣本的每一個特徵數值告訴你了,這至關於告訴你這個零件是合格的仍是不合格,而後你來告訴我這個樣本是屬於哪一個類目,也就是 樣本中的特徵數值 就是上述箱子例子中零件合格這個結果,同時由於訓練集有特徵數值、每一個樣本有類目結果,咱們能夠從訓練集入手,比較輕鬆的計算貝葉斯公式中某些機率,下一節,咱們將具體計算。

機器學習中的貝葉斯理論

咱們繼續將貝葉斯理論結合到機器學習領域,咱們假設場景:

背景條件:訓練集X_{train}=\{{x_1},{x_2},{x_3},...,{x_n}\},分類結果是C=\{C_1,C_2,...,C_i\},每一條訓練集記錄對飲一個分類結果 輸入:給你一個測試集樣本x_1=\{{t_1},{t_2},{t_3},...,{t_h}\} 輸出:給出這個樣本屬於哪一個類目

首先思考,一共有i個分類結果,咱們能夠計算這個樣本屬於每一個分類結果的機率,選取機率大的分類結果做爲這條樣本的類目,那針對這條樣本咱們知道每一個特徵的數值,咱們認爲這些特徵是從訓練集中挑選的,每一個訓練集樣本有一個分類結果,因而咱們將特徵類比爲合格,那麼這個合格樣原本自那個類目?思考以下:

一、樣本數據是x_1=\{{t_1},{t_2},{t_3},...,{t_h}\},先取一個特徵分析,咱們假設取的特徵是t_h,根據貝葉斯理論咱們知道P(C_i|t_h)公式定義以下:

P(C_i|t_h)= \frac{P(t_h|C_i)*P(C_i)}{P(t_h)}

二、咱們針對1中的公式來拆解分析:

  • (1)$P(t_h|C_i)$表示在$C_i$分類中$t_h$出現的機率,咱們能夠利用訓練集中來計算,由於訓練集中有這個特徵數值,能夠計算這個特徵數值出如今$C_i$類目樣本中的機率
  • (2)$P(C_i)$表示類目$C_i$出現的機率,這個直接計算訓練集中$C_i$類目樣本佔總樣本的比例
  • (3)$P(t_h)$表示特徵$t_h$出現的機率,計算相似從箱子中取一個合格零件的機率,這裏就是從各個類目中抽取這個特徵數值的機率

    經過上述的三個步驟就能夠計算出特徵t_h屬於類目C_i的機率。咱們繼續推廣,一個樣本記錄有多個特徵,因此咱們假設:

    假設:樣本中每一個特徵之間是互相獨立、互不影響的。

    這條假設很重要,由於接下來咱們要計算一個樣本屬於某個類目的機率了。

    P(C_i|x_i),由上述的假設,每一個特徵都是獨立的,則:

    (1)P(x|C_i)=P(t_1|C_i)*P(t_2|C_i)*P(t_3|C_i)...P(t_h|C_i)=\prod_{j=0}^hP(t_j|C_i) (2)P(x)=P(t_1)*P(t_2)*P(t_3)... P(t_h)=\prod_{j=0}^hP(t_j) 因此P(C_i|t_h)公式爲:

    P(C_i|x)= \frac{P(x|C_i)*P(C_i)}{P(x)}= \frac{\prod_{j=0}^hP(t_j|C_i)*P(C_i)}{\prod_{j=0}^hP(t_j)}

    這樣根據公式P(C_i|x),咱們就能夠計算出:P(C_1|x)、P(C_1|x)、P(C_i|x)等分類的機率,經過比較大小,咱們就能夠知道這個這個樣本屬於哪一個類目了,重點是比較機率大小,因此在計算的時候也能夠不計算分子,由於分子P(x)對於多有分類結果來講都是同樣的,因此直接計算分子比較機率大小。

    P(t_h|C_i)計算

    上文中咱們研究了貝葉斯理論實現對樣本的分類,可是其中P(t_h|C_i)的計算會有一個問題:若是特徵都是離散值,這就能夠直接求離散值的佔比狀況就能夠,可是若是特徵是連續值,就很差計算了, 一般當特徵屬性爲連續值時,咱們假定其值是服從高斯分佈(也稱正態分佈)。即:

    g(x,\sigma,\mu)=\frac{1}{\sqrt{{2\pi}}\times\sigma}e^{\frac{1}{2}(\frac{x-\mu}{\sigma})^2}
    P(t_h|C_i)=g(t_h,\sigma_{C_i},\mu_{C_i})

    所以只要計算出訓練集中各個類別中此特徵項劃分的各均值和標準差,代入上述公式便可獲得須要的估計值。另外一個須要討論的問題就是當P(t_h|C_i)=0怎麼辦,當某個類別下某個特徵項劃分沒有出現時,就是產生這種現象,這會令分類器質量大大下降。爲了解決這個問題,咱們引入Laplace校準,它的思想很是簡單,就是對每類別下全部特徵出現的計數加1,這樣若是訓練樣本集數量充分大時,並不會對結果產生影響,而且解決了上述頻率爲0的尷尬局面。

    總結

    這不少都是自我理解的東西,有些概念、標題可能不是那麼準確,也就是拍腦殼想起來的,總結不到位的地方但願你們指出。下回我將講解貝葉斯理論如何結合實際場景,總之感謝網絡上大牛的博客,讓我學到了不少內容,此文是本身思考理解的,但願對你們有幫助。

    參考博客

    機器學習:說說貝葉斯分類 算法雜貨鋪——分類算法之樸素貝葉斯分類(Naive Bayesian classification)

  • 相關文章
    相關標籤/搜索