数据挖掘算法——Close算法
说明奥:菜鸟的自我学习,可能有错。
Close算法原理:
一个频繁闭合项目集的所有闭合子集一定是频繁的,一个非频繁闭合项目集的所有闭合超集一定是非频繁的。
close算法是对Apriori算法的改进
具体步骤为:
1.先找到候选1项目集FCC1 并得到其支持度和闭合
2.之后对每个候选闭合进行修剪 如果其支持度不小于最小支持度则加入到FC1
3.自身不断循环下去 直到某个r-项目集FCCi为空 则算法结束。
栗子:
(1)计算FCC各个产生式的闭合和支持度
首先得到FCG的产生式: FCC的产生式为(A)、(B)、(C)、(D).(E)
然后计算闭合集。\例如,计算{A}的闭合。数据库中第项(ABE)包含{A},这时(A)的闭合首先得到{ABE};
第四项(ABD}包含{A},所以取{ABD)和{ABE)的交集{AB)作为(A)的闭合:
第五项{AC}包含{A},则取{AB}和{AC)的交集得到{A},作为{A)的团合;
第七项是{AC},交集为{A};第八项{ABCE)与{A}的交集是{A};
第九项{ABC}与{A)的交集是{A)。这时到了最后一项,计算完成, 得到{A}的闭合是(A)。并同时计算出{A)的支持度为6(可通过对出现的A的超集进行计数得到)。同样可以得到FCO所有的闭合与支持度
将支持度小于最小支持度的候选闭合项删除,得到FC1 这个例子FC1和FCC1是相同的为(A)(B)(C)(D)(E)
没表现出来的为空集
将支持度小于最小支持度的候选闭合项删除.得到FC2,这时(AD)和(CE)的支持度为1,被删除。FC2 = (AB,AC. BC, BD)。
(6)利用FC2的generator生成FCC3并进行裁剪
FC2连接后得到: {ABC,BCD).其中的(BCD)有非频繁子集CD).所以将这项删除。剩下为{ABC),得到的候选项FCC3 ={ABC)。嗯???这边有问题 这边没有ABD 据涛哥说。。。要第一个相同才能连接。。。。所以ABAC相同连接成ABC BC和BD相连接成BCD
(7) FCC3;不为空,计算各产生式的闭合和支持度ABC的闭合为{ABC),支持度为2。
将支持度小于最小支持度的候选闭合项删除,得到FC3.对于本例.FCC3 只有一项支持度为2,保留。
(9)利用FC3生成FCC4为空,算法结束。 将所有不重复的闭合加入到FC中得到FC={A,B,ABE,BD,C,AB,AC,BC,ABC}
(11)将L3的频繁项分解
先分解(ABE)的所产集为AB,AE和BE后两项不存在,将它们加人到L中,ABC有2-项于集为(AB)、(AC)和(BC),这三项均在L中 得到L2 = {AB AC BC AE BE BD}
(12)将L2的频繁项分解
方法同上,得L1为(A.B.C,D.E)
使用频繁闭团合项目集,发现可以提高关联规则的效率。
不理解的地方有3 待更新 等上课问老师
相连的规则必须要头相同才可以也就是说 两个相连成3个 必须要AB AC A是相同的 ABC ABD相连成四个 必须要AB是相同的才可以~~~~~ 涛哥如是说