关联规则挖掘
关联规则挖掘是从交易数据库、关系数据库以及其他的数据集中发现项 或对象的频繁模式(frequent patterns)、关联( associations)的 过程。
已有:一段时间内顾客购买的所有小票清单,为了方便我们把A:炸鸡,D:可乐
- 假如有一条关联规则:炸鸡->可乐,——也可看为概率事件
- 买炸鸡的占3/5,买可乐的占4/5, ——P(A)=3/5, P(D)=4/5
- 支持度support:同时买炸鸡可乐的占3/5, ——P(AD)=3/5
- 置信度confidence:买炸鸡的人中买可乐的占3/3,——P(AD)/P(A)
频繁模式与关联规则
- 频繁项集:没有先后或因果(经常一起买的商品,比如i面包+牛奶,炸鸡+可乐)
- 关联规则:涉及时间和顺序(买此商品也同时购买,比如?)
- (item, transaction) (商品,交易) (词,段落/句子)
- 交易数据库Transactional database
- - 每个交易由顾客一次购买的商品(items)组成
- - 全部商品的集合,即所有项的集合I={i1, i2, …, im}
- - 项集(Itemset): x={ij1,ij2,…,ijp}, iji属于I
- - 每个项集包含的项的个数,称为项集的长度,一个长度为k的项集又称为k项集。
支持度
支持度指交易包含项集X的概率其中D的模表示交易的个数
- 若support(X) >=最小支持度阈值minsup ,则X称为频繁项集 (frequent itemset),也可以说X是频繁的.
- 设minsup = 50%,那么频繁项集为:{A:3, B:3, D:4, E:3, AD:3}
- 其中A表示项集(itemset),3表示出现的次数,即count(A)
-
该项集时频繁的,其自己也是频繁的,例如{A} {A, B} {A, AD}等
-
如果一个项集时不频繁的,那么他的超集都是不频繁的
- 设minsup = 50%,那么频繁项集为:{A:3, B:3, D:4, E:3, AD:3}
- 一个频繁项集 X 被称为闭合频繁项集(closed frequent itemset)当 且仅当不存在任一个项集Y满足XÌY 且support(Y)=support(X)。闭 合频繁项集X被称为是闭合的。
- 例如: - A是频繁的,但不是闭合的, 因为support(AD)=support(A),且
- 然而{AD}时闭合的,因为不存在一个与他具有相同支持度的超集
- 例如: - A是频繁的,但不是闭合的, 因为support(AD)=support(A),且
置信度
- 关联规则
- 给定两个项集X 和Y,关联规则是形如X→Y 的蕴含式
- 规则X→Y的支持度(support) support(X→Y)=support(X∪Y)
- 规则X→Y的置信度(confidence)
- 给定两个项集X 和Y,关联规则是形如X→Y 的蕴含式
关联规则的挖掘
- 给定如下阈值
- - minimum support : minsup
- - Minimum confidence :minconf
- 发现所有形如X -> Y 的关联规则,满足
- - Support(X -> Y)≥ minsup
- - Confidence(X -> Y)≥ minconf
- - 若上述两点同时满足,则称该规则在数据库中成立
频繁项集的典型挖掘算法
关联规则的挖掘步骤:发现所有的频繁项集,从频繁项集中发现关联方法
逐层发现算法Apriori
- 主要步骤(简单来说,先发现1项集,再发现2项集,,,发现n项集合)
- 1. k=1
- 2. 统计每个k项候选集的支持度,找出频繁的k项集(support(x)>minsip):Lk
- 3. 利用频繁的k项集生成k+1项候选集(Candidate itemset ):Ck+1
- 由于【如果一个项集时不频繁的,那么他的超集都是不频繁的】,可以判断其候选集是不是频繁的
- 4. k=k+1; 转至步骤2
- 例子:
无候选集发现算法FP-growth
关联规则的生成方法
关联规则的其他类型
多层次关联规则
- 什么品牌的啤酒和尿片有关联?
负关联规则、无关规则(dissociation rule)
play basketball -> not eat cereal [20%, 33.3%]