关联规则挖掘
ApioriTid算法示例 ApioriTid算法示例
TID 项目集 100 空 200 {{2 3 5}} 300 {{2 3 5 }} 400 空
ApioriTid算法 ApioriTid算法
上面图中分别为Bk 和Lk ,而Ck 和Apriori 算法产生的一样,因此没有写出来 可以看到Bk 由Bk-1 得到,无须由数据库 取数据 缺点:内存要求很大,事务过多的时候 资源难以满足
Apriori算法 Apriori算法
End Lk = { c属于Ck | c.count >= minsupp} End Apriori算法得到的频集为Lk 的并集
Apriori算法分析 Apriori算法分析
分为第一次遍历和第k次遍历 第一次遍历计算每个项目的具体值,确 定大项目集1项目集L1 第k次遍历利用前一次找到的大项集Lk-1 和Apriori-gen函数产生候选集Ck ,然后 扫描数据库,得到Ck 中候选的支持度, 剔除了不合格的候选后Ck作为Lk
关联规则的发现算法
发现算法解决的是关联规则挖掘的第一 个问题 关联规则分为布尔关联规则和多值规则 多值关联规则都转化为布尔关联规则来 解决,因此先介绍布尔关联规则算法 Apriori,AprioriTid,AprioriHybrid
Apriori算法 Apriori算法
Agrawal等人在1993年提出的AIS和SETM 的基础上在1994年提出Apriori和AprioriTi Apriori和AprioriTid算法利用前次过程中 的数据项目集来生成新的候选数据项目 集,减少了中间不必要的数据项目集的 生成,提高了效率
Apirori算法分析:Subset Apirori算法分析:Subset
候选项目集Ck 是存储在一个Hash树中的, 并且要求项目集中的项目有序 Subset函数寻找所有包含在某个事务中的 候选,使用Hash查找 实质:得到候选集Ck 中候选项c的支持度
AprioriTid算法 AprioriTid算法
关联规则的目的
对于指定的minsupport和minconfidence 使得support(X) >= minsupport Confidence(X)>= minconfidence 则称关联规则X=>Y为强规则 关联规则挖掘的就是挖掘出事务集D中的 强规则
关联规则挖掘
关联规则挖掘分为两个子问题: 1,根据最小支持度找出数据集D中的所 有频集; 2,根据频集和最小置信度产生关联规则;
多值属性关联
刚才介绍的都是布尔属性关联,实际中 多值属性应用也很多 解决多值关联的办法在于把QARP转为 BARP来解决 解决要点:划分值域区间 太宽,置信度将降低 太窄,支持度将降低
多值属性关联
定义:挖掘多值关联规则问题就是在给 定的交易集合D中产生所有满足最小支持 度和最小置信度的多值关联规则的过程 MAQA算法
Apriori算法 Apriori算法
L1 = {大项目集1项目集} For(k=2; Lk-1 非空;k++) do begin Ck = apriori-gen(Lk-1 ); for 所有事务 t do begin Ct = subset(Ck , t) for 所有候选 c(属于Ct )do c.count++;
Apriori算法分析:AprioriApriori算法分析:Apriori-gen
本质是合并项目集成为候选项目集 算法: Insert into Ck Select p[1], p[2],……,p[k-1],q[k-1] From Lk-1 p, Lk-1 q Where p[1] = q[1],……,p[k-2] = q[k-2] p[k-1] < q[k-1]
MAQA算法 MAQA算法
MAQA算法将QARP问题转为BARP问题。 Step1:对于多值属性A,若取值范围为 [L,R],划分为若干区间。 若为数量属性,应用聚类算法确定值的 划分,若为类别属性,采用归纳进行划 分。
MAQA算法 MAQA算法
Step 2:将划分后的属性区间映射为序对 <A,k>,A属于布尔集 Step 3:从项目集中找出有价值的项,构 3 成频集 Step 4:在频集中迭代的找到支持度合格 的两个项,并加入频集项目集中 Step 5:应用频集产生关联规则 Step 6:确定有价值的关联规则作为输出
Apriori算法分析:AprioriApriori算法分析:Apriori-gen
然后,对于Ck 中某集合c的任意子集,如 果不存在于Lk-1 ,则删除c; 例子: L3 为 {1 2 3} {1 2 4} {1 3 5} {2 3 4}在合 并后为C3 : { { 1 2 3 4} { 1 3 4 5}}; 因为{1 3 4 5} 中的{1 4 5}不存在,所以 C3 中{1 3 4 5}应该删除,故L4 : {1 2 3 4}
AprioriTid算法由Apriori算法改进 优点:只和数据库做一次交互,无须频 繁访问数据库 将Apirori中的Ck 扩展,内容由{c}变为 {TID,c},TID用于唯一标识事务 引入Bk ,使得Bk 对于事务的项目组织集 合,而不是被动的等待Ck 来匹配
ApioriTid算法 ApioriTid算法
MAQA算法 MAQA算法
第一步划分为关键,支持度和置信度证 明对立矛盾的关系,合适划分是个重要 的步骤。 第二步和第五步都很直接,第五步计算 最小置信度 如:ABCD和AB都为频集,通过 Conf = supp(ABCD)/ supp(AB)判断是否 超过最小置信度
MAQA算法 MAQA算法
第三步为Apriori算法或者其改进算法 第六步采用interest度量方法 下面重点介绍第一步和第四步 多值划分的聚类算法CP
ApioriHybrid算法性能 ApioriHybrid算法性能
AprioriHybrid算法性能比Apriori和 AprioriTid算法都要好 经过算法统计平均,AprioriHybrid比 Apriori效率高30%,比AprioriTid高60% 但是应用上比两者都复杂,相对而言用 Apriori可以得到更简单的应用
关联规则挖掘
黎都 2004-12-21
基本概念(1 基本概念(1)
数据,数据集 项目,项目集 事务 t 包含项目集 X 支持数,频繁项目集(频集) Support(X) = a(x) / |D| 置信度
基本概念(2 基本概念(2)
关联规则: 若项目集 X与Y交集为空,则X=>Y为关 联规则,其中: Support(X=>Y) = Support(X并Y) Confidence( X=>Y) = Suppose(X并Y)/ Suppose(X)
举例:minsupp = 2 数据库: TID 项目
100 200 300 400 134 235 1235 25
ApioriTid算法示例 ApioriTid算法示例
TID 项目集 100 200 300 400 {1} {3} {4} {2} {3} {5} {1} {2} {3} {5} {2} {5} 项集 {1} {2} {3} {5} 支持度 2 3 3 3
聚类算法CP 聚类算法CP
For 每个属性值大于N的属性 do 计算每个属性对应的事务数目 寻找局部最大点和最小点确定区间 计算minL和maxL之间的事务数sumi 如果满足合并条件则合并相邻区间得到k 个区间 S = sumi的和-max(sumioriTid算法示例 ApioriTid算法示例
TID 100 200 300 400 项目集 {{1 3}} {{2 3} {2 5} {3 5} } {{1 2} {1 3} {1 5} {2 3} {2 5} {3 5}} {{2 5}} 项集 {1 3} {2 3} {2 5} {3 5} 支持度 2 2 3 2
ApioriHybrid算法 ApioriHybrid算法
这种算法将Apriori算法和AprioriTid算法 混合,利用各自优点弥补不足; 利用的原理:随着候选集的元素扩充, 所能匹配的事务将可能减少 算法:先使用Apriori算法,当能匹配的 事务减少到内存可以容纳的程度,使用 ApiroriTid算法
聚类算法CP 聚类算法CP
我已经尝试以我的理解来解释CP算法, 希望能对大家有所帮助 后续: 多层属性关联规则挖掘 约束性关联规则发现方法
S平均 = S/(K-2) 寻找所有大于c*S平均 的sumi,并把结果 存于P For P中每个区间j do If sumi /(min Ri – MinLi) > S/(minR-minL) then 保存区间 j作为输出
聚类算法CP 聚类算法CP
这里将minsupp设为c*S平均 小于支持度的信息可能丢失,所以考虑 和相邻区间合并。 如果每个区间事务数都差不多,那么 sumi和S平均都相似,很难判断哪个区间 更有价值 If语句解决了这个问题 它综合了区间宽度的因素