@Billy-The-Crescent
2019-06-16T21:03:35.000000Z
字数 3138
阅读 660
数据挖掘
关联规则挖掘
数据挖掘技术与原理主目录:
目录
第三章目录:
itemset
is a set of items in
association rule:
以上的公式定义了关联规则的一般特性
Support: ,表示有多少的概率发生事件,即一个购物篮同时出现面包和牛奶。
Confidence: ,表示发生了X的情况下发生了多少概率的Y,即在包含了面包的购物篮中有多少概率有牛奶
主要特点:
- 完全性,寻找所有规则
- 右手端没有目标对象 (即不是if判断的运作模式,和决策树、分类等不同)
- 需要对磁盘上的数据进行挖掘
这样大小为k的象集需要个潜在的关联规则,即指数级的计算量。
任何强关联规则在箭头的左右两端的并集都是频繁象集。任何强关联规则都是由频繁象集拆解成两个子集得到的。
不同的算法得到的是相同的强关联规则,但是每个算法的效率却不同。
步骤:
1. 找到所有频繁象集
2. 根据频繁象集生成关联规则
The apriori property (downward closure property):向下闭包属性
一个频繁象集的子集一定是频繁象集,一个非频繁象集的超集一定不是频繁象集。
逐层搜索的迭代算法,从一象集开始统计频繁象集,以频繁一象集的超集开始统计第二轮的频繁象集。
表示大小为k的候选象集,为大小为k的频繁象集。
全集中的象以字典顺序排序,即从小到大排序。
Algorithm Apriori(T)
C_1 = init-pass(T)
F_1 = [f for f.count/n >- minsup]
for (k=2; F_k-1 != NULL; k++) do
C_k = candidate-gen(F_k-1);
for each transaction t in T do
for each candidate c in C_k do
if c in t
c.count++;
end
end
F_k = [c for c.count/n >= minsup]
end
return all frequent itemset
生成候选象集
两个步骤:
1. join step: 生成所有可能的k个象的象集,
中的象进行连接操作,当且仅当前个象相同而最后一个象不同的时候,才进行连接,得到。
如({AB},{AC},{BC},{AD},{BD})四个频繁二项集进行连接,k为3,k-1为2,k-2为1,AB和AC的第一个项都是A,因此{ABC}是候选的二项集。同理,{ABD},{ACD},{BCD}也是可能的二项集。
2. 任何一个子集都属于,如果不满足,则从中去除。
进行剪枝,由于{ACD}的子集{CD}不在频繁二项集中,因此减掉{ACD},同理减掉{BCD},因此候选象集C3为{ABC}和{ABD}。要判断这两个候选象集是否是频繁的,需要查看他们支持度是否超过阈值。
3. 判断候选象集是否是频繁象集
判断confidence是否大于用户定义的阈值
原则上,加入频繁象集是{ABCD},则从{ABCD}->{}开始,将左边的项移到右边,计算置信度。若当某个时候置信度小于阈值了,则可以停止将左边的项移到右边了,因为之后的组合都不是关联规则。
比如,{ABC}->{D}的置信度小于阈值,则所有D在箭头右边的组合都不是关联规则,因此这个时候D固定在了左边。又比如,{BC}->{AD}的置信度小于阈值,则所有AD在箭头右边的组合都不是关联规则,即A和D不能同时在右边。
计算时,从{ABCD}->{}开始,依次分别将A,B,C,D移到右边,若有一个如{BCD}->{A}不满足,则不再在此基础上把B,C,D移到右边,而是从{ACD}->{B}开始考虑。
和在之前扫描数据集的时候都已经储存。
该算法扫描数据集的个数取决于象集长度,即购物篮的物品个数。一般来说,k取<10。即一般来说扫描数据集不超过10次。
计算举例:
关联规则并没有考虑事务的序列信息
是一个象集
比如:考虑买房之后购买家具的可能性,需要采用序列模式挖掘。
比如说[{3,4},{5},{8}]的size是3,length是4。
如果sequence s1的每个象集都是sequence s2对应(顺序一一对应)的每个象集的子集,那么就说s1是s2的子序列(subsequence),而S2是s1的超序列(supersequence)。
mining sequential patterns的任务是在给定一系列序列的结合S的情况下,找到所有满足用户定义的最小支持度的序列 (频繁序列 frequent sequence 或 序列模式 sequential pattern)。
代码框架和Apriri算法相似
这里的k指的是序列长度length,而不是大小size
如何利用形成?
例子:
和进行拼接,会产生
进行拼接,会产生。因为v和z在一个项集里面,因此合并后v也和z在一个项集里面。
计算示例
因此,设频繁一序列的个数为,则从生成的序列模式数目会有,即5个频繁一序列可以生成40个未剪枝的候选二序列;而候选二序列集一般不会有序列被剪枝,因此候选二序列的数目就是。
此后,对每一个候选二序列计算支持度,从而选出频繁二序列。
形成后,计算支持度,如果支持度高于阈值,则划为频繁序列,否则剪掉。