使用频繁项集挖掘来构建关联规则?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用频繁项集挖掘来构建关联规则?相关的知识,希望对你有一定的参考价值。

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

Dataset 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)等也是如此。

Dataset 2:

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

我解释这个的方式是在某个时间点,发生5次A,1次发生B,5次发生C和2次发生E,等等。

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

有人能指点我一个实用的教程/例子(最好用Python)或至少解释一下如何解决这个问题?

答案

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

  • 关联规则是一种无向数据挖掘,它在数据中找到预先未指定目标的模式。模式是否有意义留给人类解释。
  • 关联规则的目标是检测大集合中分类变量的特定值之间的关系或关联。
  • 规则可以解释为“70%购买葡萄酒和奶酪的顾客也购买葡萄”。

要查找关联规则,可以使用apriori算法。已经存在许多python实现,尽管它们中的大多数在实际应用中效率不高:

或使用橙色数据挖掘库,其中有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)

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

没有简短的方法。

另一答案

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

另一答案

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

如果您只使用基本的Apriori,那么您将丢失有关数量的信息。

以上是关于使用频繁项集挖掘来构建关联规则?的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用apriori算法进行关联规则挖掘实战:关联规则概念频繁项集支持度(support)置信度(confidence)提升度(lift)apriori算法

多维关联规则挖掘算法r语言能实现吗

数据挖掘算法:关联分析二(Apriori)

频繁项集和关联规则 - Apriori 算法

使用Apriori进行关联分析

机器学习实战精读--------Apriori算法