java - 一种 "Products"的推荐引擎

标签 java c++ python ruby recommendation-engine

我们正在 build 的市场允许人们列出他们要出售的东西,但要以批处理/袋子/盒子的形式出售。我们正在寻求为此建立一个推荐引擎,但那里的大多数文章似乎更适合“销售”大量产品的市场——即亚马逊、Netflix 等。因为每个列表都有点独特,什么是推荐引擎的最佳方法?那里有相关文章吗?

我们知道人们过去购买过的元素。 我们知道他们正在寻找适合的尺寸或年龄。

列出的 bundle 具有类别、品牌、尺寸/年龄、颜色和自由格式文本。

有什么想法可以帮助我们入门吗?如果我们的数据存储在 MySQL 中,您认为最好使用哪种特定语言?

最佳答案

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

有了几个模型,您的系统就可以转向合适的模型,这取决于他们目前知道的是什么:已知用户、已知用户组,或者只是已知的浏览历史。

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

您可以为最后一个模型使用几个不同的概念。如果您要将明确的知识添加到人们头脑中的模型中,您可能需要构建一个信念网络来过滤掉不适当的建议。如果你打算使用集体智慧,你可以使用简单回归、支持 vector 机或人工神经网络。我会选择最容易实现的过滤器,而不用担心选择您构建的第一个模型。您可能会构建一些模型,然后再确定一个通过适当的努力就能获得良好结果的模型。

您的过滤模型将经历一个测试阶段,在此阶段您会提出建议,过滤它是否合适,然后通过某种人工干预再次过滤它——一组您希望过滤器学习的“答案”,或者只是一个人双重检查结果。然后,您将使用更新后的结果重新训练您的过滤器,重新采样并再次测试。

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

您也可以选择在分析框架中工作一段时间,直到您觉得自己可以处理事情为止。一些可供选择的是 Weka、R、Octave、Matlab、Maple 和 Mathematica。我想我首先列出了价格,然后是易用性。

就资源而言,有几本不错的入门书籍:Collective Intelligence、Mahout(来自 Manning 的 MEAP)、Data Mining(都是关于 Weka 的)和 Modeling with Data (apophenia 引用)。

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

关于java - 一种 "Products"的推荐引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5426723/

相关文章:

c++ - 查找参数化数组的大小

c++ - 帮助解决几何问题 - 不知道

python - 使用 Flask 框架登录

python - GitHub 操作 setup-python 停止工作

Javafx 表列使用比较器排序不起作用

java - 如何使用 Eclipse 将方法的局部变量或表达式转换为方法参数?

c++ - 处理 boost ublas 稀疏或密集矩阵的 API

Python:为 csv.DictWriter 设置引号?

java - Spring security java配置不拦截

java - 如何在 Java 或 Groovy 中处理并发