build议用户可以购买什么,如果他已经有东西在购物车

我正在开发出售食物的电子商店。 我想要一个build议框,在那里我会build议我的用户可以购买什么,基于他已经有什么购物车。 如果他有啤酒,我希望他可以通过降低他可能购买的概率来推荐筹码和其他东西。 但是我希望我的algorithm能够学习根据所有用户以前的购买build议杂货。 我应该从哪里开始? 我有食品杂货表user_iditem_iddate和类似的。 我怎样才能build立一个没有蛮力的build议,这是不可能的。

你所描述的是推荐引擎。 更具体的是协同过滤。 这是亚马逊“购买x的人也买了y”function的核心,以及Netflix的推荐引擎。

这是一个不平凡的事业。 因为要获得甚至是远程有用的东西,首先要做的不仅仅是构build电子商务网站。

例如:

  • 你不想推荐已经在篮子里的物品。
  • 你不想推荐已经在篮子里的东西的更便宜的版本。
  • 你不想推荐缺货的产品。
  • 你不想推荐那些统计上有效的东西,但没有意义(“嘿,你买了尿布,为什么不买啤酒?”) – 有一个故事,在超市里,有一个统计的相关性,因为爸爸出去晚上买尿布,同时拿起六包)。
  • 确实想推荐现在正在进行促销的项目
  • 您不想推荐与促销中的商品类似的商品

当我尝试了一个类似的项目时,很难向非技术人员解释,电脑根本不明白推荐啤酒和尿布并不合适。 一旦我们得到了基本解决scheme的工作,构build排除和边缘案例逻辑至less需要很长时间。

实际上,我认为这是你的select:

  • 手动维护相关产品。 费时,但不太可能导致怪异。
  • 使用现成的解决scheme – 要么是SaaS,要么包含一个像R这样的库。
  • 推荐(半)随机产品。 有一套你想推荐的产品,并随机挑选一个产品 – 例如,促销产品,“畅销产品”列表中的产品,成本低于x的产品。 排除可能有问题的类别。

所有这些select都可以在合理的时间内实现; 从头开始build立一个合适的解决scheme的问题是,每个人都会对亚马逊进行衡量,他们在你身上有一个开始。

这是Apriorialgorithm在数据挖掘中解决的常见问题。 您可能需要创build另一个表来维护此统计信息,然后根据首选组合提出build议

Humm …你正在寻找一个产品推荐引擎…那么,他们基本上有三种口味:

  • 协作过滤
  • 基于内容的过滤
  • 混合推荐系统

第一个收集和存储你的用户的活动,偏好,行为等数据…这些数据然后发送到一个引擎,将其分为用户渠道 。 每个频道都有一定的特色好恶。 所以,当你有一个新的访问者,他或她将被分类和被指定一个特定的用户configuration文件 。 然后将根据此configuration文件的喜好/不喜欢显示项目。

现在,基于内容的过滤使用了一种不同的方法 – 一种不那么社交的方法 – 只考虑用户以前的浏览历史,他的偏好和活动。 基本上,这将根据此用户以前喜欢/购买的内容来创buildbuild议。

但为什么只select其中一个,对吧? 混合推荐系统使用一点二者来提供个性化的社交推荐 。 在提供build议时,这些通常更为准确。

我认为,当您有大量用户涌入时,协作过滤是一个很好的select – build立一个只有42个用户每月访问您的网站的好渠道是相当困难的。 第二种select,基于内容,对于有很多产品的小型网站来说更好 – 但是,恕我直言,第三个是你自己的 – build立一些能够让用户从一开始就收集所有他们产生的数据,将来能够提供类似亚马逊的推荐体验!

build立其中之一并不容易,因为我相信你已经知道了……但是我强烈推荐这本书(使用个人历史过滤!),这对我来说真的已经过去了: http:// www .amazon.com /algorithm,智能的Web-HARALAMBOS-Marmanis / DP / 1933988665

祝你好运,学习好!

我认为最好的办法是分类你的项目,并使用该信息做出select。

我在一个杂货店网站上做了这个,结果工作得很好。 这个想法是将组项目分成若干类别。

例如,让我们拿一根香蕉。 这是一种水果,但它也常用玉米片或谷类食品早餐。 谷类食品也是一种早餐食品,但某些食品可能被认为是健康食品,而其他食品则是含糖食品。

通过这种方法,您可以快速开始制作这样的表格:

 Item | Category -------------+------------ Banana | Breakfast Banana | Quick Banana | Fruit Banana | Healthy Museli | Breakfast Museli | Healthy Sugar Puffs | Breakfast Sugar Puffs | Treat Kiwi Fruit | Fruit Kiwi Fruit | Healtyh Kiwi Fruit | Dessert Milk | Breakfast 

通过这样简单的查找,您可以根据这些分组轻松findbuild议的好项目。

可以说有人的篮子里有一个香蕉,缪斯利和糖泡芙。

这是三个早餐,两个健康,一个不是很多。

build议牛奶,因为它匹配所有三个。 没有冲动购买? 再试一次,扔猕猴桃。 等等等等。

这里的想法是匹配许多不同类别的项目(特别是那些可能不是直接明显的项目),并使用这些数字来为您的客户build议最好的项目。

根据购买该项目的其他客户的购物习惯进行交叉销售。 假设您在数据库中有这个购买logging(订单表):

  1. 啤酒,薯片,苏打水
  2. 啤酒,苏打水
  3. 苏打水,蛋糕
  4. 芯片,啤酒
  5. 蛋糕,芯片,啤酒

那么,如果你的顾客在他的购物车上有啤酒,根据你的顾客的购物习惯,你可以很容易地进行查询,看到啤酒相关的物品是:

  1. 芯片(3次)
  2. 苏打(2次)
  3. 蛋糕(1次)

那么你可以build议芯片和苏打水可能…你的采购历史越大,系统将提出更准确的build议。

你可能会喜欢非负matrix分解algorithm,它可以做你正在寻找的东西(除了内维尔K提到的东西)。 购买杂货的数据库表将成为matrix分解。 一个因素将是一个包含人们一起买东西的matrix。 这个matrix将比你比较每个杂货和所有其他的matrix小得多。 它会自动find合适的食品杂货群,比如Fluffehbuild议的类别,你会自动find那些。 执行步骤:

  1. 每天或每周:在购买的杂货店表上运行分解以find新的“趋势”。 保存因子matrix。
  2. 如果一个新的购物车到达:以购物车为参数调用一个求解器,你会得到一个充满了适合的产品的购物车。 build议不在购物车中的东西。

有人已经提到了图书编程集体智慧 。 这是一个好的开始。

你可以使用一个人工neural network学习根据以前的购买结合不同的产品。

这里有两个关于这个话题的资源:

http://en.wikipedia.org/wiki/Artificial_neural_network

http://www.ai-junkie.com/ann/evolved/nnt1.html

有两个基本的方法来做到这一点:

  1. 手动关联数据库中的项目(耗时但灵活)。
  2. 根据他们过去的购买情况自动确定其他人购买的项目。

看起来你正在倾向于后者。 我写了一个这样的网站,销售各种物品,并根据其他客户的过去的购买build议相关的项目。 这是我使用的查询:

 SELECT items.*, COUNT( cartitems.itemid ) AS c FROM items LEFT JOIN cartitems ON ( cartitems.itemid = items.id ) LEFT JOIN carts ON ( carts.id = cartitems.cartid ) WHERE ( carts.id IN ( /* Every cart with this item: */ SELECT cartitems.cartid FROM cartitems WHERE ( cartitems.itemid = 123456 ) ) AND ( cartitems.itemid != 123456 ) /* Items other than this one */ AND carts.checkedout = TRUE /* Carts that have checked out */ ) GROUP BY cartitems.itemid ORDER BY c DESC LIMIT 5 

此示例假定他们正在查看的项目具有123456的标识。“购物车”表包含过去的购买。 “cartitems”表包含过去购买的单个项目。

寻找一个有意义的回答你的问题,我遇到了这个文件:

分析消费者购买行为的主题追踪模型

我只读了部分文档,但看起来这可能是您的问题的理论答案。 我希望它有帮助。

1 – 将每个产品分类为3层分类(types/function/价格)作为例子,所以当一个特定的产品select,你可以忽略所有其他类别,这将节省太多的时间和精力,那么你可以select相同的随机产品types/function/价格)扔在你的build议框中。

这是如果你不想在理论机器智能或复杂algorithm的麻烦潜水编码。

祝你今天愉快 :)

我认为最好的办法是用“标签模式”。 例如:

 products Table: ================================= product_id product_name tags Table: ================================= tag_id tag_name tags_products Table: ================================= id_product id_tag products registry example: ================================= 1 | Beer 2 | Chips 3 | Cake tags registry example: ================================= 1 | beer 2 | chips 3 | cake tags_products registry example: ================================= 1 | 2 1 | 3 2 | 1 2 | 3 3 | 1 

然后,你可以把所有你想要的和做一个简单的查询:)

要开心。

素不相识。

就像上面所说的每个人一样,做这个工作的关键是要实现这个目标

'x用户'也买了'y item'

基本上你需要做的是在已经存在的数据库中试验更多的表格行和列,或者链接新的关于人们查看的产品的统计数据。 您需要的一个非常重要的列是评级或类似(不像Facebook)

你需要新的表格,如:

  • 朋友表(将用户ID联系在一起形成“朋友”)
  • 像表(将链接朋友表和产品表的'匹配'产品)
  • 统计表(将链接到Like表和Product表)

您还需要使用额外的列更新现有的表,如:

  • Product_table每个产品的average_rating(0-5 / 0-10 / 0-100或类似0/1)

如果用户x用户y是朋友,他们将在朋友表中匹配他们的ID。 喜欢表将采取一个产品,其中两个用户是朋友,并像一个产品z与以下任一:( 评级0-5 / 0-10 / 0-100;像0/1)你决定哪种方法。

当产品被喜欢/评级时,其ID将具有特定的列名称产品评级正被更新+ X或-X取决于其评级或喜欢。 如果产品被评价或喜欢,你也需要决定平均积极的。 一个例子是50%的评级和100喜欢的。

完成这一切后,当用户x购买产品时,可以匹配以查看是否:

  • 用户有朋友
  • 用户的朋友也购买了产品y
  • 什么是朋友对产品的评价/喜欢?
  • 其他产品用户x的朋友评价高或喜欢
  • 哪些其他产品的用户x的朋友评价不好或不喜欢

你可以做更多的build议产品。 只需要一点点努力,你就可以和人和朋友进行热销。 市场上出现的新产品,只有更好的产品z。 如果X人和他们的朋友喜欢产品Z,他们可能会喜欢并购买新产品。