Возможности сбора данных / статистического анализа для приложения Heroku Rails? - PullRequest
7 голосов
/ 25 сентября 2011

У меня есть приложение rails, которое размещено на Heroku, для которого я хочу включить анализ данных в реальном времени.В идеале я хотел бы найти способ запустить обобщенную модель регрессии с повышенными параметрами, которая, как я знаю, доступна как в R (http://cran.r -project.org / web / packages / gbm / index.html), так и в Stata (http://www.stata -journal.com / article.html? статья = 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?

Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи.

1 Ответ

7 голосов
/ 26 сентября 2011

Я отвечу на это с точки зрения R.Как правило, вы столкнетесь с двумя проблемами:

1) Взаимодействие с R, независимо от того, где он работает

2) Это делается из Heroku, где есть особый набор задач.

Существует несколько общих подходов к первому из них - вы можете использовать привязку к R (rsruby, rinruby и т. Д.), Вы можете выложить в R (например, из ruby).<code>R -e "RCODEHERE"), вы можете получить доступ к R как веб-сервису (см. Пакет Rook и, в частности, что-то вроде https://github.com/jeffreyhorner/rRack/blob/master/Rook/inst/exampleApps/RJSONIO.R),), или вы можете вручную получить доступ к R, используя что-то вроде rserve.

Из них, проще всего сделать обстрел R, если вы просто выполняете одну операцию и не сильно озабочены производительностью. Вам нужно будет проанализировать возвращаемый результат, но это самый быстрый способ.в моем опыте для одной операции.

Для более значительного использования я бы предложил использовать одну из привязок или настроить R в качестве веб-службы в другом приложении Heroku и вызывать его через HTTP.

Следующая проблема - запустить R на Heroku - он не доступен как часть стандартной среды, и это файловая система только для чтения без корневого доступа, поэтому вы не можете просто сделать sudo apt-get install.

Это рВозможно, продавец R превращается в драгоценный камень - кто-то начал делать это в https://github.com/deet-uc/rsruby-heroku,, но я лично не смог заставить его работать.Также возможно собрать R непосредственно на Heroku, установив все зависимости и т. Д. - этот подход я выбрал на https://github.com/noahhl/rookonheroku (шаг 1 - это все, что вам нужно, если вы не используете Rook).

Обратите внимание, что Heroku может не позволить вам запустить второй процесс в том же потоке, что и ваше приложение Rails, что и делает большинство привязок.Это может затруднить работу этих привязок, поэтому я склоняюсь к тому, чтобы либо отдавать предпочтение либо оболочке R, либо подставлять ее в качестве веб-службы и обращаться к ней через HTTP.

...