0

我想构建一个推荐引擎来支持一个在 Rails 上运行并将其数据存储在 MySQL 中的网络应用程序......类似于用户点击事物并且他们的反馈更新数据库,然后在某种实时风格的时尚。数量级我认为所有用户每秒可能进行 10 次交互;每天 100 万个数据点。

我的问题是如何构建和处理分析,以便可以快速处理事情。利用我已经知道的,我可以使用一些 Ruby 和 R(RServe,RSRuby)在现有数据集上运行 SVD/clustering/ensemble/whatevermodels,并通过不时采样更新模型/公式,但这看起来像一种非常笨拙的做事方式。有什么更好的方法来做到这一点?直接在 MySQL 中运行数学?使用一些具有出色数学功能的酷 Ruby 库?使用现成的推荐引擎包?

(尽管查看了建议的所有“类似问题”链接,但我对那里的内容明显缺乏认识。讽刺的是。:()

PS:我的背景:有几年 R 的数字人,但完全用于静态/离线数据。Python、Rails 等的新手程序员,但我可以在这方面工作。

4

1 回答 1

2

你真的需要实时吗?

我发现大多数这些“实时”案例通常并不真正需要真正的实时,但可以在后台完成。假设您想在网上商店向您的客户提供关于他过去销售的建议,可能是在当前选定的商品(其他人用此商品购买的相关商品)上,您可以简单地以设定的时间间隔预先计算该数据。

对于上述情况,我建议您使用 Rake 任务来完成繁重的工作(过去销售的建议在会话期间不会真正改变 - 相关项目的建议也是相当静态的)。

因此,我会在 Cron 作业或其他与您的 Web 应用程序异步的重复性任务期间计算这些,同时您将生成的(预先计算的)数据提供给活动用户。这样,您还可以在计算的复杂性上获得更多的灵活性,因为您可以运行比 Web 请求最多应该花费的时间更长的时间。

一个示例 rake 任务如下所示:

task :calculate_recommendations => :environment do
  // do your calculation
  // you have full access to ActiveRecord here
end

(确保包括,:environment否则 Rake 不会为您加载数据库连接。

那么如何进行计算取决于您,但我建议您查看 Gems(如Recommendify),了解他们使用哪些库来计算建议。也许这对你有帮助。

Also in the RubyToolbox there is a Recommender-Engine category that lists a few gems that are similar and may give you pointers on the right direction.

于 2012-07-19T09:44:34.687 回答