toolbox, 一种可以扩展概率机学习的Java工具箱

分享于 

8分钟阅读

GitHub

  繁體 雙語
A Java Toolbox for Scalable Probabilistic Machine Learning
  • 源代码名称:toolbox
  • 源代码网址:http://www.github.com/amidst/toolbox
  • toolbox源代码文档
  • toolbox源代码下载
  • Git URL:
    git://www.github.com/amidst/toolbox.git
    Git Clone代码到本地:
    git clone http://www.github.com/amidst/toolbox
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/amidst/toolbox
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    在工具箱( http://www.amidsttoolbox.com ) 中的

    v.0.7.1

    GitHub versionBuild StatusCodacy BadgeLicense

    描述

    基于的概率机学习

    工具箱允许你使用基于图形模型的灵活概率语言来建模你的问题。 然后,使用贝叶斯方法处理模型不确定性,从而将模型与数据相适应。

    基于的多核分布式进程

    内部提供定制的并行( 由 Java 8流供电) 和分布式( 由 或者 Spark ) 参数学习,用于批处理和流数据学习。 这个过程是基于灵活和尺度消息传递算法的。

    #Features

    • 按概率计算可以伸缩的推理:使用强大的近似和可以扩展算法执行概率模型。

    • 数据流: 在新数据可用时更新模型。 这使得我们的工具箱适合于从( 海量) 数据流学习。

    • 使用 your ( 不久) Flink或者 Apache Spark,在分布式计算机集群中使用你定义的模型来处理大量数据集,从而实现大规模数据集。

    • 扩展: 代码内部的模型或者算法,并扩展工具箱功能。 用于在机器学习中进行实验的研究人员。

    • 使用 existing Hugin/R 等软件工具,利用现有的功能和算法,实现了的互操作性: 利用现有功能和算法。

    #Simple 代码示例

    适合本地数据模型

    
    
    
    
     //Load the data
    
    
     String filename = "./data.arff";
    
    
     DataStream<DataInstance> data = DataStreamLoader.open(filename);
    
    
    
     //Learn the model
    
    
     Model model = new CustomGaussianMixture(data.getAttributes());
    
    
     model.updateModel(data);
    
    
    
     System.out.println(model.getModel());
    
    
    
     // Save with. bn format
    
    
     BayesianNetworkWriter.save(model.getModel(), "./example.bn");
    
    
    
    

    适合分布数据的模型

    
    
    
    
     //Load the data
    
    
     String filename = "hdfs://dataDistributed.arff";
    
    
     final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    
    
     DataFlink<DataInstance> data = DataFlinkLoader.loadDataFromFolder(env, filename, false);
    
    
    
     //Learn the model
    
    
     Model model = new CustomGaussianMixture(data.getAttributes());
    
    
     model.updateModel(data);
    
    
    
     System.out.println(model.getModel());
    
    
    
     // Save with. bn format
    
    
     BayesianNetworkWriter.save(model.getModel(), "./example.bn");
    
    
    
    

    #Real-World 使用的案例为

    基于的信用经营风险预测

    在工具箱中用于跟踪概念漂移,并在信用操作中进行风险预测。 这项工作是在与我们的一个合作伙伴合作的,西班牙银行 BCC。 预计将于 2017年开始投产。

    基于的交通机动识别

    在工具箱中已经被用于Prototype模型的早期识别交通机动意图。 前一种情况相同,数据是由汽车连续收集到一个大而快速发展的数据流。 这项工作是与我们的合作伙伴之一合作的,戴姆勒。

    文档
    • 入门 解释如何在工具箱中安装toolbox工具箱如何使用java5新功能样式编程功能以及为什么它基于基于的体系结构。

    • 工具箱功能描述工具箱中的主要功能( 例如。数据流,。static 和动态学习和推理引擎 等等 )。

    • 基于动态贝叶斯网络的一些源代码示例动态贝叶斯网络的代码示例。
    • SparkLink: 一些功能的源代码示例与集成 Apache Spark的MODULE 有关。

    • 工具箱中的API

    比例

    使用 Java 8流的多核心 Scalablity

    可伸缩性是工具箱中的主要关注点。 Java 8流用于提供我们的学习算法的并行实现。 如果需要更多的计算能力来处理数据,用户也可以使用更多的CPU内核。 如下图所示,在学习概率模型(。包含类变量C,两个潜在变量( 虚线节点) )。多项式( 蓝色节点) 和高斯( 绿色节点) 可以观测变量时,如何增加工具箱的数据处理能力。 如图所示,使用变分学习引擎可以根据可用的CPU核数来处理数据,这取决于带有潜在变量的CPU核的数量和复杂的数。 注意,这些实验是在一个with服务器上进行的,它的中包含x86_64架构和 32个内核。 根据 Weka ARFF的格式测量处理数据集的大小。

    使用 Apache Flink的分布式服务器

    ,data data data data data Apache Apache Apache Apache Apache Apache Apache distributed distributed distributed distributed。 本文详细介绍了在a node ( 例如 ) 中进行推理的过程。 10个 ^9 ) 在 2.4.8和 16节点的amazon集群中的概率模型,每个 node 包含一个进程单元。 下图显示了我们在这些设置下的方法的可伸缩性。

    火花链接 MODULE 在中间

    这个 MODULE 将工具箱内部的功能与 Apache Spark 插件平台集成起来。

    以下功能已经在 sparklink 模块上实现:

    • 数据源集成:从SparkSQL中读取和写入数据
    • 贝叶斯网络的分布式抽样
    • 分布数据参数化学习( 最大似然)

    更多信息:这里的

    发布&使用案例

    下面的库 https://github.com/amidst/toolbox-usecases 插件包含了源代码和关于使用AMIDST工具箱的发布和用例的详细信息。

    即将开发

    toolbox工具箱是一个展开项目,即将开发包括在 Spark 中进行工具箱的集成,以扩大它的规模容量。 此外,还有一个指向 R 插件的新链接,它将扩展用户基础。

    在内部

    AMIDST是一个开源工具箱,鼓励最终用户按照这里链接中给出的指示上传他们的捐赠。

    # 确认和许可这里软件是作为项目中的一部分执行的。 在AMIDST中收到来自欧洲第七方联合框架计划的资助,技术开发和演示,grant协议没有 619209.

    这里软件是在Apache许可版本 2.0下发布


    JAVA  tool  mac  SCA  learn  Scala