贝叶斯网络模型基础——R语言
筆者近期在學習貝葉斯網絡模型相關知識的時候,分別使用了Matlab、python、R、Netica、GeNIe、unbbayes等。這些軟件各有千秋,但是R語言必須安利給大家,希望大家指正。
R語言
R是用于統計分析、繪圖的語言和操作環境。R是屬于GNU系統的一個自由、免費、源代碼開放的軟件,它是一個用于統計計算和統計制圖的優秀工具。
那么為什么特別推薦R呢?
圖美、上手快、效率高
安裝R語言
R語言也是要安裝的,不安裝怎么用呢?目前按照操作習慣可以劃分為兩種:R Console和R stuido。
R Console
下載地址為:https://cran.r-project.org,進入以后根據自己的電腦版本對號入座,此處不再贅述。安裝完成后如圖。
R stuido
下載地址: http://www.rstudio.com/ide,老規矩還是對號入座,可以發現有Desktop和Server兩個版本,我們選擇Desktop。這個筆者并沒有安裝,所以就不在這分享了。
貝葉斯網絡模型包
bnlearn is an R package for learning the graphical structure of Bayesian networks, estimate their parameters and perform some useful inference. It was first released in 2007, it has been been under continuous development for more than 10 years (and still going strong). To get started and install the latest development snapshot type.
安裝bnlearn包
二者選其一即可,安裝的過程中會提示選擇服務器,隨便選擇一個服務器即可。
install.packages("bnlearn") install.packages("https://www.bnlearn.com/releases/bnlearn_latest.tar.gz")導入bnlearn包
library("bnlearn") bn.boot如果返回下圖證明導入成功。
創建貝葉斯網絡模型
空網絡
e = empty.graph(LETTERS[1:6]) class(e) e
第一個語句代表建立一個貝葉斯網絡,第二個語句是查看變量內容,第三個語句是查看變量類型。
非空網絡
cptA = matrix(c(0.4, 0.6), ncol = 2, dimnames = list(NULL, c("LOW", "HIGH"))) cptB = matrix(c(0.8, 0.2), ncol = 2, dimnames = list(NULL, c("GOOD", "BAD"))) cptC = c(0.5, 0.5, 0.4, 0.6, 0.3, 0.7, 0.2, 0.8) dim(cptC) = c(2, 2, 2) dimnames(cptC) = list("C" = c("TRUE", "FALSE"), "A" = c("LOW", "HIGH"),"B" = c("GOOD", "BAD")) net = model2network("[A][B][C|A:B]") dfit = custom.fit(net, dist = list(A = cptA, B = cptB, C = cptC)) dfit打印模型與參數
參數學習
data(learning.test) pdag = iamb(learning.test) score(set.arc(pdag, from = "A", to = "B"), learning.test) score(set.arc(pdag, from = "B", to = "A"), learning.test) fit = bn.fit(dag, learning.test)學習結果如下
Bayesian network parametersParameters of node A (multinomial distribution)Conditional probability table:a b c 0.334 0.334 0.332Parameters of node B (multinomial distribution)Conditional probability table:A B a b ca 0.8561 0.4449 0.1149b 0.0252 0.2210 0.0945c 0.1187 0.3341 0.7906Parameters of node C (multinomial distribution)Conditional probability table:a b c 0.7434 0.2048 0.0518Parameters of node D (multinomial distribution)Conditional probability table:, , C = aA D a b ca 0.8008 0.0925 0.1053b 0.0902 0.8021 0.1117c 0.1089 0.1054 0.7830, , C = bA D a b ca 0.1808 0.8830 0.2470b 0.1328 0.0702 0.4939c 0.6864 0.0468 0.2591, , C = cA D a b ca 0.4286 0.3412 0.1333b 0.2024 0.3882 0.4444c 0.3690 0.2706 0.4222Parameters of node E (multinomial distribution)Conditional probability table:, , F = aB E a b ca 0.8052 0.2059 0.1194b 0.0974 0.1797 0.1145c 0.0974 0.6144 0.7661, , F = bB E a b ca 0.4005 0.3168 0.2376b 0.4903 0.3664 0.5067c 0.1092 0.3168 0.2557Parameters of node F (multinomial distribution)Conditional probability table:a b 0.502 0.498結構學習
data(learning.test) data(gaussian.test) learn.net = empty.graph(names(learning.test)) modelstring(learn.net) = "[A][C][F][B|A][D|A:C][E|B:F]" gauss.net = empty.graph(names(gaussian.test)) modelstring(gauss.net) = "[A][B][E][G][C|A:B][D|B][F|A:D:E:G]" score(learn.net, learning.test) score(gauss.net, gaussian.test) score(learn.net, learning.test, type = "bic") score(learn.net, learning.test, type = "aic") score(learn.net, learning.test, type = "bde")以上分別使用bic、aic、bde評分標準進行結構打分。
參考文獻
[1] https://www.bnlearn.com/examples/
[2] 李碩豪, 張軍. 貝葉斯網絡結構學習綜述[J]. 計算機應用研究, 2015(3).
[3] Scutari M . Bayesian network models for incomplete and dynamic data[J]. Stata Neerlandica, 2020(7).
[4] Scutari M , Vitolo C , Tucker A . Learning Bayesian networks from big data with greedy search: computational complexity and efficient implementation[J]. Stats and Computing, 2019, 29(5):1095-1108.
[5] Scutari M . Dirichlet Bayesian Network Scores and the Maximum Relative Entropy Principle[J]. Behaviormetrika, 2018(11):337-362.
總結
以上是生活随笔為你收集整理的贝叶斯网络模型基础——R语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ISO 22301 业务连续性管理(BC
- 下一篇: svn server启动报错:The H