了解 InfoSphere Streams 中的 R-project 工具集

应用复杂数据挖掘算法来检测数据流中的有趣模式

InfoSphere® Streams 处理对于平台和架构至关重要的一种新兴需求,这些平台和架构可以实时处理大量已生成的数据。R 语言非常受欢迎,被统计学家和数据挖掘家广泛用于开发统计软件,以便进行数据处理、统计计算和图形显示。了解有关 InfoSphere Streams R-project 工具集的信息,该工具集可与功能强大的 R 软件设施和数据包套件相集成。

Sherif Sakr, 高级研究科学家, National ICT Australia

Sherif Sakr 的照片Sherif Sakr 博士是 National ICT Australia (NICTA) 软件系统集团的高级研究科学家,NICTA 位于澳大利亚悉尼。他还是澳洲新南威尔士大学计算机科学与工程学院的联合高级讲师。2007 年,他获得了德国康斯坦茨大学的计算机科学博士学位,还获得了埃及开罗大学计算机科学的学士学位和硕士学位。2011 年,Sakr 博士担任了美国华盛顿州雷德蒙德市微软研究院 eXtreme Computing Group (XCG) 的客座研究科学家的职务。2012 年,他出任了 Alcatel-Lucent 贝尔实验室的研究 MTS 职位。



2014 年 1 月 09 日

R Project 概述

R 是一种免费的软件设施集成套件,用于数据处理、计算和图形显示。它是一种有效的数据处理和存储设施,可为用户提供许多设施,其中包括:

  • 一套用于计算数组和矩阵的运算符。
  • 一个大型、一致的、集成的中间工具集合,用于数据分析操作。
  • 一个用于 S 编程语言、统计编程语言分析数据的完备而又简单的环境,其中包括条件、回路、用户定义的递归函数以及输入和输出设施。

R 是一种真正面向对象的编程语言,与 C++(以及其他)语言非常类似,其中的对象几乎包括任何事物:单个值、变量、数据集、几类对象的列表等。R 提供各种各样的图形和统计技术,比如线性和非线性建模、经典统计测试、时间序列分析、分类、集群等。

R 编程语言可以高度扩展。它允许用户写入新函数,并将这些函数打包在一个 R 数据包(或 R 库)中。实际上,R 的默认安装和附带数据包可提供有效运行的统计环境,人们可以在其中进行许多典型和高级的分析。此外,它还提供了超过 5,300 个有助于用户的数据包,可提供大量的增强功能。因此,如果突然遇到了特殊的分析,那么 R 数据包很可能已经参与其中。

R 环境的主要优势是可轻松用来生成设计良好的图表,包括数学符号和公式(如果需要)。R 还具有广泛的、功能强大的图形设施。

将 R 用作计算器

使用简单的算术表达式来让 R 计算一个数学答案。

清单 1. 使用 R 作为计算器来进行整数求和
  > 1+2 
  ## [1] 3

您还可以使用数学函数,比如 sqrtexplog

清单 2. 使用 R 作为计算器来计算数学函数
  > log(0.3/(1-0.3)) 
  ## [1] -0.8472979

使用 R 进行数据结构编码

通常,R 对已命名的数据结构进行操作。在此类结构中,最简单的是数值向量,这是一个单一实体,包含一个有序数字集合。使用以下命令设置向量 x 包含 5 个数字:9.4、8.6、2.1、3.4 和 11.7。

清单 3. 使用 R 进行向量分配
  > x <- c(10.4, 5.6, 3.1, 6.4, 21.7)

这是一个使用函数 c() 的赋值语句,其中采用了任意数字的向量参数,并通过将参数首尾相连在一起获得向量值。

基本运算操作符是常见的 +, -, *, /,而 ^ 用于幂函数。此外,所有常见的算术函数(logexpsincostansqrt)都可使用其一般含义。

函数:

  • maxmin 分别选择向量的最大和最小元素。
  • range 函数的值是一个长度为 2 的向量,即 c(min(x)max(x))
  • length(x)x 中的元素数量,sum(x) 给出 x 中的元素总和,并 prod(x) 其乘积。
  • 统计函数 mean(x) 计算样本均值,该函数与 sum(x)/length(x)) 相同。
  • var(x) 给出了 sum((x-mean(x))^2)/(length(x)-1) 或样本方差。
  • sort(x) 返回一个与 x 同样大小的变量,其中的元素以递增次序排列。但是,还有其他更灵活的分类设施可用。以下示例是一个简单函数,可获得输入向量 x 的平均值。
    清单 4. 使用 R 计算平均值
      mymean = function(x) {
      if (!is.numeric(x)) 
    	{
      	stop("Input Error")
      	}
      return(sum(x)/length(x))
      }
      
      myVar = 1:5
      mymean(myVar)
      ## [1] 3
    
      mymean("string value")
      ## Error: STOP! Can not be computed.

关于 R 语言的所有细节和功能的介绍超出了本文的讨论范围。如需了解有关的完整信息,请参阅 R Project 手册(参见 参考资料)。


R Project 和 InfoSphere Streams

InfoSphere® Streams 旨在揭示动态信息(数据流)在数分钟到数小时的窗口期间的有意义模式。该平台通过支持低延迟洞察来提供业务价值,并为时间敏感型应用程序提供更好的输出,比如欺诈检查或网络管理。InfoSphere Streams 旨在解决的业务问题类型与普通关系数据库、标准的提取转换加载 (ETL) 软件平台或批处理分析平台(比如 Hadoop)定期处理的类型不同。

InfoSphere Streams 中的 R-project Toolkit

InfoSphere Streams 是一个高级计算平台,允许利用用户开发的应用程序快速提取、分析和关联从数千个实时来源提供的信息,因而可以处理非常高的数据吞吐率 — 每秒多达数百万个时间或消息。它包括一个 R-project Toolkit,支持您应用复杂数据挖掘算法来检测数据流中的有趣模式。了解更多的信息进行试用

术语数据流 描述的是数据来源提供的连续数据流。流数据的形式是元组,由一组固定的属性集组成。实际上,一个标准的数据库服务器通常提供静态数据模型和数据,同时还支持动态查询。数据存储为永久形式,而且可以随时发出查询来回答历史数据和数据模型中包含的问题。

不过,在 InfoSphere Streams 环境中,数据并不需要永久存储。相反,据估计,观察到的数据非常大,以至于无法进行永久保存。因此,InfoSphere Streams 支持能构建可以到达这些海量数据的应用程序,必须以较低延迟对这些数据进行分析并实时(或接近实时)报告。

InfoSphere Streams 中的查询由流应用程序定义并连续运行,直至用户取消运行。一个流应用程序是一个已定义的运算符集合,由各个数据流相连:

  • 流应用程序 定义了运行时应如何分析一组流数据。
  • 运算符 是处理功能的一个组件,将一个或多个数据流作为输入,处理数据流中的元组和属性,并生成一个或多个数据流作为输出。
  • SPL 是用于 InfoSphere Streams 的编程语言,是一种分布式数据流排版语言。它是一种可以扩展的、功能全面的语言,就像 C++ 或 Java™ 一样支持用户定义的数据类型。用户可以使用 SPL 或本机语言(C++ 或 Java)编写自定义函数。用户还可以使用 C++ 或 Java 编写用户定义的运算符。

InfoSphere Streams 平台的其中一个优势是工具集,表示有助于特定行业或功能的解决方案发展的资产集合。它们可以随着任何 InfoSphere Streams 应用程序中功能的增加而扩大。这些工具集的示例包括:

  • 挖掘工具集:支持对流应用程序中的实时数据进行评分。Streams Mining Toolkit 中的评分假设(并使用)一个预定义的模型。支持各种模型类型和评分算法:分类、回归分析、集群,尤其是关联。
  • 金融服务工具集:为金融机构提供竞争优势。
  • 数据库工具集:提供各种方法,支持流应用程序连接到不同的数据存储区,比如 solidDB、Netezza、DB2® 和 Oracle。
  • 互联网工具集:提供各种方法,通过使用 HTTP 从远程数据源接收基于文本的数据,并根据这一内容生成输入流。

InfoSphere Streams 3.1 支持 R 分析,这允许用户以本机格式使用 R 评分,同时利用 InfoSphere Streams 的可扩展性和类似特性实现超长的吞吐量。R 支持扩展 InfoSphere Streams 家族的分析选项。以下各节将概述 InfoSphere Streams 中的 R-project Toolkit。


R-project Toolkit

R-project Toolkit 提供的运算符有助于集成 InfoSphere Streams 与 R 环境。该工具的基础是 RScript 运算符,每次在所需的输入端口上接收到一个元组时,就能够调用用户定义的 R 脚本。

特别是,它可以将每个输入元组的属性映射到可在 R 命令中使用的对象。然后,运行一个包含 R 命令的脚本,并将脚本的输出映射到输出元组属性。

RScript 运算符的工作原理

当在所需的输入端口上收到一个元组时,运算符就会使用 streamAttributes 参数将输入元组属性映射到 rObjects 参数中指定的对象。该运算符运行 rScriptFileName 参数中指定的脚本并处理结果。运算符使用自定义输出函数 fromRvalues 将 R 脚本中输出语句生成的值映射到输出元组属性。

运算符支持可选的输入端口,并接受指定 R 脚本名称的 rstring 属性。该脚本只运行一次。您可以使用脚本来更新或替换初始化脚本或处理脚本中的分析代码。例如,您可以运行 R 命令来刷新用于评分的模型,或者可以替换 R 函数定义。运算符还支持使用可选输出端口来捕获运行 R 脚本期间出现的错误信息。此外,运算符接收以下参数:

  • rScriptFileName:提供有关 R 脚本运行每个传入元组的路径信息。
  • streamAttributes:描述一个表达式列表,用于映射到 R 脚本中使用的 R 对象。
  • rObjects:提供一个字符串列表,表示将在 R 脚本运行之前进行填充的 R 对象名称。必须是利用 streamAttributes 参数的 1:1 映射。
  • initializationScriptFileName(可选):提供在运算符初始化期间运行 R 脚本的路径信息。
  • rCommand(可选):允许用户在调用 R shell 时指定不同的路径和选项。

RScript 运算符支持所有原始的 SPL 数据类型(整数、字符串、双精度和时间)。此外,还可以处理 SPL 数据类型和 R 向量之间的映射。

运行中的 RScript 运算符

下列代码显示了使用 RScript 运算符调用 R 脚本的一个简单示例,该脚本可计算两个整数输入参数的和。

清单 5. 运行中的 RScript:整数和
 stream<int32 a, int32 b, int32 c< analyzedStream =
 	RScript(inStream) {
 	param
 		rScriptFileName : "../process.r" ;
 		streamAttributes : a, b;
 		rObjects : "in1", "in2";
 	output
 		analyzedStream:
			c = fromR("out1");
 }

在上面的代码中,process.r 是一个 R 脚本,在将两个参数(ab)映射到 in1in2 参数后再接收这两个参数。从 R 脚本返回的 out1 参数映射到参数 c

下列代码是使用线性模型预测存储介质如何影响增长的另一个示例。

清单 6. 运行中的 RScript:应用预测模型
 stream<int32 identifier, float64 fert, float64 sizeChange,
 	rstring modelSource< analyzedStream = RScript(inStream) {
 	param
 		initializationScriptFileName : "../init.r";
 		rScriptFileName : "../process.r" ;
 		streamAttributes : fert;
 		rObjects : "f";
 	output
 		analyzedStream:
 			sizeChange = fromR("growth"),
}

在上面的代码中,init.r 脚本在运算符启动期间运行一次。它创建了到输入数据和线性模型 growthModel 的连接。

 growthData <- read.csv(file="../growthMonday.txt", sep=' ', header=TRUE)
 attach(growthData)
 growthModel = lm(height~fertilizer)

process.r 脚本在元组每次到达所需输入端口时运行。介质数量通过对象 in1in2 输入。脚本根据线性模型使用对象 (growthModel) 输出预期的增长。

 onerow <- list(fertilizer = f)
 growth = predict(growthModel,onerow)

结束语

帮助组织管理和分析大数据,并从大数据中获益,这是 IBM 大数据平台受关注的重要关注点。InfoSphere Streams 是 IBM 的软件平台,用于存储和处理流数据,支持与新的 R Project 软件套件集成,该套件提供了功能强大的数据处理、统计计算和图形显示功能。如果您准备开始使用 InfoSphere Streams 及其各种工具集,请参阅 参考资料,以获取免费的培训材料和软件。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=959698
ArticleTitle=了解 InfoSphere Streams 中的 R-project 工具集
publish-date=01092014