关联规则与序列模式

本文探讨了关联规则与序列模式在机器学习中的基本概念。定义了项目集合I、事务集合T,以及k项集的概念,并阐述了关联规则的结构,如前件X和后件Y。支持计数作为衡量规则重要性的指标,定义了事务中包含项集X的频率。此外,还介绍了支持度和规则可信度这两个关键度量,它们对于评估规则的显著性和预测能力至关重要。
摘要由CSDN通过智能技术生成
关联规则挖掘的的目标是寻找达到某种程度联系的事物集合,再由其产生相关的关联规则。它并不考虑事物发生的先后顺序。

先作出下述定义:

I ={ i1, i2, …, im}是若干项目集合,包含k个项目的集合称为k项集;T = (t1, t2, …, tn)是若干事务集合。其t I。

一个关联规则可表述成如下蕴含式形式:

X Y其中X I, Y IX Y =  X、Y被称作项集,X为前件,Y为后件。

如果ti T是X的一个超集,则称t包含X,T中包含X的事总数被称作支持计数(support count),可表示为X.count。

针对先前定义的I和T,下面定义规则支持度和规则可信度(规则为X Y):

支持度(support):

其中n为事物级T中的事总数。
可信度(confidence):


支持度表示项集X和Y同时在事 集T中出现的频繁程度,以此为依据可以在一定程度上得到此规则是否可以值得应用的信息。
可信度表示在 项集X发生的前提下 项集Y发生的条件概率。可以由此推测在X出现的同时Y出现的可能性大小。

为了使获得的关联规则有价值,设置了最小支持度(minsup)和最小可信度(minconf),当某个关联规则 → Y的支持度和可信度均不于 minsup和minconf时,则其为强关联规则。
关联规则挖掘则是找出当前事务集T中的全部强关联规则。当给定事务集T、minsup和minconf后,T中的全部强关联规则是唯一确定的。
注:minsup和minconf的值应可以根据经验设置

2.2  Apriori 算法
Apriori算法主要包含两个步骤,第一步生成全部频繁项集(支持度高于minsup的项集),第二步在频繁项集中生成所有的强关联规则(规则可信度不小于minconf)。
算法中出现的任一项集中项目按字典排序。

第一步 生成全部频繁项集算法如下:
Algorithm Apriori(T)
1 C1 init-pass(T); 
2 F1 { f | f C1, f.count/n minsup}; 
3 for (k = 2; Fk1 ≠ ∅; k++) do
4      Ck candidate-gen(Fk1);
5      for each transaction t T do
6             for each candidate c Ck do
7                   if c is contained in t then
8                       c.count++;
9              endfor
10      endfor
11      Fk { c Ck | c.count/n minsup}
12 endfor
13 return F Uk Fk;
上述生成频繁集的算法需要逐级搜索(其中需要用到候选集生成函数candidate-gen生成候选集Ck
候选集和频繁集的生成顺序依次是C→ F1 C2→……F……直至Fk1=∅。
其中C1F单独生成,5-10步筛选 C中支持度不小于minsup的项集c加入Fk中(可以不用将所有数据一次性加入内存,每次仅加入一个事务集中的项集,使得该算法可以适应大规模数据集合,但同时也可能间接增加了I/O的次数,使得I/O负荷增大,处理时间增多),最后将所有生成的 Fk合并到F中 ,F即为T中全部频繁集的集合。

Function candidate-gen(Fk1)
1 Ck ← ∅
2 forall f1, f2 Fk1
3      with f1 = { i1, … , ik2, ik1}
4      and f2 = { i1, … , ik2, i’k1}
5      and ik1 < i’k1 do
6           c { i1, …, ik−1, i’k−1};7           Ck ← Ck ∪ {c}; 8           for each (k−1)-subset s of c do9                 if (s ∉ Fk−1) then10                    delete c from Ck; 11          endfor12 endfor13 return Ck;
候选集Ck 的生成利用了向下封闭属性(Downward Closure Property)进行筛选,先将Fk−1
中的具有3、4、5步骤形式的项集对取出合并成c并加入 C k ,而后再用一个循环取出c中的所有 k-1 项子集,检测其是否在 F k1中,如果不存在,则在Ck 中删除项集c。
向下封闭属性:若一个项集是频繁的,则其所有非空子集也是频繁的。(由T中包含某频繁集的事物必包含此频繁集的子集可证)
故易知若一个项集不是频繁的,则其超集亦不是频繁的。此时即可将Ck 中不符合条件的项集删除。
(虽然应用了向下封闭属性,但如果频繁集的数目足够多,则生成的候选集中可能会含有大量的冗余非频繁项集)

当我们只对规模较小的频繁集感兴趣,如果网上商店货物推荐,某一商品下方列表只能列出很少数量的推荐物品(可以认为推荐物品与此商品同属于一个频繁集),一方面是由于网页大小限制,另一方面照顾顾客查看的便捷性。采用逐级搜索的方式可以将频繁集的搜素限制在某个规模范围内,可以节省时间和空间。

第二步根据频繁项集生成所有的强关联规则算法如下:
Algorithm genRules(F)
1 for each frequent k-itemset fk in F, k 2 do
2        output every 1-item consequent rule of fk with confidence minconf and
                 support fk.count / n
3          H1 {consequents of all 1-item consequent rules derived from fk above};
4          ap-genRules(fk, H1);
5 endfor
Procedure ap-genRules(fk, Hm)
1 if (k > m + 1) AND (Hm ≠ ∅) then
2      Hm+1 candidate-gen(Hm);
3      for each hm+1 in Hm+1 do
4            conf fk.count / (fk hm+1).count;
5            if (conf minconf) then
6                  output the rule (fk hm+1) hm+1 with confidence = conf and
                    support = fk.count / n
7             else
8                  delete hm+1 from Hm+1;
9       endfor
10     ap-genRules(fk, Hm+
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值