Рекомендации по использованию R с SimpleDB или BigQuery или PHP с SimpleDB - PullRequest
6 голосов
/ 19 августа 2011

В настоящее время я работаю над системой, которая генерирует рекомендации по продуктам, такие как Amazon : "Люди, которые купили это, также купили это .."

Текущий сценарий:

  • Извлеките данные Google Analytics клиента и вставьте их в базу данных.

  • На веб-сайте клиента при загрузке страницы продукта выполняется вызов API для получения рекомендаций по рассматриваемому продукту.

  • Когда API получает идентификатор продукта в качестве запроса, он просматривает базу данных, извлекает (используя правила ассоциации) рекомендуемые идентификаторы продукта и отправляет их в ответ.

  • Список этих идентификаторов продукта будет обработан для получения информации о продукте (изображение, цена ..) на стороне клиента и отображен на веб-сайте.

  • В настоящее время я использую PHP и MYSQL с пакетом gapi и REST API. хранение на AMAZON EC2.

Мой вопрос: Теперь, если мне придется выбирать из следующего, что будет лучшим выбором для реализации вышеупомянутой концепции.

  • PHP с SimpleDB или BIGQuery.

  • Язык R с BIGQuery.

  • RHIPE- (R and hadoop) с SimpleDB.

  • Apache Mahout.

Пожалуйста, помогите!

Ответы [ 2 ]

2 голосов
/ 20 августа 2011

Это не так легко ответить, потому что ограничения довольно специализированы.

Могут быть сделаны следующие соображения:

  1. BIGQuery еще не опубликован. Таким образом, при небольшой базе использования, даже если вы находитесь в группе предварительного просмотра, вам будет сложнее получить совет по улучшению.
  2. Каждый из ваших ответов спрашивал о системе моделирования и системе хранения. Apache Mahout не является механизмом хранения, поэтому он не обязательно будет работать сам по себе. Раньше я считал, что его реализации машинного обучения были подделкой нескольких Google Summer of Code, но я обновил эту точку зрения по предложению комментатора. Похоже, что он имеет довольно неравномерный и точный охват различных алгоритмов, и не очень понятно, как компоненты поддерживаются или поддерживаются. Я побуждаю евангелиста Махута заняться этим.

В результате этого исключаются 1-й, 2-й и 4-й варианты.

Что я не совсем понимаю, так это потребность в сервере реального времени для использования Hadoop и RHIPE. Это следует делать в пакетной обработке для разработки моделей рекомендаций, а не в режиме реального времени. Я полагаю, вы могли бы использовать RHIPE как простой универсальный интерфейс для запуска запросов.

Я бы рекомендовал использовать RApache вместо RHIPE, потому что вы можете предварительно загрузить свои пакеты и модели. Я не вижу никакого преимущества в использовании Hadoop в передней части, но это была бы очень естественная внутренняя система для подгонки модели.

(Обновление 1) Другие опции интерфейса включают RServe (http://www.rforge.net/Rserve/) и, возможно, RStudio в режиме сервера. Существуют интерфейсы R / PHP (см. Комментарии ниже), но я подозреваю, что было бы лучше получить доступ к R через HTTP или TCP / IP.

(Обновление 2) Обращаясь ко всему процессу, основная идея, которую я вижу, состоит в том, что вы можете запросить данные из PHP и перейти к R или, если вы хотите сделать запрос изнутри R, посмотреть ссылку в комментариях (чтобы инструменты OmegaHat) или опубликуйте новый вопрос о R & SimpleDB - я уверен, что кто-то еще на SO сможет лучше понять эту конкретную связь. RApache позволит вам создать множество процессов R, уже подготовленных с загруженными пакетами и данными в ОЗУ; таким образом, вам нужно будет передать только те данные, которые необходимо использовать для прогнозирования. Если ваши новые данные представляют собой небольшой вектор, то с RApache все должно быть в порядке, и, похоже, это правильно для данных, обрабатываемых в режиме реального времени.

1 голос
/ 20 августа 2011

Если вам нужен API в реальном времени для рекомендаций, основанных на данных в базе данных, Apache Mahout делает это напрямую. Вы хотите использовать ReloadFromJDBCDataModel, поставить поверх GenericItemBasedRecommender и использовать оболочку на основе сервлета в модуле examples. Вероятно, это день или два работы, чтобы ознакомиться с кодом и настроить его под свои нужды, но это довольно просто.

Когда вы преодолеете около 100 миллионов точек данных, вам нужно будет рассмотреть вопрос о распределении вычислений Hadoop. Это немного сложнее. Mahout также имеет распределенную рекомендацию, которую вы можете настроить.

...