1. 程式人生 > >機器學習(5)——貝葉斯學習(二)

機器學習(5)——貝葉斯學習(二)

在上一節的分析中,我們的討論基本上都是以一個輸入變數來討論,但是在實際的情況中,存在不止一個輸入變數,那麼我們如何從多個不同量和觀察來推導概率呢?這一章中我們將基於這個問題來進行相關的討論。

在開始之前,先介紹一個概念——貝葉斯網路(Bayesian Networks),它能夠很好的在複雜空間表示和操作概率量

一:聯合分佈(Joint Distribution)

1.1條件獨立性

這裡我先用一段英文的描述來講解一些什麼是條件獨立性:

X is conditionally independent of Y given Z if the probability distribution governing X is independent of the value of Y given Z the value of Z; that is it. We call it conditional independent(條件獨立).

我們這裡在使用一句公式來描述這個特徵:

P(X|Y,Z)=P(X|Z)

說的通俗一點就是X發生的概率與Y無關

這裡我們在使用另外一種方式來證明一下:
因為條件獨立,我們可以得到如下的公式:

P(X,Y)=P(X)P(Y)

根據概率論的鏈式法則,我們得到如下的公式:

P(X,Y)=P(X|Y)P(Y)

結合上邊的公式我們可以得到:

P(X|Y)=P(X)

這樣就又一次的驗證了我們說的那句話。

但是在現實生活中,特別是在機器學習這方面,我們如果要運用到這個條件獨立的特性,即找到兩個條件獨立的屬性,是非常困難的,但是我們做了相應的轉變,將其轉變為在滿足Z的條件下,找到條件獨立的兩個屬性——X,Y,這種相對就容易多了。

(具體為什麼會這樣,筆者沒有具體的研究過,因為筆者覺得這是哪些科學家乾的事情,如果我們只是簡單的使用的話,在初期,是沒有精力去研究這個東西的)。

1.2聯合分佈

這裡我們列出瞭如下的一個場景:

Lightning Storm Probability
T T 0.25
T F 0.40
F T 0.05
F F 0.30

上邊是一個關於閃電和打雷發生的概率表。

這裡我們只列出的兩個屬性Lightning、Storm。在我們討論的這個過程中,這兩個事件發生是不相關的(有些人說,打雷和暴風雨是相關的,但是這個要注意,你們說的相關是指物理上的相關性

,而我們這裡討論的是統計相關性,所以他們是條件獨立的兩個事件)。基於我們前邊討論的概率的相關公式,我們可以得出求出發生閃電的概率和發生風暴的概率分別是多少。

但是這裡我們思考一下,如果我們繼續新增屬性的話,會發生社麼樣的事情?我們需要考慮的情況越來越多,非常不利於分析。如果我們仍然新增的是這種只有發生和不發生的條件的話,那我們的所需要考慮的情況就得滿足2n。這將非常不利於我們的分析。那麼這裡我們就要運用到另外一個概念了——因式分解

這裡我們基於前邊的場景,新增一種屬性——thunder。由於情況比較多,這裡不用表格的形式來分析,我們用一張圖來描述我們的情況:
這裡寫圖片描述

這裡我們先列出如下的一個公式:

P(thunder=T|lightning=F,storm=T)=P(thunder=T|lightning=F,storm=F)

這個公式是一個代表性的公式:公式左邊的含義是——在發生暴風雨的情況下,打雷但是沒有閃電的概率;公式右邊的含義是——沒有發生暴風雨的情況下,打雷但是沒有發生閃電的情況。這裡我們是不是可以得出——打雷、閃電的發生與暴風雨無關呢?如果你不相信的話,你可以計算下其它的情況,你會發現這個情況是屬實的。

接下來請看如下的圖表:
這裡寫圖片描述

請看左邊,我們將事件分成不同的層級去考慮。圖中右邊的子圖,被我們稱為信念網路(Belief Network)。理解這個圖形的時候,一定要注意,這裡的箭頭並不代表因果關係,即:暴風雨導致了閃電、閃電導致了打雷。箭頭只是表示統計相關性,與它們背後實際發生的過程並沒有任何的關係(這個可能對於大部人來說可能會下意識的會產生這種想法,所以這裡特別說明一下),這個我們在前邊已經提到過。

特別說明:在信念網路(Belief Network)中箭頭只是表示相關性,而這個相關性是統計相關性。也可以表示條件獨立性

1.3 從聯合分佈中取樣

下圖是一個信念網路的圖形,
這裡寫圖片描述

如果我們按照如圖所示的信念網路進行取樣的話,我們應該滿足什麼情況呢?正確的取樣順序就是右側中從上到下所示。那麼針對這種圖形我們取樣的標準是什麼呢?——拓撲關係,這種是處理圖形的標準做法之一,他的運算非常的快,但是它需要依賴某種特性。1:它必須是一個有向無環圖。

這裡我們在討論一下聯合分佈的個概率:

P(A,B,C,D,E)=P(A)P(B)P(C|A,B)P(D|C,B)P(E|C,D)

我們來分析一下這個過程中我們需要考慮的情況:1:我們可以從聯合分佈的節點出發,指定每個節點的概率,即所謂的條件概率表。2:我們也可以從每個節點的條件概率表的值出發,計算我們想要的任何組合,任何變數聯合組合的概率。就如上邊公式的左右兩邊,分別對應兩種不同的情況——變數的某些分配聯合概率等於所有單個值的乘積。

標註一下,這裡我們需要進一步的討論一下關於種類的問題,筆者暫時正在研究,線性跳過。

為什麼從聯合分佈中取樣是一個好主意?

  1. 因為他是分佈的兩個用途之一:通過給定一個值,我們可以告知這個值發生的概率,就像概率函式一樣;如果你有一個不錯的分佈,我們可以根據這個分佈生成值。
  2. 如果分佈能夠代表某個過程的話,我們能夠通過機器來模擬這個過程。
  3. 近似推理:如果我們知道一個分佈,我們可以根據這個分佈推斷出每個事件的概率,就如前邊講到的求P(Storm)的問題;我們同時可以做出一些其他類似的推理。以前邊的打雷為例:我們想知道同時發生打雷和閃電的概率?同時發生暴風雨和打雷的概率?等等。這個是針對機器來說的。
  4. 圖形化。這樣我們就可以以一個更加直觀的方式來感受這個分佈。這一部分實際上是從的角度得出的結論,因為從本質上講的話,它實際還是第三點中說的近似推理。

1.4 推理規則(Inferencing Rule)

邊緣化(Marginalization)規則,我們可以通過對一些其它變數求和,然後求出它們的聯合概率:

P(x)=yP(x,y)

為了幫助大家理解這個規則,我們這裡展示一張圖:
這裡寫圖片描述
邊緣化規則講的是,如果我們要求x的概率,那麼我們分解它,將世界分解成xy,加上x和y的地方。那麼x的概率就是:yxyx

鏈式規則(Chain Rule):

P(x,y)=P(x)P(y|x)

關於鏈式規則我們要說明一點:當兩個事件條件獨立的時候,我們可以將P(y|x)簡化為P(y)。為了加深理解,請看下圖:
這裡寫圖片描述
上圖上提出了一個問題,就是什麼時候P(x,y)=P(y)P(x|y)。正確的答案是第二個(即右邊的哪一個),因為左邊的哪一個,x的發生是與y沒有關係的。

貝葉斯規則(Bayes Rule):

P(x,y)=P(y|x)P(x)P(y)

這個已經在前邊講解到了,不再做進一步的說明。

二:樸素貝葉斯

2.1手工推理

2.2樸素貝葉斯(Naive Bayes Rule)

我們在上一節中,通過相關的公式完成了對應概率的推導,但是在計算機中我們怎麼實現著一個過程呢?

2.3樸素貝葉斯的好處