一:貝葉斯網路簡介
貝葉斯網路(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...