【问题标题】:Using frequent itemset mining to build association rules?使用频繁项集挖掘构建关联规则?
【发布时间】:2011-10-26 05:28:58
【问题描述】:

我是这个领域以及术语的新手,所以如果我在某个地方出错,请随时提出建议。我有两个这样的数据集:

数据集 1:

A B C 0 E
A 0 C 0 0
A 0 C D E
A 0 C 0 E

我对此的解释是在某个时间点,(A,B,C,E) 一起发生,(A,C)、(A,C,D,E) 等也是如此。

数据集 2:

5A 1B 5C  0 2E
4A  0 5C  0  0
2A  0 1C 4D 4E
3A  0 4C  0 3E

我的解释是在某个时间点,A 出现 5 次,B 出现 1 次,C 出现 5 次,E 出现 2 次,依此类推。

我正在尝试找出哪些项目一起发生,如果可能的话,还要找出原因和影响。为此,我不明白如何使用这两个数据集(或者如果一个就足够了)。最好有一个很好的教程,但我的主要问题是使用哪个数据集以及如何继续(i)构建频繁项集和(ii)在它们之间建立关联规则。

有人可以给我指出一个实用的教程/示例(最好用 Python),或者至少简要解释一下如何解决这个问题?

【问题讨论】:

    标签: python machine-learning data-mining


    【解决方案1】:

    关于关联规则的一些理论事实:

    • 关联规则是一种无向数据挖掘类型,可在数据中查找未事先指定目标的模式。这些模式是否有意义取决于人类的解释。
    • 关联规则的目标是检测大型集合中分类变量的特定值之间的关系或关联。
    • 并且规则可以解释为“70% 的购买葡萄酒和奶酪的客户也购买葡萄”。

    要查找关联规则,可以使用先验算法。已经有很多python实现了,虽然大部分在实际使用中效率不高:

    或者使用Orange数据挖掘库,它有一个good library for association rules

    使用示例:

    '''
    save first example as item.basket with format
    A, B, C, E
    A, C
    A, C, D, E
    A, C, E
    open ipython same directory as saved file or use os module
    >>> import os
    >>> os.chdir("c:/orange")
    '''
    import orange
    
    items = orange.ExampleTable("item")
    #play with support argument to filter out rules
    rules = orange.AssociationRulesSparseInducer(items, support = 0.1) 
    for r in rules:
        print "%5.3f %5.3f %s" % (r.support, r.confidence, r)
    

    要了解更多关于关联规则/频繁项挖掘的信息,那么我选择的书籍是:

    没有捷径可走。

    【讨论】:

    【解决方案2】:

    使用Bayesian network 似乎是处理此类问题的一种巧妙方法。特别是作为贝叶斯网络结构学习问题。一旦你有了它,你将能够有效地回答 p(A=1|B=0 and C=1) 等问题。

    【讨论】:

      【解决方案3】:

      如果您对每个项目都有数量,那么您可以考虑“高效用项目集挖掘”。这是项集挖掘的问题,但适用于每个交易中物品可以有数量并且每个物品也可以有权重的情况。

      如果你只使用基本的 Apriori,那么你会丢失关于数量的信息。

      【讨论】:

        猜你喜欢
        • 2011-03-04
        • 1970-01-01
        • 2015-04-29
        • 2014-01-25
        • 2018-11-06
        • 2014-02-11
        • 2015-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多