关联规则学习概述

在大型数据库中发现变量之间有趣关系的方法,目的是利用一些有趣的度量识别数据库中的强规则。基于强规则的概念,Rakesh Agrawal等人引入了关联规则以发现由超市的POS系统记录的大批交易数据中产品之间的规律性。例如,从销售数据中发现的规则{薄饼,鸡蛋}->{火腿肠},表明如果顾客一起买薄饼和鸡蛋,他们也有可能买火腿肠(这些顾客是想早饭吃手抓饼吧,哈哈),此类信息可以为大卖场商品组合促销电商网站产品推荐等相关商业决策提供依据。除了上述的购物篮分析外,关联规则还被应用在许多领域中,包括网络用法挖掘(web usage mining)、入侵检测、连续生产(continuous production)及生物信息学中,与序列挖掘(sequence mining)相比,关联规则学习通常不考虑在事务(transaction)中或事务间项目(item)的顺序。

基本概念

关联规则作图python 关联规则apriori算法python_关联规则项目(item)的集合。给定一个交易数据库关联规则作图python 关联规则apriori算法python_关联规则作图python_02,其中每个事务(transaction)关联规则作图python 关联规则apriori算法python_Apriori算法_03关联规则作图python 关联规则apriori算法python_Python关联规则挖掘_04的非空子集,即,关联规则作图python 关联规则apriori算法python_关联规则作图python_05,每一个事务都与一个唯一的标识符TID(transaction ID)对应。

关联规则是形如关联规则作图python 关联规则apriori算法python_关联规则_06的蕴含式,其中关联规则作图python 关联规则apriori算法python_Apriori算法_07关联规则作图python 关联规则apriori算法python_关联规则_08关联规则作图python 关联规则apriori算法python_FP growth算法_09关联规则作图python 关联规则apriori算法python_Python关联规则挖掘_10分别称为关联规则的先导(antecedent或left-hand-side,LHS)和后继(consequent或right-hand-side,RHS)。

关联规则关联规则作图python 关联规则apriori算法python_关联规则_06关联规则作图python 关联规则apriori算法python_关联规则_12中的支持度(support)是关联规则作图python 关联规则apriori算法python_关联规则_12中包含关联规则作图python 关联规则apriori算法python_FP growth算法_14的事务所占的比例,即概率关联规则作图python 关联规则apriori算法python_Apriori算法_15置信度(confidence)是包含关联规则作图python 关联规则apriori算法python_FP growth算法_09的事务中同时包含关联规则作图python 关联规则apriori算法python_Python关联规则挖掘_10的比例,即条件概率关联规则作图python 关联规则apriori算法python_关联规则作图python_18。如果同时满足最小支持度阈值(minimum support)和最小置信度阈值(minimum confidence),则认为关联规则是有用的,上述两个阈值由用户或专家根据经验或者需要设定

举例说明概念

表1:关联规则的简单例子

TID

网球拍

网球

运动鞋

羽毛球

1

1

1

1

0

2

1

1

0

0

3

1

0

0

0

4

1

0

1

0

5

0

1

1

1

6

1

1

0

0

上表是顾客购买记录的数据库关联规则作图python 关联规则apriori算法python_关联规则_12,包含6个事务,项集关联规则作图python 关联规则apriori算法python_Python关联规则挖掘_20,考虑关联规则关联规则作图python 关联规则apriori算法python_关联规则作图python_21,事务关联规则作图python 关联规则apriori算法python_Python关联规则挖掘_22包含网球拍,事务关联规则作图python 关联规则apriori算法python_关联规则作图python_23同时包含网球拍和网球,
关联规则作图python 关联规则apriori算法python_FP growth算法_24
关联规则作图python 关联规则apriori算法python_Apriori算法_25
如果给定的最小支持度(minimum support)关联规则作图python 关联规则apriori算法python_关联规则_26和最小置信度(minimum confidence)关联规则作图python 关联规则apriori算法python_Apriori算法_27,则关联规则关联规则作图python 关联规则apriori算法python_关联规则作图python_21是有趣的,认为购买网球拍和购买网球之间存在强关联。

求解算法

常用的自动从事务集中挖掘关联规则的算法有Apriori 算法和FP-Growth算法。两个求解算法的原理请自行查找相关资料了解。

Python实例

1. Apriori

pip install efficient-apriori

from efficient_apriori import apriori
transactions = [('eggs', 'bacon', 'soup'),
                ('eggs', 'bacon', 'apple'),
                ('soup', 'bacon', 'banana')]
itemsets, rules = apriori(transactions, min_support=0.5, min_confidence=0.5)

print(rules) 
# output: [{eggs} -> {bacon}, {bacon} -> {eggs}, {soup} -> {bacon}, {bacon} -> {soup}]
print(itemsets)
# output: {1: {('soup',): 2, ('bacon',): 3, ('eggs',): 2}, 2: {('bacon', 'eggs'): 2, ('bacon', 'soup'): 2}}

2. FP-Growth(该包目前有bug,不建议使用)

pip install fpgrowth_py

from fpgrowth_py import fpgrowth
itemSetList = [['eggs', 'bacon', 'soup'],
                ['eggs', 'bacon', 'apple'],
                ['soup', 'bacon', 'banana']]
freqItemSet, rules = fpgrowth(itemSetList, minSupRatio=0.5, minConf=0.5)
print(rules)
# output: [[{'eggs'}, {'bacon'}, 1.0], [{'bacon'}, {'eggs'}, 0.6666666666666666], [{'soup'}, {'bacon'}, 1.0], [{'bacon'}, {'soup'}, 0.6666666666666666]]
print(freqItemSet)
# output: [{'eggs'}, {'eggs', 'bacon'}, {'soup'}, {'soup', 'bacon'}, {'bacon'}]

参考资料

  1. 关联规则学习
  2. FP Growth: Frequent Pattern Generation in Data Mining with Python Implementation
  3. Efficient-Apriori