r - 如何用 bnlearn 表示领域知识信息
问题描述
我正在学习使用 R 包的动态贝叶斯网络模型bnlearn
。为此,我正在关注这篇论文,他们以 6 层的形式施加了某些约束(论文中的表 1):
1 Gender, age at ALS onset
2 Onset site, onset delta (start of the trial - onset)
3 Riluzole intake, placebo/treatment
4 Variables at time t-1
5 Variables at time t, TSO
6 Survival
在此示例中,由于gender
和age
位于顶层,它们不能受Riluzole intake
但影响(或具有因果关系)Riluzole intake
并最终受到影响survival
。这保证了网络的非周期性,也就是说,我们在变量之间没有无休止的反馈循环。
我的问题是,我们如何使用 R 包对这些先验知识进行建模bnlearn
。
解决方案
您可以通过多种方式将领域知识或约束添加到结构学习中。
如果要使用领域知识指定网络结构和参数,可以使用
custom.fit
.如果您想从数据中估计 BN 的结构,那么您可以使用结构学习算法中的
whitelist
和参数对边缘方向和边缘存在施加约束。blacklist
在结构学习中,可以将先验放置在边缘上(例如
prior="cs"
,其中“如果先验是 cs,beta 是一个数据框,其列 from、to 和 prob 指定一组弧的先验概率。假设为剩余的弧线。 ”)。还有其他可以使用的先验。
推荐阅读
- mysql - 避免三个表之间的重复行
- react-native - 如何在反应导航中实现此视图?
- asp.net - 在 asp.net 完整项目中禁用脚本
- python - tkinterhtml.HtmlFrame.set_content() 在使用 64 位 Python 时崩溃
- autodesk-forge - 如何在同一应用程序中加载两个伪造查看器(Angular Forge 查看器组件)
- javascript - what is (function(){}()) in object when i make a function
- android - 自定义圆形进度条
- sql - Convert character string into this specific date format?
- python - Why does calling np.array() on this list comprehension produce a 3d array instead of 2d?
- c# - Two Thread tasks in Winforms Continuously Checking Back