7

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 ライブラリを ruby​​ gem として販売することを提案しました。私はルビーとレールに比較的慣れていませんが、これは私が実行できることですか。gem でライブラリを販売する方法について調べてみましたが、あまり見つけられませんでした。

2) ここの別のスレッド (http://stackoverflow.com/questions/6495232/statistic-engine-that-work-with-heroku) で CloudNumbers について言及されていますが、Rails アプリからサービスを呼び出すことはできないようです。

3) Heroku はケーススタディの 1 つで、機械学習に Clojure、Hadoop、および EC2 を使用する FlightCaster について言及しています (http://www.infoq.com/articles/flightcaster-clojure-rails)。Heroku が Clojure をサポートしていることはわかりましたが、Clojure (具体的には Incanter) を Rails アプリに統合する方法はありますか?

何かアイデアがあれば教えてください。

4

1 に答える 1

7

Rの観点からこれに答えます。通常、次の 2 つの問題に直面します。

1) R が実行されている場所に関係なく、R とのインターフェース

2) 特別な一連の課題がある Heroku からこれを行う。

これらの最初のものには、いくつかの一般的なアプローチがあります。R へのバインディングを使用できます ( rsrubyrinrubyなど)、R にシェルアウトできます (たとえば、 ruby​​ からR -e "RCODEHERE")、R に Web サービスとしてアクセスできます (Rookパッケージ、具体的にはhttps://github.com/jeffreyhorner/rRack/blob/master/Rook/inst/exampleApps/RJSONIO.Rなど)、または などを使用して手動で R にアクセスできますrserve

これらのうち、単一の操作を行うだけで、パフォーマンスをあまり気にしない場合は、R にシェルアウトするのが最も簡単な方法です。返された出力を解析する必要がありますが、私の経験では、これが 1 回の操作で最速の方法です。

より重要な使用法については、バインディングのいずれかを使用するか、別の Heroku アプリで R を Web サービスとして設定し、HTTP 経由で呼び出すことをお勧めします。

次の課題は、Heroku で R を実行することです。標準環境の一部としては利用できず、ルート アクセス権のない読み取り専用のファイル システムであるため、単に実行することはできませんsudo apt-get install

R を gem に売り込むことは可能です -- 誰かがhttps://github.com/deet-uc/rsruby-herokuでこれを始めましたが、私は個人的にそれを機能させることができませんでした。すべての依存関係をインストールするなどして、R をHeroku上に直接構築することもできます。 Rook を使用していません)。

Heroku では、Rails アプリと同じスレッドで 2 番目のプロセスをスピンアップできない場合があることに注意してください。これは、ほとんどのバインディングが行うことです。これにより、これらのバインディングを機能させるのがかなり難しくなる可能性があります。そのため、私は R にシェルアウトするか、R を Web サービスとして公開して HTTP 経由でアクセスすることを好む傾向があります。

于 2011-09-26T10:40:56.537 に答える