如何解决产品推荐问题:用户__bought__ XXX也__viewed__ YYY

时间:2011-03-29 03:38:30

标签: mahout recommendation-engine

我目前正在学习推荐系统,了解了协同过滤,用户CF,项目CF,很明显使用这些算法来解决如下问题: 1)用户买了XXX也买了YYY 2)用户查看XXX也查看了YYY

我的问题是:如何解决问题: 1)用户购买XXX也查看了YYY 2)用户查看XXX还买了YYY?

更新:刚刚将标题更正为:“用户已购买 XXX还已查看 YYY”

5 个答案:

答案 0 :(得分:2)

虽然我不确定这是否真的是“推荐”,但我可以告诉您如何在Mahout中跨域推荐。您将构建两个DataModel,一个基于用户项目购买,一个基于用户项目视图。您可以使用购买数据作为UserSimilarityItemSimilarity实施的输入,但是,然后将视图数据作为输入DataModel提供给Recommender实施。然后你会计算出更像你的建议。

答案 1 :(得分:0)

看看Taste framework。有关更多替代方案,请查看此帖子Recommendation Engines for Java applications

答案 2 :(得分:0)

假设您有两个表产品和sold_products。每次销售产品时,都会将其添加到sold_products表中。我们会说这两个表与product_id相关,order_id用于在sold_products中将订单分组。

我们假设您正在查看的产品的product_id为1234。

  1. 从包含该产品的最后25个订单中获取order_id列表。
  2. SELECT DISTINCT sold_products.order_id FROM sold_products WHERE product_id = 1234 LIMIT 25

    1. 从那里我们将所有的id放入由角色分隔的字符串
    2. e.g。 PO1234,PO435,PO3456 ....

      1. 从这些订单中选择产品ID,我希望按频率排名
      2. SELECT DISTINCT products。* FROM sold_products LEFT JOIN products on products.product_id = sold_products.product_id WHERE sold_products.order_id IN(PO1234,PO435,PO3456 ....)AND NOT sold_products.product_id = 1234 GROUP BY sold_products.product_id ORDER按COUNT(1)DESC

答案 3 :(得分:0)

您需要参考OReilly的“编程集体智慧”一书的第2章。要想出匹配产品,即“购买此商品的客户也购买了......”部分,您需要

  • 首先收集各种用户的偏好
  • 然后找到类似的用户
  • 然后查看他们购买或喜欢的其他商品。

上述步骤涉及算法。该书中给出了更多细节以及这些算法的python代码。

答案 4 :(得分:0)

您通常需要两个数据集。我是交易ID&作为第一和第一的产品visitorID&产品被认为是第二个,可以将任何两种产品一起销售(或查看)。你可以使用R(统计软件)&安装一个名为“arules”的软件包,以便轻松生成这些建议。

以下是您可能希望在R

中查看的示例代码

setwd(“C:/ Documents and Settings / rp / Desktop / output”); install.packages(“arules”); 库(“arules”); txn = read.transactions(file =“Transactions_sample.csv”,rm.duplicates = FALSE,format =“single”,sep =“,”,cols = c(1,2)); basket_rules< - apriori(txn,parameter = list(sup = 0.5,conf = 0.9,target =“rules”)); 检查(basket_rules);

如果您真的想了解它是如何运作的,您可能需要查看名为产品购买模式分析的http://www.tatvic.com/resources白皮书,该白皮书说明了如何使用您的网络数据完成此任务。

此外,如果您想为其使用现成的API,可以在http://www.liftsuggest.com/how-lift-product-recommendation-works

获取