Heroku Rails应用程序的数据挖掘/统计分析选项?

mid*_*idd 7 ruby r heroku stata ruby-on-rails-3

我有一个托管在Heroku上的rails应用程序,我想要整合一些实时数据分析.理想情况下,我想找出一种运行广义增强回归模型的方法,我知道这两种模型都可用于R(http://cran.r-project.org/web/packages/gbm/index.html)和Stata(http://www.stata-journal.com/article.html?article=st0087).我想保存生成的gbm树,然后在我的应用程序中,使用它来根据用户输入预测新结果.

如果那是不可能的,我会愿意使用其他数据挖掘算法.对我来说最重要的是能够将它集成到我的Heroku应用程序中,以便它可以在没有本地机器的情况下运行.

我研究过的选项:

1)Heroku支持建议将R库存放到红宝石中.我对红宝石和铁轨比较陌生,这对我来说是可行的.我四处寻找有关在宝石中销售图书馆的说明,但是找不到多少.

2)这里的另一个帖子(http://stackoverflow.com/questions/6495232/statistic-engine-that-work-with-heroku)提到了CloudNumbers,但似乎无法从Rails应用程序调用该服务.

3)在他们的一个案例研究中,Heroku提到了FlightCaster,它使用Clojure,Hadoop和EC2进行机器学习(http://www.infoq.com/articles/flightcaster-clojure-rails).我看到Heroku支持Clojure,但有没有办法将它(或更具体的Incanter)集成到我的Rails应用程序中?

如果您有任何想法,请告诉我.

Noa*_*oah 7

我将从R角度回答这个问题.通常,您将面临两个问题:

1)与R连接,无论它在哪里运行

2)从Heroku那里做这件事,那里有一系列特殊的挑战.

第一种方法有一些通用方法 - 你可以使用绑定到R(rsruby,rinruby等),你可以shell到R(例如,从ruby R -e "RCODEHERE"),你可以访问R作为web服务(参见Rook包,并且具体地是这样https://github.com/jeffreyhorner/rRack/blob/master/Rook/inst/exampleApps/RJSONIO.R),也可以手动使用类似访问R rserve.

其中,如果你只做一次操作并且不太关心性能,那么对R进行外壳是最简单的事情.您需要解析返回的输出,但这是我单次操作体验中最快的方式.

对于更重要的用法,我建议使用其中一个绑定,或者将R设置为另一个Heroku应用程序上的Web服务并通过HTTP调用它.

接下来的挑战是让R在Heroku上运行 - 它不是标准环境的一部分,它是一个没有root访问权限的只读文件系统,所以你不能这样做sudo apt-get install.

供应商R有可能成为一个宝石 - 有人已经开始在https://github.com/deet-uc/rsruby-heroku这样做,但我个人无法让它工作.也可以通过安装所有依赖项等直接在Heroku上构建R - 这是我在https://github.com/noahhl/rookonheroku上采取的方法(步骤1就是你需要的全部内容)没有使用Rook).

请注意,Heroku可能不允许您在与Rails应用程序相同的线程中启动第二个进程,这是大多数绑定所做的.这可能使得这些绑定工作变得相当困难,这就是为什么我倾向于对R进行shell,或者将其暴露为Web服务并通过HTTP访问它.