【问题标题】:Algorithms for Mining Tuples of Data on huge sample space在巨大样本空间上挖掘数据元组的算法
【发布时间】:2012-09-29 23:43:52
【问题描述】:

我读到 Apriori 算法用于像一组元组一样从数据集中获取关联规则。它可以帮助我们找到最频繁的 1 项集、2 项集等。我的问题有点不同。我有一个数据集,它是一组元组,每个元组的大小都不同 - 如下:

(1, 234, 56, 32) (25、4575、575、464、234、32) . . .不同大小的元组

条目的域很大,这意味着我不能为每个元组拥有一个二进制向量,这会告诉我元组中是否存在项“x”。因此,我没有看到 Apriori 算法适合这里。

我的目标是回答以下问题:

  1. 给我 5 个数字的排名列表,大多数时间出现在 234 中
  2. 请给出最常一起出现的大小为“k”的前 5 个子集

要求:输出中数字的精确表示(不是近似的),数字的域可以认为是 1 到 10 亿。

如果没有适合这里的标准算法,我计划使用简单的计数方法。但是,如果你们知道一些可以帮助我的算法,请告诉我

【问题讨论】:

  • 巨大有多大?我对 Apriori 算法不是很熟悉,但我读过它在数百万长度的特征向量上的使用。一个好的稀疏表示会有所帮助(您似乎已经拥有)。
  • 您想要准确还是近似地表示您的数据?即,您愿意接受您的查询答案中的小错误吗?另外,您是否有任何关于数字如何关联的先验知识(不是特定数字,而是它们的分布结构)?
  • 另外,并不是说您的表示等同于超图,您可能需要查看这些算法/实现。
  • 主要问题是 - 组成元组的整数可以从 1 到巨大的数字,比如十亿 - 在这种情况下,我不能保留一个向量 (1,0,0,0,1,0 ,0,....),因为它会是矫枉过正。

标签: python data-mining graph-algorithm recommendation-engine apriori


【解决方案1】:

我曾在 Apriori 从事数据挖掘工作。问题是,你有所有这些物品吗?您实际上有多少个单独的项目 ID?我知道项目 ID 的范围可能很大,但也许它们并不全部存在。在这种情况下,稀疏的市场篮子表示可能仍然对您有好处,您将能够使用 Apriori。将您的最低支持和信心设置为高值也将消除许多低优先级链接。我使用Orange 库来满足我的数据挖掘需求。

【讨论】:

  • 没错,数据集中并不存在所有 itemId。事实上,我想使用这个数据集不仅用于分析,还用于推荐,如“预测 3 个可以通过输入数字‘X’等看到的数字”
  • 尝试使用OrangeAssociationRulesSparseInducer,它可以从稀疏数据集中导出频繁项集和关联规则。它还有一个非常清晰的association rule tutorial
【解决方案2】:

对于 Apriori,您不需要元组或向量。它可以用非常不同的数据类型来实现。常见的数据类型是排序的项目列表,它也可能看起来像 1 13 712 1928 123945 191823476 存储为 6 个整数。这本质上等同于 sparse 二元向量,并且通常非常节省内存。另外,APRIORI 实际上是为在对主内存来说太大的数据集上运行而设计的!

APRIORI 的可扩展性是事务数和项目数的混合。根据它们的不同,您可能更喜欢不同的数据结构和算法。

【讨论】:

    猜你喜欢
    • 2011-02-07
    • 2012-06-26
    • 2012-01-25
    • 2011-08-25
    • 2011-01-13
    • 2019-04-24
    • 2015-09-05
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多