這就是貝葉斯---從數學基礎到貝葉斯理論到實踐

貝葉斯網絡(Bayesian network)又被稱爲信念網絡( Belief network),是一種通過有向無環圖( Directed acyclic graph, DAG)表示一組隨機變量及其條件依賴概率的概率圖模型。在概率圖中,每個節點表示一個隨機變量,有向邊表示隨機變量之間的依賴關係,兩個節點若無連接則表示它們是相互獨立的隨機變量。用條件概率表示變量間依賴關係的強度,無父節點的節點用先驗概率表達信息。

貝葉斯網絡中的節點可以表示任意問題,豐富的概率表達能力能較好地處理不確定性信息或問題。貝葉斯網絡中所有節點都是可見的,並且可以非常直觀地觀察到節點間的因果關係。這些特性都使得貝葉斯網絡在衆多智能系統中有重要的應用。

貝葉斯理論概述

隨着人工智能的發展,對貝葉斯網絡的理論研究愈加廣泛,研究領域涵蓋了網絡的結構學習、參數學習、因果推理、不確定知識表達等

貝葉斯方法的特點是用概率表示不確定性,概率規則表示推理或學習,隨機變量的概率分佈表示推理或學習的最終結果。

貝葉斯理論源於貝葉斯提出的貝葉斯定理和貝葉斯假設。

貝葉斯定理引入了先驗概率(指根據以往經驗和分析得到的概率),後驗概率由先驗概率和類條件概率表達式計算出。假設有隨機變量x和y,p(x,y)p(x, y)表示它們的聯合概率,p(xly)p(xly)p(yx)p(y|x)表示條件概率,其中p(yx)p(y|x)是後驗概率,而p(y)稱爲y的先驗概率,x和y的聯合概率和條件概率滿足下列關係p(y,x)=p(ylx)p(x)=p(xy)p(y)p(y,x)=p(ylx)p(x)=p(x|y)p(y)交換後得到:p(yx)=p(xy)P(y)/p(x)p(y|x)=p(x|y)P(y) /p(x)
上述公式即爲貝葉斯定理
在這裏插入圖片描述
貝葉斯假設:如果沒有任何已有的知識來幫助確定先驗概率p(y),貝葉斯提出使用均勻分佈作爲其概率分佈,即隨機變量在其變化範圍內取爲各個值的概率是一定的

貝葉斯概率基礎

概率論

若在大量重複實驗中,事件x發生的頻率穩定地接近一個固定常數p, 則p稱爲事件x發生的概率,記爲p(x)。(0<p(x)<1)

古典概率:設一種實驗有且僅有有限的n個可能結果,即有n個基本事件,而x事件包含着m個可能結果,則稱m/n爲事件x的概率,記爲P(x)=m/n
幾何概率:設幾何概率:設Ω\Omega是幾何型隨機實驗的基本事件空間,在Ω\Omega中進行等可能的投點,點落在某一區域x的概率p(x)與該區域的面積S、成正比,有p(x)=Sx/SΩp(x)=S_x/S_\Omega, 其中SΩS\Omega表示整個區域的面積。
條件概率:設x,y是兩個事件,且p(x)>0,稱p(y|x)=p(xy)/p(x)
爲事件x發生的條件下事件y發生的條件概
率。
加法定理: x, y兩個不相容事件之和的概率,等於兩個事件概率之和,即p(x+y)=p(x)+p(y)

乘法定理: x, y兩個不相容非零事件,-其乘積的概率等於x和y概率的乘積,即p(x,y)=p(x)p(y)

獨立事件: x,y兩個事件,若任一事件發生與否不影響另一個事件發生的可能性,則稱x與y是相互獨立的事件

聯合概率分佈:單隨機變量x的概率分佈可用p(x)表示,對多個隨機變量X1,X2…Xn可用聯合概率分佈p(X1,X2,…,Xn),即聯合分佈來描述各個變量所有可能的狀態組合的概率。其中所有狀態函數值之和爲1,即有2 p(p,.. x,)=1
條件概率分佈:設隨機變量x和y,在x=X, y=Y時有條件概率爲p(x=Xy=Y)=p(x=Xy=Y)p(y=Y)p(x=X|y=Y)=\frac{p(x=X,y=Y)}{p(y=Y)}上式中固定y,則x在定義域上的不同取值X可得到在x定義域上的函數,該函數即稱爲給定y=Y時隨機變量x的條件概率分佈。

貝葉斯概率

先驗概率:在實驗前根據以往的數據分析得到的事件發生概率。

後驗概率:利用貝葉斯定理和實驗的信息對先驗概率做出修正後的概率。

全概率公式:設y1,y2,..yny_1, y_2, .. y_n,是兩兩互斥的事件,且p(yi)>0i=12....n,yiΩp(y_i)>0, i=1, 2,....n, y_i∈\Omega另有一事件x=xy1+xy2+...+xymx=xy_1+xy_2+ ...+xy_m;則有p(x)=ip(xyi)p(yi)p(x)= \sum_{i}{p(x|y_i)}{p(y_i)}可以將yiy_i視作原因,x視作結果,結果的發生有多種原因。

貝葉斯公式:假設x和y分別是樣本屬性和類別,p(x, y)表示它們的聯合概率,p(xy)p(x|y)p(yx)p(y|x)表示條件概率,其中p(yx)p(y|x)是後驗概率,而p(y)爲y的先驗概率,x,y的聯合概率和條件概率滿足:p(x,y)=p(yx)p(x)=p(xly)p(y)p(x, y)=p(y|x)p(x)=p(xly)p(y)變換後得到貝葉斯公式:
p(yx)=p(xy)p(y)p(x)p(y|x)=\frac{p(x|y)p(y)}{p(x)}

上述公式稱爲貝葉斯定理,它提供了從先驗概率p(y)計算後驗概率p(y|x)的方法。在樣本分類時,利用訓練樣本可以計算出不同類別的後驗概率。例如類別y;的先驗概率爲p(y),實驗所得的新信息爲
p(xjlyi;)(i=12,...m;j=12,...n)p(x_jly_i;) (i=1,2,...m;j=1, 2,...n),則計算樣本x;屬於類別y;的後驗概率:

後驗概率$p(y_i|x_i)最大的類別y;可以作爲樣本的分類。
該公式還可以表示在事件x已經發生的條件下,找到導致x發生的各個原因的概率。

上面是不是有點懵,來看個小例子吧!!

男生總是穿長褲,女生則一半穿長褲一半穿裙子
正向概率:隨機選取一個學生,他(她)穿長褲的概率和穿裙子的概率是多大
逆向概率:迎面走來一個穿長褲的學生,你只看得見他(她)穿的是否長褲,而無法確定他(她)的性別,你能夠推斷出他(她)是女生的概率是多大嗎?

假設學校裏面人的總數是 U 個
穿長褲的(男生):UP(Boy)P(PantsBoy)U * P(Boy) * P(Pants|Boy)
P(Boy) 是男生的概率 = 60%
P(Pants|Boy) 是條件概率,即在 Boy 這個條件下穿長褲的概率是多大,這裏是 100% ,因爲所有男生都穿長褲
穿長褲的(女生): UP(Girl)P(PantsGirl)U * P(Girl) * P(Pants|Girl)

求解:穿長褲的人裏面有多少女生
穿長褲總數:UP(Boy)P(PantsBoy)+UP(Girl)P(PantsGirl)U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)

P(GirlPants)=UP(Girl)P(PantsGirl)穿=UP(Girl)P(PantsGirl)[UP(Boy)P(PantsBoy)+UP(Girl)P(PantsGirl)]P(Girl|Pants) = \frac{U * P(Girl) * P(Pants|Girl)}{穿長褲總數}=\frac{U * P(Girl) * P(Pants|Girl)} { [U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)]}

與總人數有關嗎?

UP(Girl)P(PantsGirl)UP(Boy)P(PantsBoy)+UP(Girl)P(PantsGirl)\frac{U * P(Girl) * P(Pants|Girl)} {U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)}

容易發現這裏校園內人的總數是無關的,可以消去
P(GirlPants)=P(Girl)P(PantsGirl)P(Boy)P(PantsBoy)+P(Girl)P(PantsGirl)P(Girl|Pants) = \frac{P(Girl) * P(Pants|Girl) }{P(Boy) * P(Pants|Boy) + P(Girl) * P(Pants|Girl)}

化簡:
P(GirlPants)=P(Girl)P(PantsGirl)P(Boy)P(PantsBoy)+P(Girl)P(PantsGirl)=P(Girl)P(PantsGirl)P(Pants)P(Girl|Pants) =\frac{P(Girl) * P(Pants|Girl)} {P(Boy) * P(Pants|Boy) + P(Girl) * P(Pants|Girl)} =\frac{P(Girl) * P(Pants|Girl)} {P(Pants)}
分母其實就是 P(Pants)

p(yx)=p(xy)p(y)p(x)p(y|x)=\frac{p(x|y)p(y)}{p(x)}

樸素貝葉斯分類模型

樸素貝葉斯分類模型是一種簡單的構造分類器的方法。樸素貝葉斯分類模型將問題分爲特徵向量和決策向量兩類,並假設問題的特徵變量都是相互獨立地作用於決策變量的,即問題的特徵之間都是互不相關的。樸素貝葉斯分類模型能指數級降低貝葉斯網絡構建的複雜性,同時還能較好地處理訓練樣本的噪聲和無關屬性,所以樸素貝葉斯分類模型仍然在很多現實問題中有着高效的應用,例如入侵檢測和文本分類等領域。

假設問題的特性向量爲X=X1X2..XnX={X1,X2,..,Xn},並且X1X2..XnX1,X2,.. Xn之間相互獨立,那麼p(xy)p(x|y)可以分解爲多個向量的積,即有
p(y|x)= .p(y)II"p(x, |) |p(x)
那麼這個問題就可以由樸素貝葉斯分類器來解決,即

在這裏插入圖片描述
其中p(x)是常數,先驗概率p(y)可以通過訓練集中每類樣本所佔的比例進行估計。給定Y=y,如果要估計測試樣本x的分類,由樸素貝葉斯分類得到y的後驗概率爲:
在這裏插入圖片描述
因此最後只要找到使p(y=Y)]I _P(x,|y=Y)最大的類 別y即可。
從計算分析中可見,p(xiy=Y)p(x_i|y= Y)的計算是模型關鍵的一步,這一步的計算視特徵屬性的不同也有不同的計算方法。
( 1 )對於離散型的特徵屬性x;,可以用類y中的屬性值等於x;的樣本比例來進行估計。

(2)對於連續性的特徵屬性x;通常先將x;離散化,然後計算屬於類y的訓練樣本落在x;對應離散區別的比例估計p(x;/Y)。也可以假p(x;/Y)的概率分佈,如正態分佈,然後用訓練樣本估計其中的參數。

(3)而在p(x;/Y)=0的時候, 該概率與其他概率相乘的時候會把其他概率覆蓋,因此需要引入Laplace修正。做法是對所有類別下的劃分計數都加一,從而避免了等於零的情況出現,並且在訓練集較大時,修正對先驗的影響也會降低到可以忽略不計。

綜合上述分析,可以歸納出樸素貝葉斯分類模型應用流程的三個階段,如圖所示。

①準備階段。這階段主要是對問題進行特徵提取,建立問題的特徵向量,並對其進行一定的劃分形 成訓練樣本,這些工作主要由人工完成,完成質量對整個分類器的質量有着決定性影響。

②)訓練階段。根據上述分析中的公式計算每個類別在訓練樣本中的出現頻率,以及每個特徵對每個類別的條件概率,最終獲得分類器。

③應用階段。該階段會將待分配項輸入分類器中,利用上述的公式自動進行分類。

樸素貝葉斯分類器還可以進行提升( Boosting)。提升方法中關鍵一步是數據訓練集的權重調整過程,權重調整可以通過兩種方法實現,分別爲重賦權法和重採樣法。重賦權法對每個訓練集的樣本添加一個權重,對於離散型的特徵xix_i而言,計算條件概率p(xiy)p(x_i|y)時不再是直接計次,而是對樣本的權重進行累加;對於連續性的特徵xix_i權重改變表現爲均值的偏移,因此可以通過增大或減小連續屬’性的值來達到賦權的目的。重採樣法適用於不能給樣本添加權值的情況。由於初始時是根據相同的概率從訓練集中採集數據,現在可以通過權重來調整採集的概率,每次在學習一個分類器錯誤的訓練數據後,後一-個分類器可以根據新的調整後的概率重新在訓練樣本中採集數據。值得注意的是,由於樸素貝葉斯分類器是基於數據統計的分類器,先驗概率預先確定,僅僅通過調整訓練樣本選擇的權重對樸素貝葉斯分類的提升效果並不明顯。提升方法更常用於決策樹、神經網絡等分類器中。
樸素貝葉斯分類模型結構簡單。由於特徵變量間的相互獨立,算法簡單易於實現。同時算法有穩定的分類效率,對於不同特點的數據集其分類性能差別不大。樸素貝葉斯分類在小規模的數據集.上表現優秀,並且分類過程時空開銷小。算法也適合增量式訓練,在數據量較大時,可以人爲劃分後分批增量訓練。
需要注意的是,由於樸素貝葉斯分類要求特徵變量滿足條件獨立的條件,所以只有在獨立性假定成立或在特徵變量相關性較小的情況下,才能獲得近似最優的分類效果,這也限制了樸素貝葉斯分類的使用。樸素貝葉斯分類需要先知道先驗概率,而先驗概率很多時候不能準確知道,往往使用假設值代替, 這也會導致分類誤差的增大。

是不是又有點懵呢?再來看例子!!!

拼寫糾正實例:

問題是我們看到用戶輸入了一個不在字典中的單詞(比如the 寫成了tha),我們需要去猜測:“這個傢伙到底真正想輸入的單詞是什麼呢?

假設用戶實際輸入的單詞記爲 D ( D 代表 Data ,即觀測數據)
下面做一些猜測:

猜測1:P(h1 | D),猜測2:P(h2 | D),猜測3:P(h1 | D) 。。。(h123…都是猜測數據)
統一爲:P(h | D)
P(h | D)=P(我們猜測他想輸入的單詞 | 他實際輸入的單詞)

P(hD)=P(h)P(Dh)P(D)P(h | D) =\frac{ P(h) * P(D | h)}{ P(D)}
P(h)是先驗概率,如某個詞在語料庫的概率是多少,我們是已經提前知道的
P(D)是可以約掉的

對於不同的具體猜測 h1 h2 h3 … ,P(D)都是一樣的,所以在比較P(h1 | D) 和 P(h2 | D) 的時候我們可以忽略這個常數
P(h | D) ∝ P(h) * P(D | h)(正比)對於給定觀測數據,一個猜測是好是壞,取決於“這個猜測本身獨立的可能性大小(先驗概率,Prior )”和“這個猜測生成我們觀測到的數據的可能性大小,也就是the寫成tha的可能性大小。

對於不同的具體猜測 h1 h2 h3 … ,P(D) 都是一樣的,所以在比較P(h1 | D) 和 P(h2 | D) 的時候我們可以忽略這個常數
P(h | D) ∝ P(h) * P(D | h)
對於給定觀測數據,一個猜測是好是壞,取決於“這個猜測本身獨立的可能性大小(先驗概率,Prior )”和“這個猜測生成我們觀測到的數據的可能性大小。

貝葉斯方法計算: P(h) * P(D | h),P(h) 是特定猜測的先驗概率比如用戶輸入tlp ,那到底是 top 還是 tip ?這個時候,當最大似然不能作出決定性的判斷時,先驗概率就可以插手進來給出指示——“既然你無法決定,那麼我告訴你,一般來說 top 出現的程度要高許多,所以更可能他想打的是 top ”

還有拼錯檢查和文本分析源碼在這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章