一则令人兴奋的简讯:

Oracle官方博客 最近更新的 New R Interface to Oracle Data Mining Available for Download,甲骨文开始正式支持R语言在Oracle数据库中的应用(简单的非官方说法是:甲骨文贡献了一个提供Oracle和R之间接口的附加包)。

援引博客中对R-ODM(R-Oracle Data Mining)的介绍:

R-ODM is especially useful for:

  • Quick prototyping of vertical or domain-based applications where the Oracle Database supports the application
  • Scripting of “production” data mining methodologies
  • Customizing graphics of ODM data mining results (examples: classificationregressionanomaly detection)

众所周知,R在实现原型算法方面有着不可替代的巨大优势。诚然,通过R实现的一般性数据挖掘算法都可以嵌入到数据库中,但Oracle提供的这个接口,极大地提高了挖掘算法的部署效率。

今天(2010.06.08),CRAN上更新了RODM包的1.0-2版本,支持Windows、Linux、MacOS X系统。

下面是RODM包帮助文档中的一个例子,可以初步地体会算法高效的部署:

### GLM Regression
## Not run:
x1 <- 2 * runif(200)
noise <- 3 * runif(200) - 1.5
y1 <- 2 + 2*x1 + x1*x1 + noise
dataset <- data.frame(x1, y1)
names(dataset) <- c("X1", "Y1")
RODM_create_dbms_table(DB, "dataset")   # Push the training table to the database

glm <- RODM_create_glm_model(database = DB,    # Create ODM GLM model
                             data_table_name = "dataset",
                             target_column_name = "Y1",
                             mining_function = "regression")

glm2 <- RODM_apply_model(database = DB,    # Predict training data
                             data_table_name = "dataset",
                             model_name = "GLM_MODEL",
                             supplemental_cols = "X1")
windows(height=8, width=12)
plot(x1, y1, pch=20, col="blue")
points(x=glm2$model.apply.results[, "X1"],
       glm2$model.apply.results[, "PREDICTION"], pch=20, col="red")
legend(0.5, 9, legend = c("actual", "GLM regression"), pch = c(20, 20),
                col = c("blue", "red"),
                pt.bg =  c("blue", "red"), cex = 1.20, pt.cex=1.5, bty="n")

RODM_drop_model(DB, "GLM_MODEL")            # Drop the model
RODM_drop_dbms_table(DB, "dataset")   # Drop the database table
RODM_close_dbms_connection(DB)
RODM_close_dbms_connection(DB)

说一句题外话:
R的影响力除了在统计分析领域(SAS、SPSS、Statistica已经都开始支持R接口)外,已然发展到了商业数据库领域。

永久链接:http://www.bjt.name/2010/06/oracle-data-mining-r/

相关文章:

  8 Responses to “Oracle数据库开始支持R语言”

  1. 你这家伙,也不在个人主页上留个联系方式。向你求一段代码,你写过一篇文章“500万?去买双色球!”里面给出了如何在网页上抓取所需要资料的例子,很久之前看过,但现在下不下来了。可以把那段代码发给我么?省得我去冥思苦想了 ^_^

    另外,提个建议,在COS上建个R的代码库,大家需要什么代码,就上去查,会省下不少编程时间。google就是这么干的。

    • 当时那个脚本放在pages.google.com上了,我本地也没存:) 随手做的东西,不存代码在我这经常发生,呵呵
      那段代码比较简单,思路就是用readLines把网页读下来,然后用grep这类的可以使用正则表达式的函数匹配数据,最后转化为data.frame

      • 刚在cos.name上发贴才发现原来之前刘版主已经回答了。谢谢~

      • 又遇到个问题了,导入网页中的中文字出现乱码和错误,该怎么解决呢?
        >require(RCurl)
        >webpage abc <- readLines(con=con,encoding="UNICODE")
        Error in file(con, "r") : cannot open the connection
        In addition: Warning message:
        In file(con, "r") : cannot open file '

  2. [...] This post was mentioned on Twitter by Xin LI and hutuworm, Xu Wenhao. Xu Wenhao said: RT @hutuworm: Oracle数据库开始支持R语言 http://bit.ly/as17IP //看来为了想搞的一些东西,值得好好看一下R了呢 [...]

  3. 请问在企业里面有用R做数据挖掘的吗?如何解决性能问题呢?要是数据达到千万级别,R能够处理吗?

    • 不是一个问题啊:)
      1、企业里用R做数据挖掘的很多,比如我自己就是其中的一个例子;
      2、“性能的问题”是一个很泛泛的说法,比较难回答。通常一个可能的做法是,尽量利用数据库的长处来弥补 R 的短处;
      3、R是可以处理千万级数据数据的,前提是你的内存足够大。
      其实在现实工作中,主要聚焦在两个问题上:
      1、想把所有数据放进来做模型。
      但,想想有必要么?!模型只是对现实的逼近,不可能完全等同于现实的,即便是用数据库里“全部”的数据。不如使用一个抽样数据模型,或者若干抽样数据模型的集合。这样的模型适应性会更强。
      2、想把所有数据放进来做汇总。
      大数据集的话,R也能做。但,用数据库吧,那才是王道!

  4. [...] Oracle数据库开始支持R语言 [...]

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
© 2012 刘思喆 @ 贝吉塔行星 Suffusion theme by Sayontan Sinha