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

问题描述 投票:23回答:3

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

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)或至少解释一下如何解决这个问题?

python machine-learning data-mining
3个回答
26
投票

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

  • 关联规则是一种无向数据挖掘,它在数据中找到预先未指定目标的模式。模式是否有意义留给人类解释。
  • 关联规则的目标是检测大集合中分类变量的特定值之间的关系或关联。
  • 规则可以解释为“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)

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

没有简短的方法。


0
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.