貝葉斯網路演算法
1. 貝葉斯網路演算法Java實現
public static void main(String[] args){
int n=10;//定義n
int[] π={};//定義存放π的數組
for(int i=0;i++;i<n){
π[i]=Ф;
int Pold=g(i,π[i]);//調用g方法
boolean OkToProceed=true;//定義布爾值
while(OkToProceed &&Math.abs(π[i])<u){
//寫不下去了。。。好多都不知道是什麼方法
}
}
}
2. 貝葉斯網路的特性
1、貝葉斯網路本身是一種不定性因果關聯模型。貝葉斯網路與其他決策模型不同,它本身是將多元知識圖解可視化的一種概率知識表達與推理模型,更為貼切地蘊含了網路節點變數之間的因果關系及條件相關關系。
2、貝葉斯網路具有強大的不確定性問題處理能力。貝葉斯網路用條件概率表達各個信息要素之間的相關關系,能在有限的、不完整的、不確定的信息條件下進行學習和推理。
3、貝葉斯網路能有效地進行多源信息表達與融合。貝葉斯網路可將故障診斷與維修決策相關的各種信息納入網路結構中,按節點的方式統一進行處理,能有效地按信息的相關關系進行融合。
對於貝葉斯網路推理研究中提出了多種近似推理演算法,主要分為兩大類:基於模擬方法和基於搜索的方法。在故障診斷領域里就我們水電模擬而言,往往故障概率很小,所以一般採用搜索推理演算法較適合。就一個實例而言,首先要分析使用哪種演算法模型:
a.)如果該實例節點信度網路是簡單的有向圖結構,它的節點數目少的情況下,採用貝葉斯網路的精確推理,它包含多樹傳播演算法,團樹傳播演算法,圖約減演算法,針對實例事件進行選擇恰當的演算法;
b.)如果是該實例所畫出節點圖形結構復雜且節點數目多,我們可採用近似推理演算法去研究,具體實施起來最好能把復雜龐大的網路進行化簡,然後在與精確推理相結合來考慮。
在日常生活中,人們往往進行常識推理,而這種推理通常是不準確的。例如,你看見一個頭發潮濕的人走進來,你認為外面下雨了,那你也許錯了;如果你在公園里看到一男一女帶著一個小孩,你認為他們是一家人,你可能也犯了錯誤。在工程中,我們也同樣需要進行科學合理的推理。但是,工程實際中的問題一般都比較復雜,而且存在著許多不確定性因素。這就給准確推理帶來了很大的困難。很早以前,不確定性推理就是人工智慧的一個重要研究領域。盡管許多人工智慧領域的研究人員引入其它非概率原理,但是他們也認為在常識推理的基礎上構建和使用概率方法也是可能的。為了提高推理的准確性,人們引入了概率理論。最早由Judea Pearl於1988年提出的貝葉斯網路(Bayesian Network)實質上就是一種基於概率的不確定性推理網路。它是用來表示變數集合連接概率的圖形模型,提供了一種表示因果信息的方法。當時主要用於處理人工智慧中的不確定性信息。隨後它逐步成為了處理不確定性信息技術的主流,並且在計算機智能科學、工業控制、醫療診斷等領域的許多智能化系統中得到了重要的應用。
貝葉斯理論是處理不確定性信息的重要工具。作為一種基於概率的不確定性推理方法,貝葉斯網路在處理不確定信息的智能化系統中已得到了重要的應用,已成功地用於醫療診斷、統計決策、專家系統、學習預測等領域。這些成功的應用,充分體現了貝葉斯網路技術是一種強有力的不確定性推理方法。
3. 貝葉斯網路學習
BN學習的目的就是要找到一個最能真實反映當前研究問題中現有的各研究對象之間相互依賴關系的BN模型,BN學習可以分為以下兩個階段:①結構學習(Structure Learn-ing),即網路拓撲結構的學習。②參數學習(Parameter Learning),即網路中每個節點變數的局部先驗條件概率分布的學習。
比較簡單的BN學習方法是先依據專家知識確定BN的拓撲結構,然後通過給定的樣本數據學習BN的概率分布(參數)。比較復雜的BN學習方法是BN的拓撲結構和概率分布都是通過給定樣本數據學習得出,這也是現在的研究熱點。結構學習和參數學習是相互聯系的,一方面BN的結構是由聯合概率分布函數來直接決定;另一方面,節點的條件概率依賴於BN的拓撲結構。
2.2.1 貝葉斯網路結構學習
BN結構學習就是利用訓練樣本數據,尋找對數據和先驗知識擬合的最好的網路拓撲結構。學習分為完備數據結構學習和不完備數據結構學習兩種情況。目前,具有完備數據的 BN 結構學習方法比較成熟,而從不完備數據中學習 BN 結構比較困難,現有演算法仍存在缺陷。
2. 2. 1. 1 具有完備數據的貝葉斯網路結構學習
當訓練樣本完備時,常用的 BN 結構學習演算法可以分為兩種: 基於搜索記分的方法和基於統計測試的方法。
( 1) 基於搜索評分的結構學習演算法。基於搜索評分的結構學習演算法將結構學習視為搜索最佳網路問題。其核心思想是: 首先添加任一條邊,然後使用搜索方法添加新的邊,最後利用評分函數評分,測試新舊網路分值的大小。學習的目的就是找到評分最大的結構。這是個連續進行的過程,直到老模型的分數不再比新模型的分數低為止。評分方法有很多,如基於熵的評分、最小描述長度( LMS) 的評分以及貝葉斯評分。這類演算法有一個共同點: 為每個候選的 BN 定義一種評價網路結構與樣本集吻合程度的測度,然後,通過遺傳和進化演算法、模擬退火法或者爬山演算法搜索具有最佳測度的拓撲網路結構。
( 2) 基於統計測試的結構學習演算法。該學習演算法的核心思想是: 首先進行訓練樣本統計測試,尤其是測試條件獨立性; 然後,利用節點集間的條件獨立性構造 DAG( 有向無環圖) ,以盡可能地囊括這些條件獨立性,它將獨立的概念從構造結構中分離出來。
具有代表性的統計測試的結構學習演算法有: ①Spirtes 等( 1993) 提出 SGS 演算法,是一個典型的用條件獨立性測試確定拓撲結構的演算法,該演算法從無向完全圖出發,如果相鄰結點間存在無向分隔割集,則刪除它們的邊,然後通過統計測試來確定剩餘邊的方向。②Acid 等( 1999) 提出了有向圖構造演算法 EP,證明有向圖模型無論是否為單連接結構都對分類問題的影響效果不大。③Cheng Jie 等( 2002) 年將統計測試與資訊理論結合,通過相互信息量的計算來確定節點間的條件獨立性,用相互信息量代替條件獨立測試,從而構造多連接有向圖模型。
2. 2. 1. 2 缺失數據情況下的貝葉斯網路結構學習
在數據不完整的情況下,BN 結構學習會比較困難,現有的研究演算法主要是基於打分的結構學習。數據不完備會導致出現以下兩方面問題: ①一些充分統計因子不存在,導致無法直接進行結構打分; ②打分函數不再具有可分解形式,因此不能進行局部搜索。圍繞這兩方面問題相繼出現了一些解決的方法,如 Friedman( 1997) 借鑒參數學習的選擇 - 期望最大演算法,提出模型的 EM 結構學習方法; Sebastian 等( 1997) 將 BC 演算法應用於結構學習; Fried-man( 1998) 引入一種使用貝葉斯打分方法學習概率模型的新方法,貝葉斯結構期望最大演算法,簡稱為 Bayesian - SEM 演算法。
2. 2. 2 貝葉斯網路參數學習
BN 參數學習的目標是: 給定訓練樣本和網路拓撲結構,利用先驗知識,確定 BN 模型各個節點處的條件概率。參數學習同樣可以分為完備數據和不完備數據兩種情況。數據完備時的參數學習演算法包括由 Fayyad( 1990) 提出的貝葉斯估計方法和 Spiegelhalter( 1996) 提出的最大似然估計 ( MLE) 方法; 從不完備的數據中學習概率參數的演算法主要有 Gibbs 樣本法( Heckerman,1995) 和期望-最大 ( EM) 演算法( Spiegelhalter,1990; Mallet,1991; Lauritzen,1991等) 。
2. 2. 3 貝葉斯網路推理
概率推理是 BN 應用的主要目的之一。BN 推理是根據某些已知給定值的節點,估計未知節點的值。即在給定一個 BN 模型的情況下,依據已知條件,利用貝葉斯概率中條件概率的計算方法,計算出所感興趣的目標節點發生的概率。在 BN 推理中主要包括以下 3 種推理方式:
( 1) 因果推理: 也稱自上向下的推理,目的是由原因推出結論。已知證據 ( 原因) ,根據BN 的推理計算,求出在該證據 ( 原因) 發生的情況下結果發生的概率。
( 2) 診斷推理: 也稱自下向上的推理,目的是由結論推出原因。是在已知結果情況下,根據 BN 推理計算,得到導致該結果發生的原因即其發生的概率。該推理常用在故障診斷、病理診斷中,目的是找到故障發生、疾病發生的原因。
( 3) 支持推理: 目的是對原因之間的相互影響進行分析,提供用以支持所發生現象的解釋。
BN 推理演算法大體可以分為精確推理演算法和近似推理演算法兩大類。理論上,所有類型的 BN 都可以用精確推理演算法進行概率推理,但實際上 BN 精確推理是一個 NP-hard 問題( Cooper,1990) ,尤其當模型結構較復雜、包含大量的變數時,精確推理就變得尤為困難。而近似推理相比精確推理來說,是解決復雜網路模型的一個較好辦法,它可以大大簡化計算和推理過程。因此,現階段 BN 研究中許多情況下都採用近似演算法。