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

goo*_*ing 37 mysql database machine-learning

我正在开发电子商店,在那里我会卖食物.我想有一个建议框,我建议我的用户可以根据购物车中已有的东西购买其他产品.如果他有啤酒,我希望他通过降低他购买它的概率的百分比来推荐筹码和其他东西.但我希望我的算法能够根据所有用户以前的购买情况来学习杂货.我应该从哪里开始?我有杂货表user_id,item_id,date和类似的.如何在没有暴力强制的情况下制作一个不可能的建议箱.

Nev*_*uyt 43

你要描述的是推荐引擎; 更具体地说是协同过滤 它是亚马逊的"购买x也购买了y"功能的人的心脏,以及Netflix的推荐引擎.

这是一项非常重要的工作.因为,为了获得任何甚至远程有用的东西,可能比首先构建电子商务网站更容易.

例如:

  • 你不想推荐已经在篮子里的物品.
  • 你不想推荐已经在篮子里的东西更便宜的版本.
  • 你不想推荐缺货的商品.
  • 你不想建议在统计上是有效的项目,但没有任何意义("嘿,你买尿布,为什么不买啤酒?" -有一个故事,在超市里,有一个统计相关性,因为爸爸出门晚上买尿布,同时拿六个包).
  • 确实想要推荐促销中的商品
  • 现在不想推荐与促销中的项目类似的项目

当我尝试类似的项目时,很难向非技术人员解释计算机根本不明白推荐啤酒和尿布是不合适的.一旦我们使基本解决方案工作,构建排除和边缘案例逻辑至少需要花费很长时间.

实际上,我认为这些是您的选择:

  • 手动维护相关产品.耗费时间,但不太可能导致奇怪.
  • 使用现成的解决方案 - SaaS或包含像R这样的库来支持这一点.
  • 推荐(半)随机产品.有一组你想推荐的产品,并随机选择一个 - 例如,促销产品,"畅销"列表中的产品,成本低于x的产品.排除可能有问题的类别.

所有这些选择都可以在合理的时间内实现; 从头开始构建一个合适的解决方案的问题是,每个人都会针对亚马逊来衡量它,他们对你有一个良好的开端......

  • (并打乱了啤酒买家) (8认同)
  • +1.绝对值得一读!即使它提出的问题多于OP的答案.:) (4认同)
  • 实际上,数据挖掘的全部意义在于发现啤酒与尿布一起使用.这是你自己找不到的东西,但这是有道理的,并使啤酒的销量上升. (4认同)
  • 没有啤酒到正确的群体,而他们通过diappers实际上是一个准确的建议,并确实增加啤酒销售 (2认同)

Cid*_*Cid 8

这是Apriori算法在数据挖掘中解决的常见问题.您可能需要创建另一个表来维护此统计信息,然后根据首选组合进行建议


小智 6

嗯...你正在寻找一个产品推荐引擎然后......好吧,他们基本上来了三种口味:

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

   第一个收集并存储有关用户活动,偏好,行为等的数据......然后将这些数据发送到引擎,将引擎分成用户通道.每个频道都有一些特殊的喜欢和不喜欢.因此,当您有新访问者时,他或她将被分类并被分类为特定的用户个人资料.然后将根据此个人资料的喜欢/不喜欢显示项目.

   现在,基于内容的过滤使用了一种不同的方法 - 一种较少社交的方法 - 只考虑用户以前的浏览历史记录,偏好和活动.从本质上讲,这将根据用户之前喜欢/购买的内容创建推荐.

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

   我认为,当您有大量用户涌入时,协作过滤是一个很好的选择 - 只有42个用户/月访问您的网站,有点难以建立良好的渠道.基于内容的第二个选项对于拥有大量产品的小型网站来说更好 - 但是,恕我直言,第三个是适合您的网站 - 构建一些可以让用户从一开始就收集并将他们生成的所有数据收集到的内容,在未来,能够提供类似亚马逊的推荐体验!

   建立其中一个并非易事,因为我相信你已经知道了...但我强烈推荐这本书(使用个人历史记录过滤!)过去真的为我提供了这个:http:// www .amazon.com /算法,智能的Web-HARALAMBOS-Marmanis/DP/1933988665

祝你好运,学习好!


Flu*_*feh 5

我认为最好的方法是对您的项目进行分类并使用该信息进行选择.

我在杂货店网站上做了这个,结果很好.我们的想法是将组项目分成多个类别.

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

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

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
Run Code Online (Sandbox Code Playgroud)

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

让我们说某人的篮子包含香蕉,Museli和Sugar Puffs.

这是三个早餐项目,两个健康,一个不是那么多.

建议牛奶与三者相匹配.没有冲动买?再试一次,扔进新西兰水果.等等等等.

这里的想法是匹配许多不同类别的项目(尤其是那些可能不直接明显的项目),并使用这些计数为您的客户建议最佳项目.


Ric*_*mba 5

根据购买该商品的其他顾客的购物习惯进行交叉销售.假设您在数据库中有此购买历史记录(订单表):

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

然后,如果您的客户在购物车上装有啤酒,则根据您客户的购物习惯,您可以轻松查询并查看与啤酒相关的商品:

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

然后你可以建议芯片和汽水......你的购买历史越大,系统的建议就越准确.

  • 在这种方法中,建议列表还将包含与购买无关的流行产品.我建议使用某种[TF/IDF](http://en.wikipedia.org/wiki/Tf*idf)排名. (3认同)

Ste*_*ert 0

您可以使用人工神经网络来学习根据以前的购买组合不同的产品。

以下是有关该主题的两个资源:

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

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