貝葉斯學習(二)

2021-10-08 11:50:53 字數 3135 閱讀 4605

一:貝葉斯網路簡介

貝葉斯網路(bayesian network),又稱信念網路(belief network)或是有向無環圖模型(directed acyclic graphical model),是一種概率圖型模型。

貝葉斯網路又稱信度網路,是bayes方法的擴充套件,是目前不確定知識表達和推理領域最有效的理論模型之一。從2023年由pearl提出後,已經成為近幾年來研究的熱點.。乙個貝葉斯網路是乙個有向無環圖(directed acyclic graph,dag),由代表變數結點及連線這些結點有向邊構成。

結點代表隨機變數,結點間的有向邊代表了結點間的互相關係(由父結點指向其子結點),用條件概率進行表達關係強度,沒有父結點的用先驗概率進行資訊表達。結點變數可以是任何問題的抽象,如:測試值,觀測現象,意見徵詢等。適用於表達和分析不確定性和概率性的事件,應用於有條件地依賴多種控制因素的決策,可以從不完全、不精確或不確定的知識或資訊中做出推理。

二:例項:貝葉斯拼寫檢查

import re,collections

defwords

(text)

:return re.findall(

'[a-z]+'

, text.lower())

#去掉其他除了a到z以外的字元

deftrain

(features)

: model = collections.defaultdict(

lambda:1

)#導入庫設定預設值為1

for f in features:

model[f]+=1

return model

nwords = train(words(

open

('big.txt'

).read())

)alphabet =

'abcdefghijklmnopqrstuvwxyz'

defedits1

(word)

: n =

len(word)

return

set(

[word[

0:i]

+word[i+1:

]for i in

range

(n)]

+# deletion

[word[

0:i]

+word[i+1]

+word[i]

+word[i+2:

]for i in

range

(n-1)]

+# transposition

[word[

0:i]

+c+word[i+1:

]for i in

range

(n)for c in alphabet]

+# alteration

[word[

0:i]

+c+word[i:

]for i in

range

(n+1

)for c in alphabet]

)# insertion

defknown_edits2

(word)

:return

set(e2 for e1 in edits1(word)

for e2 in edits1(e1)

if e2 in nwords)

defknown

(words)

:return

set(w for w in words if w in nwords)

defcorrect

(word)

: candidates = known(

[word]

)or known(edits1(word)

)or known_edits2(word)

or[word]

print

(max

(candidates, key=

lambda w: nwords[w]))

correct(

"smil"

)

三:em演算法的簡介

最大期望演算法(expectation-maximization algorithm, em),或dempster-laird-rubin演算法,是一類通過迭代進行極大似然估計(maximum likelihood estimation, mle)的優化演算法,通常作為牛頓迭代法(newton-raphson method)的替代用於對包含隱變數(latent variable)或缺失資料(incomplete-data)的概率模型進行引數估計。

em演算法的標準計算框架由e步(expectation-step)和m步(maximization step)交替組成,演算法的收斂性可以確保迭代至少逼近區域性極大值。em演算法是mm演算法(minorize-maximization algorithm)的特例之一,有多個改進版本,包括使用了貝葉斯推斷的em演算法、em梯度演算法、廣義em演算法等。由於迭代規則容易實現並可以靈活考慮隱變數,em演算法被廣泛應用於處理資料的缺測值,以及很多機器學習(machine learning)演算法,包括高斯混合模型(gaussian mixture model, gmm)和隱馬爾可夫模型(hidden markov model, hmm)的引數估計。

四、em的通俗理解

在袋子裡摸球,有兩個袋子(a,b),每個袋子都只有黃,黑兩色,且相同數量,每次只能摸一球,總共摸三次。

(1)通過實驗得出a摸出黑色球的概率(p初(a)),得出b摸出黑色球的概率(p初(b))

(2)將a、b兩個袋子的標識蓋住(無法知道誰a誰b),但實驗結果保留,**誰a誰b,得出p(a)、p(b)

(3)首先隨便賦值,令摸出黑色球的概率為p(a)=0.3、p(b)=0.7

(4)分別計算不同實驗結果下,a,b的概率,經過比較得出每個實驗結果的a、b可能性。

(5)再次計算p估(a)、p估(b)

(6) 對比p初(a)、p(a)、p估(a),會發現p估(a)比p(a)更接近p初(a),同樣b也是一樣

貝葉斯 01 初識貝葉斯

分割線 分割線 分割線 分割線 分割線 分割線 分割線 分割線 分割線 分割線 分割線 分割線 分割線 最先知道貝葉斯公式還是四年前的概率論和數理統計課上,時間也很久了,具體內容早已經忘記,不過畢竟曾經學過,重新看過還是得心應手的。大概用兩三篇的內容來介紹一下貝葉斯,以及機器學習中很重要的一部分 樸...

貝葉斯 02 理解貝葉斯

首先簡略回顧一下,全概率和貝葉斯。其實這兩者是密不可分的,互相之間是乙個順序問題,全概率反過去就是貝葉斯,這類問題只需要區分清楚是知道原因求結果,還是知道結果尋原因就可以了。全概率公式是計算由諸多原因而導致的某件複雜事情發生的概率,而貝葉斯就是在這件複雜的事情已經發生的前提下,去尋找諸多原因中,某一...

機器學習 貝葉斯

bayes.py包含了所有函式的實現,需要做的是,明白各個函式的功能作用及輸入輸出,在指令碼中完成函式的呼叫,給出要求的格式的結果。from numpy import import csv import random random.seed 21860251 def loaddataset post...