【问题标题】:How to efficiently find all stored subsets of a set? (association rule lookup)如何有效地找到集合的所有存储子集? (关联规则查找)
【发布时间】:2017-11-02 08:49:39
【问题描述】:

我最近一直在试验association rule learning,从庞大的交易数据库生成规则。我想使用这些规则实时提出建议。

有很多关于如何生成规则的文献,但我似乎找不到任何关于人们如何以实时方式实际使用这些规则的信息,并且暴力破解非常痛苦慢。

所以问题是: 我有成千上万个集合 R(规则前件),我想获得所有集合(来自 R),它们是某些提供的集合 X 的正确子集。我怎样才能最有效地做到这一点?

(只有查找要快,构建数据结构不需要)

附加信息:

  • R 包含约 20000 套(目前,应该支持更多)。
  • R 中的集合的基数通常小于 10。
  • X 通常具有大约 30 的基数,但也可以大到 1000(很少见)。
  • 讨论的所有集合都包含从 0 到大约 30000(目前)的整数(数据库 ID)。

【问题讨论】:

  • 我有几个问题。你期望 X 有多大?另外,你知道可以输入的所有 X 的可能值吗?这个数字是基于 R 的大小吗?
  • 好问题@JaysonBoubin,我会更新问题。
  • 顺便说一句,X 的大小与 R 的大小无关。
  • 您说 X 通常大小为 30,但也可以大到 1000。您知道 X 的所有可能值吗?如果有,有多大?
  • 嗯,X 是用户购物车中的产品 ID 列表,查找用于查找用户可能想要购买的 其他 产品,基于关联规则。用户可以在他的购物车中拥有多少产品没有限制,但我的数据库中没有任何示例超过 1000。

标签: algorithm data-structures data-mining


【解决方案1】:

不要过度自动化。

尝试自动使用任何无监督方法的输出通常是个坏主意。相反,输出需要由人工分析和检查。有太多“正确”的模式,但对业务没有任何价值,也没有任何新意。他们可能只是反映如何,例如当前产品推荐的工作方式,或商店当前的布置方式。例如,从数学上看,最好向购买意大利面的人推荐番茄酱。虽然这确实是一个常见的联想,但您可能会在此推荐下多卖 0 个番茄酱,因为每个人都知道意大利面+番茄味道很好,无需告诉他们。

相反,让专家浏览规则,找到那些出乎意料的,然后计划一个适当的 A/B 测试来验证这是否真的有效。

【讨论】:

  • 虽然一般来说是合理的建议,但这并不能回答问题。让我们假设(不失一般性)规则是由专家策划的——我们仍然可能有太多规则无法使用蛮力进行查询。
  • 我认为使用简单的树匹配器匹配数百万条规则没有问题。很可能,您只是通过尝试计算所有集合而不是匹配来严重接近它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多