我正在寻找一个库来创建贝叶斯网络并在 Scala(或 Java,如果缺乏更好的解决方案)中对它们进行学习和推理。该库应该被积极维护,高性能,最好是简单的,绝对有据可查,除非使用非常简单。免费、开源和商业替代方案都可以,但对于商业解决方案,需要免费试用。
一个理想的解决方案相当于 .NET 世界中由 Microsoft Research 提供的 Infer.NET,但有更多文档。
提前致谢!
我正在寻找一个库来创建贝叶斯网络并在 Scala(或 Java,如果缺乏更好的解决方案)中对它们进行学习和推理。该库应该被积极维护,高性能,最好是简单的,绝对有据可查,除非使用非常简单。免费、开源和商业替代方案都可以,但对于商业解决方案,需要免费试用。
一个理想的解决方案相当于 .NET 世界中由 Microsoft Research 提供的 Infer.NET,但有更多文档。
提前致谢!
FACTORIE是一个年轻的项目,但它符合要求并在 Scala 中实现:
FACTORIE 是用于可部署概率建模的工具包,在 Scala 中作为软件库实现。它为用户提供了一种简洁的语言,用于创建关系因子图、估计参数和执行推理。
它由Andrew McCallum和他在 UMass 的实验室开发,他们还负责非常有用的MALLET 机器学习工具包。
你可能想看看 SMILE。它是免费的,并且有 Java API。Java 中的其他免费选项是 UnBBayes 和 SamIam。
SMILE(结构建模、推理和学习引擎)是一个完全可移植的 C++ 类库,实现了图形决策理论方法,例如贝叶斯网络和影响图,可直接包含在智能系统中。
UnBBayes 是一个用 Java 编写的概率网络框架。它有一个 GUI 和一个具有推理、采样、学习和评估功能的 API。支持BN、ID、MSBN、OOBN、HBN、MEBN/PR-OWL、PRM、结构、参数和增量学习。
Samiam 包括两个主要组件:图形用户界面和推理引擎。图形界面让用户可以开发贝叶斯网络模型并以各种格式保存它们。推理引擎支持许多任务,包括:经典推理;参数估计;时空权衡;敏感性分析; 以及基于 MAP 和 MPE 的解释生成。
纯 Scala 和免费选项是 FACTORIE(已经提到)和 Figaro。但费加罗目前缺乏学习部分。
Figaro 模型是 Scala 编程语言中的数据结构,可与 Java 互操作,并且可以在任何 Scala 或 Java 程序中直接构建、操作和使用。
也许班卓琴符合要求?我不确定它的开发有多活跃,但我知道它已经存在了至少几年......(我自己从未使用过它)。
提出了一些 Infer.NET 的 Java 替代方案作为该问题的答案。因此,我认为基本上您是在询问关于 Java 或完全基于 Scala 的解决方案的该问题的后续行动(在 2010 年下半年提出)。
现在有一个 Scala 库: