當前位置:首頁 » 安全設置 » 貝葉斯網路先驗信息怎麼設置
擴展閱讀
iphone新手機連不上網路 2025-05-13 19:07:22
模擬器顯示網路連接超時 2025-05-13 18:39:04
沒有網路訪問許可權WiFi 2025-05-13 18:36:28

貝葉斯網路先驗信息怎麼設置

發布時間: 2022-09-25 11:58:57

如何用matlab的BNT軟建立一個貝葉斯網路及條件概率表

對上述信息建立貝葉斯網路,代碼如下

[plain]view plainprint?

N=8;

dag=zeros(N,N);

A=1;S=2;T=3;L=4;B=5;E=6;X=7;D=8;

dag(A,T)=1;

dag(S,[LB])=1;

dag([TL],E)=1;

dag(B,D)=1;

dag(E,[XD])=1;

discrete_nodes=1:N;

node_sizes=2*ones(1,N);

bnet=mk_bnet(dag,node_sizes,'names',{'A','S','T','L','B','E','X','D'},'discrete',discrete_nodes);

bnet.CPD{A}=tabular_CPD(bnet,A,[0.99,0.01]);

bnet.CPD{S}=tabular_CPD(bnet,S,[0.5,0.5]);

bnet.CPD{T}=tabular_CPD(bnet,T,[0.99,0.95,0.01,0.05]);

bnet.CPD{L}=tabular_CPD(bnet,L,[0.99,0.9,0.01,0.1]);

bnet.CPD{B}=tabular_CPD(bnet,B,[0.7,0.4,0.3,0.6]);

bnet.CPD{E}=tabular_CPD(bnet,E,[1,0,0,0,0,1,1,1]);

bnet.CPD{X}=tabular_CPD(bnet,X,[0.95,0.02,0.05,0.98]);

bnet.CPD{D}=tabular_CPD(bnet,D,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);

draw_graph(dag)

說明:有N=8個節點,建立有向無環圖dag,並且這些點的值是離散的,這里1=False 2=True,node_sizes給出了所有狀態


mk_bnet中names後的{}裡面給出了各個節點的別名

利用tabular_CPD設置各個變數的邊緣概率,對於A和S,定義順序是False True;對於T、L和B這類,順序是FF FT TF TT;對於D這類,順序是FFF FFT FTF FTT TFF TFT TTF TTT

簡單檢查下A的概率


[plain]view plainprint?

engine=jtree_inf_engine(bnet);

evidence=cell(1,N);

[engine,loglik]=enter_evidence(engine,evidence);

m=marginal_nodes(engine,A);

m.T()

現在可以給定任意條件,然後計算概率了。

[plain]view plainprint?

例如要計算任意組合條件下,個體分別得Tub、lungcancer和bronchitis的概率。下面代碼計算了P(T=True|A=False,S=True,X=True,D=False)的概率

[plain]view plainprint?

engine=jtree_inf_engine(bnet);

evidence=cell(1,N);

evidence{A}=1;

evidence{S}=2;

evidence{X}=2;

evidence{D}=1;

[engine,loglik]=enter_evidence(engine,evidence);

m=marginal_nodes(engine,T);

m.T(2)

❷ 貝葉斯定理先驗概率計算要怎麼

貝葉斯公式是機器學習中的基礎公式,也是概率統計里的常用公式,貝葉斯公式常用於監督學習演算法中的生成(式)模型(Generative
Model),想要對機器學習演算法建立體系化的知識結構,對生成模型的理解至關重要,本篇只簡述貝葉斯公式。並對先驗概率和後驗概率的知識點進行整理,以便隨時查閱。首先給出兩個例子

第一個例子。一所學校裡面有 60% 的男生,40%
的女生。男生總是穿長褲,女生則一半穿長褲一半穿裙子。假設你走在校園中,迎面走來一個穿長褲的學生(很不幸的是你高度近似,你只看得見他(她)穿的是否長褲,而無法確定他(她)的性別),你能夠推斷出他(她)是男生的概率是多大嗎?

第二個例子。兩個一模一樣的碗,一號碗有30顆水果糖和10顆巧克力糖,二號碗有水果糖和巧克力糖各20顆。現在隨機選擇一個碗,從中摸出一顆糖,發現是水果糖。請問這顆水果糖來自一號碗的概率有多大?
公式
P(A|B)=P(B|A)∗P(A)/P(B)P(A|B)=P(B|A)∗P(A)/P(B)
P(A|B)P(A|B)
想要理解貝葉斯公式首先要對
A,B所代表的意義有所了解。如果我們作為一個出題人,要如何考查這個公式呢?給出一系列條件,求P(A|B)顯然是一種方法。簡單舉幾個例子(只涉及最後的問題)。

❸ 貝葉斯網路,看完這篇我終於理解了(附代碼)!

概率圖模型是用圖來表示變數概率依賴關系的理論,結合概率論與圖論的知識,利用圖來表示與模型有關的變數的聯合概率分布。由圖靈獎獲得者Pearl開發出來。

如果用一個詞來形容概率圖模型(Probabilistic Graphical Model)的話,那就是「優雅」。對於一個實際問題,我們希望能夠挖掘隱含在數據中的知識。概率圖模型構建了這樣一幅圖,用觀測結點表示觀測到的數據,用隱含結點表示潛在的知識,用邊來描述知識與數據的相互關系, 最後基於這樣的關系圖獲得一個概率分布 ,非常「優雅」地解決了問題。

概率圖中的節點分為隱含節點和觀測節點,邊分為有向邊和無向邊。從概率論的角度,節點對應於隨機變數,邊對應於隨機變數的依賴或相關關系,其中 有向邊表示單向的依賴,無向邊表示相互依賴關系

概率圖模型分為 貝葉斯網路(Bayesian Network)和馬爾可夫網路(Markov Network) 兩大類。貝葉斯網路可以用一個有向圖結構表示,馬爾可夫網路可以表 示成一個無向圖的網路結構。更詳細地說,概率圖模型包括了樸素貝葉斯模型、最大熵模型、隱馬爾可夫模型、條件隨機場、主題模型等,在機器學習的諸多場景中都有著廣泛的應用。

長久以來,人們對一件事情發生或不發生的概率,只有固定的0和1,即要麼發生,要麼不發生,從來不會去考慮某件事情發生的概率有多大,不發生的概率又是多大。而且概率雖然未知,但最起碼是一個確定的值。比如如果問那時的人們一個問題:「有一個袋子,裡面裝著若干個白球和黑球,請問從袋子中取得白球的概率是多少?」他們會想都不用想,會立馬告訴你,取出白球的概率就是1/2,要麼取到白球,要麼取不到白球,即θ只能有一個值,而且不論你取了多少次,取得白球的 概率θ始終都是1/2 ,即不隨觀察結果X 的變化而變化。

這種 頻率派 的觀點長期統治著人們的觀念,直到後來一個名叫Thomas Bayes的人物出現。

托馬斯·貝葉斯Thomas Bayes(1702-1763)在世時,並不為當時的人們所熟知,很少發表論文或出版著作,與當時學術界的人溝通交流也很少,用現在的話來說,貝葉斯就是活生生一民間學術「屌絲」,可這個「屌絲」最終發表了一篇名為「An essay towards solving a problem in the doctrine of chances」,翻譯過來則是:機遇理論中一個問題的解。你可能覺得我要說:這篇論文的發表隨機產生轟動效應,從而奠定貝葉斯在學術史上的地位。

這篇論文可以用上面的例子來說明,「有一個袋子,裡面裝著若干個白球和黑球,請問從袋子中取得白球的概率θ是多少?」貝葉斯認為取得白球的概率是個不確定的值,因為其中含有機遇的成分。比如,一個朋友創業,你明明知道創業的結果就兩種,即要麼成功要麼失敗,但你依然會忍不住去估計他創業成功的幾率有多大?你如果對他為人比較了解,而且有方法、思路清晰、有毅力、且能團結周圍的人,你會不由自主的估計他創業成功的幾率可能在80%以上。這種不同於最開始的「非黑即白、非0即1」的思考方式,便是 貝葉斯式的思考方式。

先簡單總結下頻率派與貝葉斯派各自不同的思考方式:

貝葉斯派既然把看做是一個隨機變數,所以要計算的分布,便得事先知道的無條件分布,即在有樣本之前(或觀察到X之前),有著怎樣的分布呢?

比如往檯球桌上扔一個球,這個球落會落在何處呢?如果是不偏不倚的把球拋出去,那麼此球落在檯球桌上的任一位置都有著相同的機會,即球落在檯球桌上某一位置的概率服從均勻分布。這種在實驗之前定下的屬於基本前提性質的分布稱為 先驗分布,或著無條件分布

其中,先驗信息一般來源於經驗跟歷史資料。比如林丹跟某選手對決,解說一般會根據林丹歷次比賽的成績對此次比賽的勝負做個大致的判斷。再比如,某工廠每天都要對產品進行質檢,以評估產品的不合格率θ,經過一段時間後便會積累大量的歷史資料,這些歷史資料便是先驗知識,有了這些先驗知識,便在決定對一個產品是否需要每天質檢時便有了依據,如果以往的歷史資料顯示,某產品的不合格率只有0.01%,便可視為信得過產品或免檢產品,只每月抽檢一兩次,從而省去大量的人力物力。

後驗分布 π(θ|X)一般也認為是在給定樣本X的情況下的θ條件分布,而使π(θ|X)達到最大的值θMD稱為 最大後驗估計 ,類似於經典統計學中的 極大似然估計

綜合起來看,則好比是人類剛開始時對大自然只有少得可憐的先驗知識,但隨著不斷觀察、實驗獲得更多的樣本、結果,使得人們對自然界的規律摸得越來越透徹。所以,貝葉斯方法既符合人們日常生活的思考方式,也符合人們認識自然的規律,經過不斷的發展,最終占據統計學領域的半壁江山,與經典統計學分庭抗禮。

條件概率 (又稱後驗概率)就是事件A在另外一個事件B已經發生條件下的發生概率。條件概率表示為P(A|B),讀作「在B條件下A的概率」。

比如上圖,在同一個樣本空間Ω中的事件或者子集A與B,如果隨機從Ω中選出的一個元素屬於B,那麼這個隨機選擇的元素還屬於A的概率就定義為在B的前提下A的條件概率:

聯合概率:

邊緣概率(先驗概率):P(A)或者P(B)

貝葉斯網路(Bayesian network),又稱信念網路(Belief Network),或有向無環圖模型(directed acyclic graphical model),是一種概率圖模型,於1985年由Judea Pearl首先提出。它是一種模擬人類推理過程中因果關系的不確定性處理模型,其網路拓樸結構是一個有向無環圖(DAG)。

貝葉斯網路的有向無環圖中的節點表示隨機變數

它們可以是可觀察到的變數,或隱變數、未知參數等。認為有因果關系(或非條件獨立)的變數或命題則用箭頭來連接。若兩個節點間以一個單箭頭連接在一起,表示其中一個節點是「因(parents)」,另一個是「果(children)」,兩節點就會產生一個條件概率值。

例如,假設節點E直接影響到節點H,即E→H,則用從E指向H的箭頭建立結點E到結點H的有向弧(E,H),權值(即連接強度)用條件概率P(H|E)來表示,如下圖所示:

簡言之,把某個研究系統中涉及的隨機變數,根據是否條件獨立繪制在一個有向圖中,就形成了貝葉斯網路。其主要用來描述隨機變數之間的條件依賴,用圈表示隨機變數(random variables),用箭頭表示條件依賴(conditional dependencies)。

此外,對於任意的隨機變數,其聯合概率可由各自的局部條件概率分布相乘而得出:

1. head-to-head

依上圖,所以有:P(a,b,c) = P(a) P(b) P(c|a,b)成立,即在c未知的條件下,a、b被阻斷(blocked),是獨立的,稱之為head-to-head條件獨立。

2. tail-to-tail

考慮c未知,跟c已知這兩種情況:

3. head-to-tail

還是分c未知跟c已知這兩種情況:

wikipedia上是這樣定義因子圖的:將一個具有多變數的全局函數因子分解,得到幾個局部函數的乘積,以此為基礎得到的一個雙向圖叫做因子圖(Factor Graph)。

通俗來講,所謂因子圖就是對函數進行因子分解得到的 一種概率圖 。一般內含兩種節點:變數節點和函數節點。我們知道,一個全局函數通過因式分解能夠分解為多個局部函數的乘積,這些局部函數和對應的變數關系就體現在因子圖上。

舉個例子,現在有一個全局函數,其因式分解方程為:

其中fA,fB,fC,fD,fE為各函數,表示變數之間的關系,可以是條件概率也可以是其他關系。其對應的因子圖為:

在概率圖中,求某個變數的邊緣分布是常見的問題。這問題有很多求解方法,其中之一就是把貝葉斯網路或馬爾科夫隨機場轉換成因子圖,然後用sum-proct演算法求解。換言之,基於因子圖可以用 sum-proct 演算法 高效的求各個變數的邊緣分布。

詳細的sum-proct演算法過程,請查看博文: 從貝葉斯方法談到貝葉斯網路

樸素貝葉斯(Naive Bayesian)是經典的機器學習演算法之一,也是為數不多的基於概率論的分類演算法。樸素貝葉斯原理簡單,也很容易實現,多用於文本分類,比如垃圾郵件過濾。**樸素貝葉斯可以看做是貝葉斯網路的特殊情況:即該網路中無邊,各個節點都是獨立的。 **

樸素貝葉斯樸素在哪裡呢? —— 兩個假設

貝葉斯公式如下:

下面以一個例子來解釋樸素貝葉斯,給定數據如下:

現在給我們的問題是,如果一對男女朋友,男生想女生求婚,男生的四個特點分別是不帥,性格不好,身高矮,不上進,請你判斷一下女生是嫁還是不嫁?

這是一個典型的分類問題,轉為數學問題就是比較p(嫁|(不帥、性格不好、身高矮、不上進))與p(不嫁|(不帥、性格不好、身高矮、不上進))的概率,誰的概率大,我就能給出嫁或者不嫁的答案!這里我們聯繫到樸素貝葉斯公式:

我們需要求p(嫁|(不帥、性格不好、身高矮、不上進),這是我們不知道的,但是通過樸素貝葉斯公式可以轉化為好求的三個量,這三個變數都能通過統計的方法求得。

等等,為什麼這個成立呢?學過概率論的同學可能有感覺了,這個等式成立的條件需要特徵之間相互獨立吧!對的!這也就是為什麼樸素貝葉斯分類有樸素一詞的來源,樸素貝葉斯演算法是假設各個特徵之間相互獨立,那麼這個等式就成立了!

但是為什麼需要假設特徵之間相互獨立呢?

根據上面倆個原因,樸素貝葉斯法對條件概率分布做了條件獨立性的假設,由於這是一個較強的假設,樸素貝葉斯也由此得名!這一假設使得樸素貝葉斯法變得簡單,但有時會犧牲一定的分類准確率。

樸素貝葉斯優點

樸素貝葉斯缺點

理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為樸素貝葉斯模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。

樸素貝葉斯模型(Naive Bayesian Model)的 樸素(Naive)的含義是"很簡單很天真" 地假設樣本特徵彼此獨立. 這個假設現實中基本上不存在, 但特徵相關性很小的實際情況還是很多的, 所以這個模型仍然能夠工作得很好。

新聞分類 GitHub: 點擊進入

【 機器學習通俗易懂系列文章 】

從貝葉斯方法談到貝葉斯網路

❹ 貝葉斯網路

貝葉斯網路是一種模擬人類推理過程中因果關系的不確定性處理模型,也是一些變數的聯合概率分布的圖形表示。通常包含兩個部分,一個是貝葉斯網路結構圖,它是一個有向無環圖(DAG),其中圖中的每個節點代表相應的變數,節點之間的連接關系代表了貝葉斯網路的條件獨立語義。另一部分,就是節點和節點之間的條件概率表(CPT),也就是一系列的概率值。如果一個貝葉斯網路提供了足夠的條件概率值,足以計算任何給定的聯合概率,我們就稱,它是可計算的,即可推理的。 什麼是貝葉斯推斷?使用貝葉斯方法處理不確定性,需要利用貝葉斯定理將先驗分布更新至後驗分布中,這無疑是最流行的方法之一。但還存在其他非貝葉斯方法,例如集中不等式就是非貝葉斯方法,它們允許計算置信區間和不確定性集合。

貝葉斯網路隨機變數的連接方式主要有順連、分連、匯連這三種連接形式。

基於python的pgmpy庫構建貝葉斯網路,其步驟是先建立網路結構, 然後填入相關參數。 1.針對已知結構及參數,先採用BayesianModel構造貝葉斯網結構

這個貝葉斯網路中有五個節點: Pollution, Cancer, Smoker, Xray, Dyspnoea.

(『Pollution』, 『Cancer』): 一條有向邊, 從 Pollution 指向 Cancer, 表示環境污染有可能導致癌症.

(『Smoker』, 『Cancer』): 吸煙有可能導致癌症.

(『Cancer』, 『Xray』): 得癌症的人可能會去照X射線.

(『Cancer』, 『Dyspnoea』): 得癌症的人可能會呼吸困難.

cancer_model
<pgmpy.models.BayesianModel.BayesianModel at 0x7f57c7f593d0>

Pollution: 有兩種概率, 分別是 0.9 和 0.1.

Smoker: 有兩種概率, 分別是 0.3 和 0.7. (意思是在一個人群里, 有 30% 的人吸煙, 有 70% 的人不吸煙)

Cancer: envidence 表示有 Smoker 和 Pollution 兩個節點指向 Cancer 節點;

測試網路結構是否正確

在構建了貝葉斯網之後, 我們使用貝葉斯網來進行推理. 推理演算法分精確推理和近似推理. 精確推理有變數消元法和團樹傳播法; 近似推理演算法是基於隨機抽樣的演算法.

Finding Elimination Order: : 100%|██████████| 1/1 [00:00<00:00, 1096.55it/s]
Eliminating: Pollution: 100%|██████████| 1/1 [00:00<00:00, 888.25it/s]
+-----------+---------------+
| Cancer | phi(Cancer) |
+===========+===============+
| Cancer(0) | 0.0320 |
+-----------+---------------+
| Cancer(1) | 0.9680 |
+-----------+---------------+

True

CPD of D:
+------+------+
| D(0) | 0.49 |
+------+------+
| D(1) | 0.51 |
+------+------+
CPD of G:
+------+---------------------+-----+---------------------+
| D | D(0) | ... | D(1) |
+------+---------------------+-----+---------------------+
| I | I(0) | ... | I(1) |
+------+---------------------+-----+---------------------+
| G(0) | 0.46320346320346323 | ... | 0.519650655021834 |
+------+---------------------+-----+---------------------+
| G(1) | 0.5367965367965368 | ... | 0.48034934497816595 |
+------+---------------------+-----+---------------------+
CPD of I:
+------+-------+
| I(0) | 0.512 |
+------+-------+
| I(1) | 0.488 |
+------+-------+
CPD of S:
+------+----------+---------------------+
| I | I(0) | I(1) |
+------+----------+---------------------+
| S(0) | 0.515625 | 0.48770491803278687 |
+------+----------+---------------------+
| S(1) | 0.484375 | 0.5122950819672131 |
+------+----------+---------------------+
CPD of L:
+------+--------------------+---------------------+
| G | G(0) | G(1) |
+------+--------------------+---------------------+
| L(0) | 0.5424430641821946 | 0.46034816247582205 |
+------+--------------------+---------------------+
| L(1) | 0.4575569358178054 | 0.539651837524178 |
+------+--------------------+---------------------+

❺ 關於輸入幾個植物特徵的智能識別系統的貝葉斯網路公式

貝葉斯分類是統計學分類方法。它們可以預測類成員關系的可能性,如給定樣本屬於一個特定類的概率。
樸素貝葉斯分類[2]假定了一個屬性值對給定類的影響獨立於其它屬性的值,這一假定稱作類條件獨立。
設定數據樣本用一個 n 維特徵向量X={x1,x2,,xn}表示,分別描述對n 個屬性A1,A2,,An樣本的 n 個度量。假定有m個類 C1,C2,,Cm 。給定一個未知的數據樣本 X(即沒有類標號),樸素貝葉斯分類分類法將預測 X 屬於具有最高後驗概率(條件 X 下)的類,當且僅當P(Ci | X)> P(Cj | X),1≤j≤m,j≠i 這樣,最大化P(Ci | X)。其中P(Ci | X)最大類Ci 稱為最大後驗假定,其原理為貝葉斯定理:
公式(1)
由於P(X) 對於所有類為常數,只需要P(X | Ci)P(Ci)最大即可。並據此對P(Ci| X)最大化。否則,最大化P(X | Ci)P(Ci)。如果給定具有許多屬性的數據集,計算P(X | Ci)P(Ci)的開銷可能非常大。為降低計算P(X| Ci )的開銷,可以做類條件獨立的樸素假定。給定樣本的類標號,假定屬性值相互條件獨立,即在屬性間,不存在依賴關系,這樣,
公式(2)
概率,可以由訓練樣本估值:
(1) 如果Ak是分類屬性,則P(xk|Ci)=sik/si其中sik是Ak上具有值xk的類Ci的訓練樣本數,而si是Ci中的訓練樣本數。
(2) 如果Ak是連續值屬性,則通常假定該屬性服從高斯分布。因而
公式(3)
其中,給定類Ci的訓練樣本屬性Ak的值, 是屬性Ak的高斯密度函數,而 分別為平均值和標准差。
樸素貝葉斯分類演算法(以下稱為NBC)具有最小的出錯率。然而,實踐中並非如此,這是由於對其應用假定(如類條件獨立性)的不確定性,以及缺乏可用的概率數據造成的。主要表現為:
①不同的檢測屬性之間可能存在依賴關系,如protocol_type,src_bytes和dst_bytes三種屬性之間總會存在一定的聯系;
②當連續值屬性分布是多態時,可能產生很明顯的問題。在這種情況下,考慮分類問題涉及更加廣泛,或者我們在做數據分析時應該考慮另一種數據分析。
後一種方法我們將在以下章節詳細討論。
3 樸素貝葉斯的改進:核密度估計
核密度估計是一種普便的樸素貝葉斯方法,主要解決由每個連續值屬性設為高斯分布所產生的問題,正如上一節所提到的。在[3]文中,作者認為連續屬性值更多是以核密度估計而不是高斯估計。
樸素貝葉斯核密度估計分類演算法(以下稱K-NBC)十分類似如NBC,除了在計算連續屬性的概率 時:NBC是使用高斯密度函數來評估該屬性,而K-NBC正如它的名字所說得一樣,使用高斯核密度函數來評估屬性。它的標准核密度公式為
公式(4)
其中h=σ 稱為核密度的帶寬,K=g(x,0,1) ,定義為非負函數。這樣公式(4)變形為公式(5)
公式(5)
在K-NBC中採用高斯核密度為數據分析,這是因為高斯密度有著更理想的曲線特點。圖1說明了實際數據的概率分布更接近高斯核密度曲線。
圖1 兩種不同的概率密度對事務中數據的評估,其中黑線代表高斯密度,虛線為核估計密度並有兩個不同值的帶寬樸素貝葉斯演算法在計算μc和σc時,只需要存儲觀測值xk的和以及他們的平方和,這對一個正態分布來說是已經足夠了。而核密度在訓練過程中需要存儲每一個連續屬性的值(在學習過程中,對名詞性屬性只需要存儲它在樣本中的頻率值,這一點和樸素貝葉斯演算法一樣)。而為事例分類時,在計算連續值屬性的概率 時,樸素貝葉斯演算法只需要評估g一次,而核密度估計演算法需要對每個c類中屬性X每一個觀察值進行n次評估,這就增加計算存儲空間和時間復雜度,表1中對比了兩種方法的時間復雜度和內存需求空間。
4 實驗研究與結果分析
本節的目標是評價我們提出核密度評估分類演算法對入侵審計數據分類的效果,主要從整體檢測率、檢測率和誤檢率上來分析。
表1 在給定n條訓練事務和m個檢測屬性條件下,
NBC和K-NBC的演算法復雜度

樸素貝葉斯 核密度
時間 空間 時間 空間
具有n條事務的訓練數據 O(nm) O(m) O(nm) O(nm)
具有q條事務的測試數據 O(qm) O(qnm)

4.1 實驗建立
在實驗中,我們使用NBC與K-NBC進行比較。另觀察表1兩種演算法的復雜度,可得知有效的減少檢測屬性,可以提高他們的運算速度,同時刪除不相關的檢測屬性還有可以提高分類效率,本文將在下一節詳細介紹對稱不確定方法[4]如何對入侵審計數據的預處理。我們也會在實驗中進行對比分析。
我們使用WEKA來進行本次實驗。採用 KDDCUP99[5]中的數據作為入侵檢測分類器的訓練樣本集和測試樣本集,其中每個記錄由41個離散或連續的屬性(如:持續時間,協議類型等)來描述,並標有其所屬的類型(如:正常或具體的攻擊類型)。所有數據分類23類,在這里我們把這些類網路行為分為5大類網路行為(Normal、DOS、U2R、R2L、Probe)。
在實驗中,由於KDDCUP99有500多萬條記錄,為了處理的方便,我們均勻從kddcup.data.gz 中按照五類網路行為抽取了5萬條數據作為訓練樣本集,並把他們分成5組,每組數據為10000條,其中normal數據占據整組數據中的98.5%,這一點符合真實環境中正常數據遠遠大於入侵數據的比例。我們首
先檢測一組數據中只有同類的入侵的情況,共4組數據(DOS中的neptune,Proble中的Satan,U2R中的buffer_ overflow,R2l中的guess_passwd),再檢測一組數據中有各種類型入侵數據的情況。待分類器得到良好的訓練後,再從KDD99數據中抽取5組數據作為測試樣本,分別代表Noraml-DOS,Normal-Probe,Normal-U2R,Normal-R2L,最後一組為混後型數據,每組數據為1萬條。
4.2 數據的預處理
由於樸素貝葉斯有個假定,即假定所有待測屬性對給定類的影響獨立於其他屬性的值,然而現實中的數據不總是如此。因此,本文引入對稱不確定理論來對數據進行預處理,刪除數據中不相關的屬性。
對稱不確定理論是基於信息概念論,首先我們先了解一下信息理論念,屬性X的熵為:
公式(6)
給定一個觀察變數Y,變數X的熵為:
公式(7)
P(xi )是變數X所有值的先驗概率,P(xi|yi )是給定觀察值Y,X的後驗概率。這些隨著X熵的降低反映在條件Y下,X額外的信息,我們稱之為信息增益,
公式(8)
按照這個方法,如果IG(X|Y)>IG(X|Y),那麼屬性Y比起屬性Z來,與屬性X相關性更強。
定理:對兩個隨機變數來說,它們之間的信息增益是對稱的。即
公式(9)
對測量屬性之間相關性的方法來說,對稱性是一種比較理想的特性。但是在計算有很多值的屬性的信息增益時,結果會出現偏差。而且為了確保他們之間可以比較,必須使這些值離散化,同樣也會引起偏差。因此我們引入對稱不確定性,
公式(10)
通過以下兩個步驟來選擇好的屬性:
①計算出所有被測屬性與class的SU值,並把它們按降序方式排列;
②根據設定的閾值刪除不相關的屬性。
最後決定一個最優閾值δ,這里我們通過分析NBC和K-NBC計算結果來取值。
4.3 實驗結果及分析
在試驗中,以記錄正確分類的百分比作為分類效率的評估標准,表2為兩種演算法的分類效率。

表2 對應相同入侵類型數據進行檢測的結果
數據集

演算法 DOS
(neptune) Proble
(satan) R2L
( guess_passwd) U2R
(buffer_overflow)
檢測率 誤檢率 整體檢測率 檢測率 誤檢率 整體檢測率 檢測率 誤檢率 整體檢測率 檢測率 誤檢率 整體檢測率
NBC 99.5 0.2 99.79 98.3 0.1 99.84 97.3 0.8 99.2 95 1.8 98.21
K-NBC 99.5 0.2 99.96 98.3 0 99.96 97.3 0.2 99.81 71 0.1 99.76
SU+NBC 99.5 0 99.96 98.3 0.1 99.85 98 0.7 99.24 9 1.1 98.84
SU+K-NBC 99.5 0 99.96 98.3 0 99.96 98.7 0.2 99.76 85 0.1 99.81

根據表2四組不同類別的入侵檢測結果,我們從以下三個方面分析:
(1)整體檢測率。K-NBC的整體檢測率要比NBC高,這是因為K-NBC在對normal這一類數據的檢測率要比NBC高,而normal這一類數據又占整個檢測數據集數的95%以上,這也說明了在上一節提到的normal類的數據分布曲線更加接近核密度曲線。
(2)檢測率。在對DOS和PROBLE這兩組數據檢測結果,兩個演算法的檢測率都相同,這是因為這兩類入侵行為在實現入侵中占絕大部分,而且這一類數據更容易檢測,所以兩種演算法的檢測效果比較接近;針對 R2L檢測,從表2可以看到,在沒有進行數據預處理之前,兩者的的檢測率相同,但經過數據預處理後的兩個演算法的檢測率都有了提高,而K-NBC的效率比NBC更好點;而對U2R的檢測結果,K-NBC就比NBC差一點,經過數據預處理後,K-NBC的檢測率有一定的提高,但還是比NBC的效果差一些。
(3)誤檢率。在DOS和Proble這兩種組數據的誤檢率相同,在其他兩組數據的中,K-NBC的誤檢率都比NBC的低。
根據表3的結果分析,我們也可以看到的檢測結果與表2的分組檢測的結果比較類似,並且從綜合角度來說,K-NBC檢測效果要比NBC的好。在這里,我們也發現,兩種演算法對R2L和U2L這兩類入侵的檢測效果要比DOS和Proble這兩類入侵的差。這主要是因為這兩類入侵屬於入侵行為的稀有類,檢測難度也相應加大。在KDD99競賽中,冠軍方法對這兩類的檢測效果也是最差的。但我們可以看到NBC對這種稀有類的入侵行為檢測更為准確一點,這應該是稀有類的分布更接近正態分布。
從上述各方面綜合分析,我們可以證明K-NBC作為的入侵檢測分類演算法的是有其優越性的。

表3 對混合入侵類型數據進行檢測的結果
數據集

演算法 整體檢測 分類檢測
Normal Dos Proble R2L U2R
檢測率 誤檢率 檢測率 誤檢率 檢測率 誤檢率 檢測率 誤檢率 檢測率 誤檢率 檢測率 誤檢率
NBC 98.14 1.8 98.2 0.8 99.8 0 99.8 0 90 0 86.7 1.8
K-NBC 99.78 0.2 99.8 2.3 99.8 0 99.8 0 96 0 73.3 0.1
SU+NBC 97.99 2.0 98 0.8 99.8 0 99.8 0 90 0 86.7 1.9
SU+K-NBC 99.79 0.2 99.8 1.9 99.8 0 99.8 0 96 0 80 0.1

5 結論
在本文中,我們用高斯核密度函數代替樸素貝葉斯中的高斯函數,建立K-NBC分類器,對入侵行為進行檢測,另我們使用對稱不確定方法來刪除檢測數據的中與類不相關的屬性,從而進一步改進核密度樸素貝葉斯的分類效率,實驗表明,對預處理後的審計數據,再結合K-NBC來檢測,可以達到更好的分類效果,具有很好的實用性。同時我們也注意到,由於入侵檢測的數據中的入侵行為一般為稀有類,特別是對R2L和U2R這兩類數據進行檢測時,NBC有著比較理想的結果,所以在下一步工作中,我們看是否能把NBC和K-NBC這兩種分類模型和優點聯合起來,並利用對稱不確定理論來刪除檢測數據與類相關的屬性中的冗餘屬性,進一步提高入侵檢測效率。

❻ 初識貝葉斯

什麼貝葉斯定理、貝葉斯方法、貝葉斯網路這種,外行人一聽頭就疼,這完全沒有乘法分配律乘法結合律來的親民啊!實際上,他確實不親民(攤手)

那我們就從如何著手去處理貝葉斯網路為目標, 好好看,好好學 (這是文章基於的框架結構,在此基礎上進行了補充說明)。

咱先整抓球,一個不透明的帶子,裡面有4個除了顏色完全相同的球:2紅1綠1藍。此時你去隨手抓,那問你抓到各個顏色球的概率是多少?我想是個正常人都會說:那不50%、25%、25%?這是不論你取多少次,概率θ始終不變的事件,即不隨觀察結果X的變化而變化。

顯然啊!那不然會是什麼呢?

這種觀點長期統治著人們,或者說,統治著正常人,這叫頻率派觀點。直到有個叫Thomas Bayes的人出來攪局。

貝葉斯不介紹了,生前民間學術「屌絲」,身後顛覆了概率史啊。這里說一下他最終發表的一篇多年後轟動世界的文章:An essay towards solving a problem in the doctrine of chances(機遇理論中一個問題的解)

回到上面這個問題,袋子里取紅球的概率θ是多少?正常人都說50%,貝葉斯說「NO!」。他認為取的紅球的概率是個不確定的值,因為其中含有機遇的成分。

是不是不好理解了?那我們換個例子來講(這個抓球有什麼機遇,我也不懂,但大佬都以這些開頭,所以咱換個例子)

78澤幹了兩年程序員,現在想自己創業開個外包公司。這個結果無非「走向人生巔峰」和「欠一屁股債」,要麼成功要麼失敗。現在我們大家來估計一下他成功的概率有多大?你們可能會說:「這誰啊,兩年就創業,嚇他個鬼,不可能的。成功幾率最多5%。」而我對他的為人比較了解,他有想法,有方法,有思路,還有毅力,能吃苦,還有情調,有凝聚力,還為他人著想等,那我就估計他成功的概率有75%以上。

這種不同於最開始的「非黑即白、非0即1」的思考方式,就是貝葉斯式的思考方式。

【頻率派】把需要推斷的參數θ看作是固定的未知常數,即概率雖然是未知的,但最起碼是確定的一個值,同時,樣本X是隨機的,即不管球幾紅幾綠,事件的概率θ一定。所以頻率派重點研究樣本空間,大部分的概率計算都是針對樣本X的分布;

【貝葉斯派】認為參數θ是隨機變數,而樣本X是固定的。由於樣本X固定,所以他們重點研究的是參數θ的分布。

這樣,貝葉斯派提出了一個思考問題的固定模式:

先驗分布π(θ)+ 樣本信息X ==> 後驗分布π(θ|x)

這意味著,新觀察到的樣本信息將修正人們以前對事物的認知。換而言之,在得到新的樣本信息前,人們對θ的認知是先驗分布π(θ),在得到新的樣本信息X後,人們對θ的認知受其影響變為π(θ|x)。

先驗信息一般來源於經驗和歷史資料,比如在S7以前的SKT VS RNG,解說總會根據歷年比賽結果進行一個勝負的預判來相應解說。但從S7,S8這兩個賽季後,發現韓國隊不行了!那麼現在你再看SKT VS RNG,可就不一定了不是嗎?那是不是就是X影響了π(θ)得到了π(θ|x)。

後驗分布π(θ|x)一般也認為是在給定樣本X的情況下的θ條件分布,而使π(θ|x)達到最大的值θMD,這個θMD稱謂最大後驗估計,類似於統計學的極大似然估計。

這里插曲一下,似然和概率,很多人其實都不明白這是啥區別。似然(likelihood)在非正式場合中和概率(probability)幾乎相同。但在統計學中完全不同。概率是在特定環境下某件事發生的可能性,也就是結果沒有產生之前依據環境所對應的參數來預測某件事情發生的可能性;而似然正好相反,是在確定的結果下去推測產生這個結果的可能環境(參數)。

結果和參數相互對應的時候,似然和概率在數值上是相等的。 了解更多似然,點擊這里

當然除了上述思考模式,還有舉世聞名的貝葉斯定理。

先回顧幾個名詞

條件概率(又稱後驗概率)就是事件A在另外一個事件B已經發生的條件下發生的概率P(A|B):

自己花幾個圓圈就能推導出這個公式了。

聯合概率表示兩個事件共同發生的概率:

邊緣概率(又稱先驗概率)是某個事件發生的概率。邊緣概率是這樣得到的:在聯合概率中,把最終結果中那些不需要的事件通過合並成它們的全概率從而消去它們(對離散隨機變數用求和得全概率,連續隨機變數用積分得全概率),這稱為邊緣化(marginalization),比如A的邊緣概率表示為P(A),B的邊緣概率表示為P(B)。

現在考慮問題:P(A|B)是在B發生的情況下A發生的可能性。

(1)首先,B發生之前,對事件A發生的基本概率判斷為A的先驗概率P(A);

(2)其次,事件B發生後,我們對事件A發生概率重新評估,稱為A的後驗概率P(A|B);

(3)類似,事件A發生前,對B的先驗概率P(B);

(4)事件A發生後,B後驗概率P(B|A)。

貝葉斯定理如下:

推導證明如下:

上式兩邊同時除以P(B),若P(B)非零,變得到貝葉斯定理公式表達式。

上述為傳統的貝葉斯公式寫法,還有另一種寫法,稱之為貝葉斯推斷。

對條件概率公式進行變形,得到如下形式:

P(A)稱為先驗概率,P(A|B)為後驗概率,而P(B|A)/P(B)稱之為可能性函數(likelyhood),這是一個調整因子,使得預估概率更接近真實概率。

貝葉斯推斷的含義:我們先預估一個先驗概率,然後加入實驗結果,看這個實驗到底是增強還是削弱了先驗概率,由此得到更接近事實後驗概率。

這里,可能性函數>1,意味著先驗概率被增強,事件A的發生可能性變大;可能性函數=1,意味著B事件無助於判斷事件A的可能性;可能性函數<1,意味著先驗概率被削弱,事件A的可能性變小。

舉例加深理解:

【1】水果糖問題

兩個一模一樣的碗,一號碗中有30顆水果糖和10顆巧克力,二號碗有水果糖和巧克力各20顆。現在隨機選擇一個碗,從中摸出一顆糖,發現時水果糖。請問這個水果糖來自一號碗的概率是多少?

解:我們假定,H1表示碗一,H2表示碗二,有條件已知P(H1)=P(H2),即在取出水果糖之前,這兩個碗被選中的概率相同。因此P(H1)=0.5,此為先驗概率。

再假定E表示水果糖,所以問題變為已知E的情況下,來自碗一的概率有多大:求P(H1|E)。我們把這個稱為後驗概率,即E事件發生後,對P(H1)的修正。

根據條件概率公式,得到

已知:P(H1)=0.5,P(E|H1)=0.75,那麼求出P(E)就可以得到答案,根據全概率公式(推導根據條件概率公式推就行了)

得到:

將已知帶入得P(E)=0.625,最後將結果帶入原方程,得到P(H1|E)=0.6,也就是說取出水果糖後,H1事件的可能性得到了增強(P(E|H1)/P(E)=0.75/0.625=1.2>1)。

貝葉斯公式還有一個最經典也是目前最廣泛的應用:拼音糾錯,谷歌的拼音檢查就是基於貝葉斯方法。

《人工智慧:現代方法》作者之一Peter Norvig曾寫一篇介紹如何寫一個拼寫檢查的文章( 原文 ),使用的也是貝葉斯方法。

用戶輸入一個單詞,可能拼寫正確,也可能拼寫錯誤。如果把拼寫正確的情況記做c,錯誤記做w,那麼拼寫檢查要做的事情就是:在發生w的情況下,試圖推斷出c,換而言之,就是已知w,然後在若干個備選方案中,找出可能性最大的那個c,即求P(c|w)的最大值。

由於對於所有備選的c來說,對應的都是同一個w,所以它們的P(w)相同,因此我們只需要最大化P(w|c)*P(c)。

其中P(c)表示某個正確的單詞出現的「概率」,它可以用「頻率」代替。如果我們有一個足夠大的文本庫,那麼這個文本庫中每個單詞的出現頻率,就相當於它的發生概率。某個詞的出現頻率越高,P(c)就越大。比如在你輸入一個錯誤的單詞「tes」的時候,系統更傾向於「tea」,而不是「tee」,因為tea更常見。

當然這其中要是深究,還有更多的可能性,比如說錯誤字母與正確字母在鍵盤上的位置,也許你是按錯了所以會拼錯,但實際上你要拼寫的單詞就是那個頻率低的單詞,是不是?在這里,初學,咱先放一放。

P(w|c)表示在試圖拼寫c的情況下,出現拼寫錯誤w的概率。為了簡化問題,假定兩個單詞在字形上越接近,就越有可能拼錯,P(w|c)就越大。舉例來說,相差一個字母的拼法,就比相差兩個字母的拼法,發生概率越高。你想拼寫「july」,錯誤拼成「julw」的可能性就比錯拼成「jullw」高很多。一般把這種問題稱為「編輯距離」。

貝葉斯網路(Bayesian Network),又稱信念網路(Belief Network),或有向無環圖模型,十一中概率圖模型。它是一種模擬人類推理過程中因果關系的不確定性處理模型,其網路拓撲結構是一個有向無環圖(DAG,direvted acyclic graphical)。

貝葉斯網路中節點表示隨機變數,認為有因果關系(或非條件獨立)的變數或命題則用剪頭來連接。

例如,假設節點E直接影響到節點H,即E-->H,則用從E指向H的箭頭建立節點E到節點H的有向弧(E,H),權值(即連接強度)用條件概率P(H|E)來表示。

簡而言之,把某個研究系統中涉及的隨機變數,根據是否條件獨立繪制在一個有向圖中,就形成了貝葉斯網路。其主要用來描述隨機變數之間的條件依賴,用圈表示隨機變數(random variables),用箭頭表示條件依賴(conditional dependencies)。

關於隨機變數,這里不同於普通公式中的x,z那種未知數,之前專門研究過,但是參考的網址找不到了。隨手記了一些筆記,分享一下(字丑):

令G=(I,E)表示一個有向無環圖(DAG),其中I代表圖形中所有的節點的集合,而E代表有向連接線段的集合,且令X=(Xi),i∈I為其有向無環圖中某一節點i所代表的隨機變數,若節點X的聯合概率可以表示成:

則稱X為相對於一有向無環圖G的貝葉斯網路,其中,pa(i)表示節點i的「因」,也可以理解為「父節點」。

給訂如下圖所示的一個貝葉斯網路:

由圖可知:

(1)x1,x2,......,x7的聯合分布為:

(2)x1和x2獨立(head-to-head);

(3)x6和x7在x4給訂的條件下獨立(tail-to-tail)。

根據上圖,(1)很好理解,(2、3)所述的條件獨立是什麼意思呢?其實2、3點是貝葉斯網路中3個結構的其中兩種。為了說清楚這個問題,需要引入D-Separation(D-分離)這個概念。

D-Separation是一種用來判斷變數是否條件獨立的圖形化方法。換而言之,對於一個DAG,D-Separation方法可以快速的判斷出兩個節點之間是否條件獨立。

有:P(a,b,c)=P(a)* P(b)* P(c|a,b)成立,化簡如下:

在c未知的條件下,a、b被阻斷(blocked),是獨立的,稱之為head-to-head條件獨立,對應本節圖1的x1,x2獨立。

考慮c未知和已經兩種情況:

1、在c未知的時候,有:P(a,b,c)=P(c)P(a|c)P(b|c),此時,無法得出P(a,b)=P(a)P(b),即c未知時,a、b不獨立;

2、在c已知的時候,有:P(a,b|c)=P(a,b,c)/ P(c),然後將P(a,b,c)=P(c)P(a|c)P(b|c)帶入此式中,得到:P(a,c|c)=P(a,b,c)/ P(c)=P(c)P(a|c)P(b|c)/P(c)=P(a|c)P(b|c),即c已知時,a、b獨立。

所以,在c給定的條件下,a、b被blocked,式獨立的,稱之為tail-to-tail條件獨立,對應本節圖1中「x6,x7在x4給定的條件下獨立」。

分c未知和已知兩種情況:

1、c未知時,有:P(a,b,c)=P(a)*P(c|a)*P(b|c),但無法推出P(a,b)=P(a)P(b),即c未知時,a、b不獨立;

2、c已知時,有:P(a,b|c)=P(a,b,c)/ P(c),且根據P(a,c)=P(a)P(c|a)=P(c)P(a|c),可化簡得到:

所以在給定c的條件下,a、b被blocked,是獨立的,稱之為head-to-tail條件獨立。

head-to-tail其實就是一個鏈式網路,在xi給定的條件下,xi+1的分布和x1,x2,...,xi-1條件獨立。這意味著什麼?這說明xi+1的分布狀態只和xi有關,和其他變數都無關!通俗一點說,當前狀態只跟上一狀態有關,跟上上次或上上上上上上上次狀態都無關!這種順次演變的隨機過程,就叫做馬爾科夫鏈(Markov chain)。有:

將上述節點推廣到節點集,則:對於任意的節點集A,B,C,考察所有通過A中任意節點到B中任意節點的路徑,若要求A,B條件獨立,則需要所有的路徑都被blocked,即滿足下列兩個前提之一:

A和B的「head-to-tail」和「tail-to-tail」路徑都通過C;

A和B的「head-to-head」路徑不通過C及C的子孫;

最後舉例說明上述D-Separation的3種情況(即貝葉斯網路的3種結構形式):

Factor Graph是概率圖的一種,概率圖有多重,最常見的就是Bayesian Network和Markov Random Fields(馬爾科夫隨機場)。

在概率圖中,求某個變數的邊緣分布是最常見的問題。這個問題有很多種求解方法,其中之一就是可以把Bayesian Network和Markov Random Fields轉換成Factor Graph,然後用sum-proct演算法求解。

以下圖為例:

對於上圖,在一個人已經呼吸困難(dyspnoea)的情況下,其抽煙(smoking)的概率是多少?

P(smoking | dyspnoea = yes)= ?

繼續推算如下:(這里我就不自己碼了,好多箭箭頭有點麻煩的,還是用原圖簡單明了)

對上述推導過程作解釋如下:

1.第二行:對聯合概率關於b,x,c求和(在d=1的條件下),從而消去b,x,c,得到s和d=1的聯合概率;

2.第三行:最開始,所有變數都在sigma(d=1,b,x,c)的後面,但由於P(s)跟「d=1,b,x,c」都沒關系,可以提到式子的最前面。而且P(b|s)和x、c沒關系,所以也可以把它提出來,放到sigma(b)後,從而式子的右邊剩下sigma(x)和sigma(c)。

(ps:這塊看能看明白,至於為什麼sigma(x)和sigma(c)不能寫在一起,我也,哈哈哈~等之後再來補空擋,這里先記著。)

上圖中Variable elimination表示的是變數消除的意思。為此引入因子圖的概念。

定義異常的晦澀難懂,你光看著名字你就摸不著頭腦,所以咱先通俗來講,所謂因子圖就是對函數進行因式分解得到的一種概率圖。一般內含兩種節點:變數節點和函數節點。眾所周知,一個全局函數通過因式分解能夠分解為多個局部函數的乘積,這些局部函數和對應的變數關系就體現在因子圖上。

舉例說明,現有一全局函數,其因式分解方程為:

其中fA、fB、fC、fD、fE為各函數,表示變數之間的關系,可以是條件概率也可以是其他關系(如Markov Random Fields中的勢函數)。

其因子圖為:

在因子圖中,所有的頂點不是變數節點就是函數節點,邊線表示他們之間的函數關系。

提及馬爾科夫隨機場,就再補充一些概念:

我們知道,有向圖模型,稱之為貝葉斯網路。但有些情況下,強制對某些節點之間的邊增加方向是不合適的。使用沒有方向的無向邊,形成了無向圖模型(Undirected Graphical Model,UGM),又被稱為馬爾科夫隨機場或者馬爾科夫網路(MRF or Markov Network)。

回歸本文主旨,首先我們舉例說明如何把貝葉斯網路(和MRF),以及把馬爾科夫鏈、隱馬爾科夫模型轉換成因子圖,以上圖為例,根據各個變數對應的關系,可得:

其對應的因子圖為(以下兩種皆可):

有上述例子總結出貝葉斯網路構造因子圖的方法:

·貝葉斯網路中的一個因子對應因子圖中的一個節點

·貝葉斯網路中的每一個變數在因子圖上對應邊或者半邊

·節點g和邊x相連當且僅當變數x出現在因子g中

我把繪圖的思考過程寫下來,你跟著畫一遍就會明白:

1.找出已存在的先驗概率,圖中為P(u)和P(w),那麼因子對應節點,所以先畫出P(u)和P(w)的節點,就是兩個框;然後因子P(u)中出現的變數是u,那麼由P(u)節點引出一條邊,這條邊就是u,同理P(w)引出w邊;

2.發現因子P(x|u,w)知,x是u和w下的條件概率,故做節點P(x|u,w),然後將邊u和w與之相連,並有該節點引出x邊;

3.有因子P(y|x)和P(z|x)發現基於條件x引出兩個變數y和z,那麼此時需要將X邊拆分成兩條邊(我猜想這個可能就叫半邊,沒有專門去查),並分別接入到P(y|x)和P(z|x)節點,再由各自節點對應引出y邊與z邊,結束作圖。

對馬爾科夫鏈轉換的因子圖和隱馬爾科夫模型轉換而成的因子圖,做法相同。這里等以後專門講馬爾科夫的時候再仔仔細細說。這里把圖貼出來給大家了解一下(應該可以很快看明白):

到這,我們算把因子圖講透了,現在看看維基網路上是這樣定義因子圖的:將一個具有多變數的全局函數因子分解,得到幾個局部函數的乘積,以此為基礎得到的一個雙向圖叫做因子圖。

怎麼樣,這樣直接看定義,你懂嗎?

我們已經學會如何畫因子圖了,下面來思考這樣一個問題:如何由聯合概率分布求邊緣概率分布?

這里給出公式:

對Xk以外的其他變數的概率求和,最終剩下Xk的概率。這就是該定義的原理。你明白了嗎?我有點迷糊反正,可能說成話好理解,但是這個公式未免也太模糊了點(f真的萬能)。

其實可以這么理解:

如果有:

那麼:

就是說把除了xk以外的所有隨機變數的概率求出來,這個f就表示一個多項式,是關於f括弧裡面x的。然後概率上面有一橫,表示的是不發生概率。

好吧,其實這塊我也沒太明白,先埋個坑,以後回來填。

現在假定我們要計算:

同時,f能被分解成如下因子圖(看到這里你大概能明白一點我上面說的f是多項式是什麼意思了):

我們都知道乘法分配律:a * b + a * c = a * (b + c),等號左邊兩乘一加,等號右邊一加一乘,效率不用多說。現在我們就藉助分配律的思想,把因子圖給分配咯!

怎麼看公因子很簡單,例如X3是有f1(x1)和f2(x2)通過f3這個函數得來的(即因子圖那節所述,P(x3|x1,x2)),而之後的f5需要x3做因子(條件),所以自然左邊這個框就成了公因子。

因為變數的邊緣概率等於所有與他相連的函數傳遞過來的消息的乘積,所以計算得到:

觀察上述計算過程,可以發現類似於「消息傳遞」的觀點,且總共有兩個步驟:

1.對於f的分解圖,根據左框(藍色)、右框(紅色)所包圍的兩個box外面的消息傳遞:

2.根據紅藍框為主的兩個box內部的消息傳遞:

看上圖消息傳遞的方向(箭頭),根據

我們可以推導出:

這樣就將一個概率分布寫成了兩個因子的乘積,而這兩個因子可以繼續分解或者通過已知條件得到。這種利用消息傳遞的觀念計算概率的方法就是sum-proct演算法。基於因子圖可以用該演算法高效地求出各個變數的邊遠分布。

sum-proct演算法,又稱belief propagation,有兩種消息:

一種是變數(variable)到函數(function)的消息 如下圖所示:

此時,

另一種是函數到變數的消息 如下圖所示:

此時,

如果因子圖是無環圖,則一定可以准確地求出任意一個變數的邊遠分布;如果是有環圖,則無法用該演算法准確求出邊遠分布。解決方法有3個:

1、刪除貝葉斯網路中的若干邊,使其不含有無向環

2、重新構造沒有環的貝葉斯網路

3、選擇loopy belief propagation演算法(sum-proct的遞歸版演算法),該演算法選擇環中某個消息,隨機賦初值,然後用sum-proct演算法,迭代下去,因為環的存在所以一定會達到賦值的消息,然後更新該消息,繼續迭代,直至沒有消息改變為止。缺點是不能確保收斂。

最後,該演算法有個類似的max-proct演算法,弄懂了sum的,max的幾乎完全一樣。另這兩個演算法也能夠應用到隱馬爾科夫模型(hidden Morkov models)上。至於馬爾科夫系列,下個專題咱再見~

❼ 貝葉斯網路基本原理

貝葉斯網路又稱信念網路,是有向無環圖的網路拓撲結構和貝葉斯概率方法有機結合的模型表示,描述了各個數據項及其相互間的依賴關系。一個 BN 包括了一個拓撲結構模型和與之相關的一組條件概率參數。結構模型是一個有向無環圖,每個節點則表示一個隨機變數,是對於狀態、過程、事件等實體的某個特性的形象描述,其中的有向邊則表示隨機變

量之間的條件依賴關系。BN 中每個節點( 除根節點外) 都有一個給定其父節點情況下的條件概率分布。2. 1. 1 貝葉斯網路定理

BN 是一種概率網路,即基於概率推理的圖形化網路,這個概率網路的基礎是貝葉斯公式。我們先來看一看貝葉斯基本公式。

定義 2. 1 條件概率: 設 X、Y 是兩個事件,且 P( X) >0,稱

基於BN+GIS新技術的突水態勢研究

為在事件 X 發生的條件下事件 Y 發生的條件概率。

定義 2. 2 聯合概率: 設 X,Y 是兩個事件,且 P( X) >0,它們的聯合概率為:

基於BN+GIS新技術的突水態勢研究

定義2.3全概率公式:設試驗E的樣本空間為S,X為E的事件,Y1,Y2,…,Yn為E的一組事件,滿足:

基於BN+GIS新技術的突水態勢研究

定義2.4貝葉斯公式:根據定義2.1、定義2.2和定義2.3,很容易推得眾所周知的貝葉斯公式:

基於BN+GIS新技術的突水態勢研究

2. 1. 2 貝葉斯網路的拓撲結構

BN 是一個具有概率分布的有向無環圖( Directed Acyclic Graph) ,其中每個節點代表一個數據變數或者屬性,節點間的弧段代表數據變數( 屬性) 之間的概率依賴關系。一條弧段由一個數據變數( 屬性) X 指向另外一個數據變數( 屬性) Y,說明數據變數 X 的取值可以對數據變數 Y 的取值產生影響。既然是有向無環圖,因此 X,Y 間不構成有向迴路。在 BN 當中,連接兩個節點的一條弧 XY 中的弧頭節點( 直接的原因節點) X 叫做弧尾節點( 結果節點) Y 的雙親節點( Parents) ,Y 叫做 X 的孩子節點( Children) 。如果從節點 A 有一條有向通路指向 B,則稱節點 A 為節點 B 的祖先( Ancestor) ,同時稱節點 B 為節點 A 的後代( Descendent) 。

BN 能夠利用簡單明了的圖形表達方式定性地表示事件間復雜的概率關系和因果關系,在給定某些先驗信息後,還可以定量地表示這些因果概率關系。BN 的拓撲結構通常是根據具體的問題和研究對象來確定的。目前如何通過結構學習自動確定和優化網路的拓撲結構是 BN 的一個研究熱點。

2.1.3 條件獨立性假設

條件獨立性假設是BN進行定量推理的理論基礎,可以減少先驗概率的數目,從而大大地簡化推理和計算過程。

BN的條件獨立性假設的一個很重要的判據就是著名的分隔定理(D-Separation):

定義2.5阻塞:G=(V(G),E(G))為一個有向非循環圖,s是其中的一條鏈。當s包含3個連續的節點x,y,z,滿足以下3種情況之一,我們稱s被節點集合W(WV(G))阻塞:

(1)z∈W,s上存在弧x→z和z→y;

(2)z∈W,s上存在弧x←z和z→y;

(3)s上存在弧x→z和z←y,σ(z)∩W=,σ(z)表示z以及z的所有子孫節點的集合。

圖2.1 阻塞的3種情形

定義2.6阻塞集:兩個節點x和y間的所有路徑都被節點集合Z所阻塞,則稱集合Z為x,y兩個節點間的阻塞集。

定義2.7D-Separation:令X,Y和Z是一個有向無環圖G中3個不相交節點的子集,如果在集合X和Y中所有節點間的所有路徑都被集合Z所阻塞,則稱集合X,Y被Z集合(d-separation),表示為<X,Y|Z>G,也稱Z為X和Y的切割集。否則,稱在給定集合Z下集合X和Y的圖形依賴。

這個判據指出,如果Z隔離了X和Y時,那麼可以認為X與Y是關於Z條件獨立的,即:P(X|Y,Z)=P(X|Y)。

❽ 用GeNIe2.0軟體如何構建貝葉斯網路各節點的先驗概率怎麼輸入到軟體中啊

滑鼠放在節點上,點擊右鍵,選擇 Node Properties,選擇 Definition 選項卡,,在該頁面內輸入條件概率。

❾ 貝葉斯決策論及貝葉斯網路

對於一個數據進行分類,那麼數據的屬性信息稱為x,如果知道後驗概率的情況下即能得到確定x的情況下分類為ci的概率。這時我們還需要一個損失的權值,λij稱為i錯判為j的損失(λii為0,一般λij都相等=1但具體情況可以具體分配),由前邊得到的後驗概率來乘上這個λ的參數這就叫做條件風險(conditional risk)。

那麼我們可以設計一個映射關系h,從x->c可以將結果帶入條件風險,求整體風險最小。
但是其中後驗概率很難在現實任務中取到,所以引入機器學習的目標的就是去訓練這樣一個後驗概率(從大量的樣本數據中)當然也有兩種方式:

可以看到前邊判別類別的決策樹,bp,svm都是判別式模型。(從這里看出我們的終極目標還是去計算 p(c|x) ,符合現實的要求。)

根據貝葉斯定理,要求聯合概率分布,可以通過 p(c )*p(x|c)/p(x) 來得到,前者是類先驗概率,後者是類條件概率,或者稱似然。
p(x) 是用於歸一化的證據因子,對於給定的樣本x,證據因子和類標記無關。(證據因子的存在知識為了保證各類別的後驗概率的總和為1,所以在固定x的情況下這一項相當於常數,在比較時不做考慮)

但如果x樣本的屬性很多或者是一個連續值,那麼樣本個數是不可能完全模擬到所有的取值的,更不用說還要去計算他們出現的聯合概率了,也就是說得到的 p(x|c) 會有很多零值。
那麼無法通過樣本來進行模擬分布,可以用mle(極大似然估計)的方法,通過設定一個通用的分布函數(如:正態分布,不一定是正態,所以這個假設存在一定誤差,或者說我們在指定假設分布形式時需要參考一定的先驗知識(也就是我們訓練數據的風格))然後通過訓練分布中的參數來讓極大似然最大。

1.樸素貝葉斯分類器:(naïve bayes classification)
條件:
將所有的屬性假設為相互獨立也就是每個屬性獨立地對分類結果發生影響,這個想法很天真,很夢幻。
當然有了這個假設就很好計算了,計算聯合分布的過程:通過訓練集D來得到類先驗概率然後再得到類條件概率。對於離散的取值數據量夠可以直接用取值在訓練集D中的概率直接估計,對於離散取值過多,或者是連續取值的情況可以用最大似然來做估計。
然後通過計算和比較 p(c=1,x) 和 p(c=2,x) 的大小,來或者最後輸出c是判為1還是2。
因為離散取值會因為在數據集中找不到而變成概率為0,這樣會影響所有的判斷,這樣就可以通過一個平滑處理(如:拉普拉斯修正)來將其修正為 (Dci+1)/(Dc+Nx) ,Dci為類別為c,x屬性取值為i的個數,Nx為屬性x的可能的取值數。同理對於類先驗也要進行平滑處理。(這樣的平滑操作算是一種先驗,而且隨著樣本集增大影響逐漸減少的趨向於真實值。)

2.半樸素貝葉斯分類器(semi-naïve bayes classification)
條件:
既然所有屬性都假設為相互獨立過於天真,那麼我們假設一種獨依賴,也就是假設每一個屬性在類別之外最多僅依賴於一個其他屬性。我們稱這種假設為semi-naïve 的假設。
那麼這樣的獨依賴也會有一些設計的方式:
1.都依賴於一個相同的父屬性(SPODE);
2.隨機依賴於除自己以外的其他的屬性,但要讓生成的樹達到最大的權值(權值由兩個屬性之間的條件互信息來決定),構成最大帶權生成樹(TAN)。
但是因為有無環的性質,所以無論哪一種最後一定會有一個屬性是沒有父依賴的。

3.非樸素貝葉斯--貝葉斯網路:(放棄之前「天真」的假設)

條件:
前邊半樸素通過圖連接來刻畫屬性之間的依賴關系,那麼同樣貝葉斯網路也在用這種有向無環圖來刻畫屬性之間的依賴關系,並用條件概率表(CPT,conditional probability table)作為邊的參數也就是(整個貝葉斯網路的參數)主要是子屬性和父屬性相對應的條件概率。而一個屬性他的父屬性個數沒有任何限制。
問題:
但這樣不如上一個半樸素貝葉斯結構基本固定直接遍歷搜索空間也不會很大,可以用最大邊的方式構建貝葉斯網路,也就是說這樣的網路結構很難去構建和生成,主要是用似然損失+構造損失(參數個數*參數的精度)作為損失函數來進行優化,但是這直接求解是一個NP難的問題,這樣就有兩種方式第一種:貪心法,通過初始化一個網路結構,然後每次調整一個邊(增加,刪除或調整方向)使得loss變化最大,直到最後評分函數無法在降低。(當然這樣的一個初始化網路結構就會變得很重要)第二種:通過給網路結構添加約束,比如將網路結構限定為樹形結構等。
方法:
除了之前我們用作的分類問題,還可以做擴展到一個推斷的問題,比如蒙著眼摸出西瓜的根蒂,形狀,大小,能推斷出它的色澤到底是青綠還是黃綠,是好瓜還壞,甜度如何等等。而且還可以直接精確計算出後驗概率,但是當網路結點很多,連接又很稠密,而且查詢的屬性又含有依賴關系的時候,在短時間內計算出准確的結果會很難。所以我們通過藉助近似的方式推斷結果。(我們只想知道哪種可能性大得多,具體大多少不是我們要求的結論)
這種近似的做法就是吉布斯采樣方法,固定我們獲得的證據屬性E,然後通過初始化一個q0,接著對於q0中的某一個屬性根據其他的屬性不變,根據計算得到的條件概率進行采樣。這是一個馬爾科夫鏈(marcov chain),性質:在經過t次的采樣之後,馬爾科夫會收斂於一個平穩分布,而這個平穩分布正是我們要求的那個 p(Q|E=e) 的分布。這樣我們就可以通過吉布斯采樣來得到一個模擬化的分布得到q最有可能的取值。(或者給定q, p(q|E=e) 估計的概率是多少)

隱變數介紹以及解決方法:
上訴還有一個問題那就是屬性缺失的情況下怎麼辦,我們的模型網路還能創建得出來嗎?也就是說存在隱變數(latent variable)該怎樣解決這樣的問題?
EM(Expectation-Maximization)演算法是常用的估計參數隱變數的方法。
主要的思想就是:隱變數和模型參數是我們要求的,而二者之間存在相互依賴的關系,也就是不知道隱變數無法求出模型參數,不知道模型參數也無法反推出隱變數。那如果是一種優化迭代演算法的話,初始化隱變數,然後訓練得到最優的參數,然後通過固定最優的參數再反過來訓練到最優的隱變數。直到最後收斂到一個局部最優解。(所以這種演算法求解的結果是和 初始值關系比較大的局部最優解,如果能找到一個接近全局最優解的初始值,或者在接受解的概率上做調整不至於過快收斂,可能可以得到一個更好的解。)

參考文獻:西瓜書-貝葉斯決策論

❿ 貝葉斯網路的簡介

貝葉斯網路又稱信度網路,是Bayes方法的擴展,是目前不確定知識表達和推理領域最有效的理論模型之一。從1988年由Pearl提出後,已經成為近幾年來研究的熱點.。一個貝葉斯網路是一個有向無環圖(Directed Acyclic Graph,DAG),由代表變數節點及連接這些節點有向邊構成。節點代表隨機變數,節點間的有向邊代表了節點間的互相關系(由父節點指向其子節點),用條件概率進行表達關系強度,沒有父節點的用先驗概率進行信息表達。節點變數可以是任何問題的抽象,如:測試值,觀測現象,意見征詢等。適用於表達和分析不確定性和概率性的事件,應用於有條件地依賴多種控制因素的決策,可以從不完全、不精確或不確定的知識或信息中做出推理。