其中一种“产品”的推荐引擎

时间:2011-03-24 23:15:02

标签: java c++ python ruby recommendation-engine

我们正在建立的市场允许人们列出他们的东西出售,但批量/袋/箱。我们正在寻找建立一个推荐引擎,但大多数文章似乎更适合“销售”大量的许多产品的市场 - 即亚马逊,netflix等因为每个列表有点独特,什么是推荐引擎的最佳方法?那里有相关的文章吗?

我们知道人们过去买过的物品。 我们知道他们正在寻找的大小或年龄适合。

列出的捆绑包包含类别,品牌,尺寸/年龄,颜色和自由格式文本。

有什么想法可以帮助我们开始?如果我们的数据存储在MySQL中,您认为哪种语言最好?

2 个答案:

答案 0 :(得分:2)

您可以使用推荐引擎过滤一些内容。您可以过滤特定用户之前购买的内容(在您的情况下,他们购买的产品中存在哪些功能)。您还可以过滤社交分组 - 类似用户或产品分组 - 其他产品,例如之前销售过的产品。我建议您首先对产品进行集群,然后将个人或组映射到该产品集群中的功能。因此,您最终会得到一个推荐引擎:购买具有此功能的商品的人也购买了具有这些功能的商品。然后,您可以为已知用户创建引擎:您倾向于购买具有这些功能的产品,这里还有更多类似的产品。最后,您可以为群组构建引擎:像这样的人倾向于购买具有这些功能的产品。

有了几个模型,您的系统可以根据他们目前所知的情况转向相应的模型:已知用户,已知用户组或仅知道浏览历史记录。

由于您推荐批量更多独特的产品,因此您需要在获得建议后添加其他模型,以过滤掉不适当的建议。该模型将代表兼容性。使用之前用户使用的相同控制台的新游戏比另一个控制台更兼容。如果他们上个月买了一辆新车,你就不会推荐一辆新车,但可能会有十辆洗车包。

您可以为最后一个模型使用几个不同的概念。如果您要在模型中添加明确的知识,那么您可能需要构建一个过滤掉不适当建议的信任网络。如果您要使用集体智慧,您可以使用简单回归,支持向量机或人工神经网络。我会选择最简单的实现过滤器而不用担心选择你构建的第一个模型。你可能会建立一些模型,然后你就可以通过适当的努力来获得好的结果。

您的过滤模型将经历一个测试阶段,您可以在其中进行推荐,过滤它以获得适当性,然后通过某种人为干预再次过滤 - 您希望过滤器学习的一组“答案”,或者只是一个人仔细检查结果。然后,您将使用更新的结果重新训练过滤器,重新采样并再次测试。

就推荐引擎而言,您可以使用GNU科学库(可用于任何平台的绑定)进行SVD​​。如果您要使用大数据,您还可以选择Mahout推荐引擎(Hadoop世界的一部分)。对于过滤器,您可能需要查看apophenia,libsvm或FANN。

您也可以选择在分析框架中工作一段时间,直到您感觉自己已经掌握了一些东西。一些可供选择的是Weka,R,Octave,Matlab,Maple和Mathematica。我想我已经在价格方面列出了这些,然后是易用性。

就资源而言,有一些很好的入门书籍:集体智慧,Mahout(Manning的MEAP),数据挖掘(所有关于Weka)和Modeling with Data(apophenia reference)。

我的最后一个想法是,无论您使用或不使用推荐引擎都很复杂,大部分价值都在于用户体验。来自亚马逊的一位人士写道,当他们告诉用户他们为什么提出建议时,他们的推荐引擎效果最好。这有助于用户快速采用您的推理(对他们旧的和良好的购买情绪反应),或者拒绝它并继续前进(他们已经有类似的东西,他们不需要另一个)。

答案 1 :(得分:0)

我个人更喜欢Ruby,但Ruby,Python和Perl可以轻松连接到MySQL。

我喜欢Ruby的原因之一是它的Sequel gem,它是一个非常强大的ORM,使得数据库访问非常容易管理。如果你使用MVC,Ruby有Rails赞成ActiveRecord作为它的ORM,这也使得与MySQL交谈变得容易。还有Sinatra和Padrino,它们的重量轻一点ORM,但也很有能力。他们与开箱即用的数据库不相关,并且很好地与Sequel集成。