1.1关联分析
▶关联分析用于发现隐藏在大型数据集中的令人感兴趣的联系,所发现的模式通常用关联规则或频繁项集的形式表示。
▶关联规则反映一个事物与其它事物之间的相互依存性和关联性。如果两个或多个事物之间存在一定的关联关系,那么其中一个事物发生就能够预测与它相关联的其它事物的发生。
1.2频繁项集
▶项集:包含0个或多个项的集合。例如,{Milk,Bread,Diaper}
▶k-项集:包含k个项的项集。
▶事务与事务集:一个事务T是一个项集,每个事务均与一个唯一标识符Tid相联系。不同的事务一起组成了事务集D,它构成了关联规则发现的事务数据库个数。例如,D=5
▶支持度计数:包含特定项集的事务个数,σ({Milk,Bread,Diaper})=2
▶支持度:包含项集事务数与总事务数的比值。例如,s({Milk,Bread,Diaper})=2/5
▶频繁项集:满足最小支持度阈值(minsup)的所有项集。
▶最大频繁项集:它的直接超集都不是频繁的频繁项集。
1.3关联规则
▶关联规则:关联规则是形如X→Y的蕴含表达式,其中X和Y是不相交的项集。例如:{Milk,Diaper}→{Beer}
▶关联规则的强度:
支持度(s):确定项集的频繁程度
置信度(c):确定Y在包含X的事务中出现的频繁程度
{Milk,Diaper}→{Beer}
s=σ({Milk,Beer,Diaper})/|T|=2/5=0.4
c=σ({Milk,Diaper,Beer})/σ({Milk,Diaper})=2/3
TID | Items |
---|---|
1 | Bread,Milk |
2 | Bread,Diaper,Beer,Eggs |
3 | Milk,Diaper,Beer,Coke |
4 | Bread,Milk,Diaper,Beer |
5 | Bread,Milk,Diaper,Coke |
1.4关联规则挖掘问题
关联规则挖掘问题:
给定事务的集合T,关联规则发现是指找出支持度大于等于最小支持度阈值(minsup)并且置信度大于等于最小置信度阈值(minconf)的所有规则。
例如:
事务ID | 项集合 |
---|---|
10 | A,B,C |
20 | A,C |
30 | A,D |
40 | B,E,F |
指定最小支持度为50%,最小置信度为50%。
①根据最小支持度找频繁项集。
频繁项集 | 支持度 |
---|---|
{A} | 75% |
{B} | 50% |
{C} | 50% |
{A,C} | 50% |
②置信度通常考虑频繁二项集及以上,根据最小置信度找关联规则
规则A→C
支持度:50%
置信度:s({A,C})/s({A})=50%/75%=66.7%
规则C→A
支持度:50%
置信度:s({A,C})/s({C})=50%/50%=100%
1.5挖掘关联规则
大多数关联规则挖掘算法通常采用的一种策略是,将关联规则挖掘任务分解为如下两个主要的子任务:
①频繁项集产生:
其目标是发现满足最小支持度阈值的所有项集,这些项集称作频繁项集。
②规则的产生:
其目标是从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称作强规则。
1.6关联规则原始方法
挖掘关联规则最原始也是最暴力的方法称为蛮力法:
计算每个可能规则的支持度和置信度。这种方法计算代价过高,因为可以从数据集提取的规则的数量达指数级。
降低产生频繁项集计算复杂度的方法:
①减少候选项集的数量:先验原理:Apriori算法
②减少比较的次数:替代将每个候选项集与每个事务相匹配,可以使用更高级的数据结构,或存储候选项集或压缩数据集来减少比较次数(FPGrowth)
2.1Apriori算法
先验原理:
如果一个项集是频繁的,则它的所有子集一定也是频繁的;相反,如果一个项集是非频繁的,则它的所有超集也一定是非频繁的。
使用Apriori算法找出最大频繁项集的过程如下:
2.2Apriori算法注意问题
1.项的字典序
尽管集合具有无序性,但为了快速连接操作,通常对所有商品做一个默认的排序。
2.项的连接
对于任何两个需要连接的项集去掉第一个项集的尾项,去掉第二个项集的尾项。若剩下的项一样则可连接,若剩下的项不一样则不可连接。
A,B,C
A,B,E
两个项集去掉尾项,都剩下A,B,可连接为A,B,C,E
A,B,D
B,C,E
两个项集去掉尾项,剩下的项不一样,不可连接。
项的连接准则的优点是降低候选项的生成。
2.3Apriori算法特点
多次扫描数据库
候选项规模庞大
计算支持度开销大
缺点:需要反复的生成候选项,如果项的数目比较大,候选项的数目将达到组合爆炸式的增长。