Apriori算法中的候选k项集的产生的方法称为连接步,为什么这个连接步就可以产生所有可能的候选k项集呢?

小白么么哒 2015-12-18 09:15:01
连接步:为找出Lk,通过将Lk-1与自身连接产生候选k-项集的集合。
该候选项集的记作Ck。设l1和l2是项集Lk-1中的项集,li[j]表示li的第j项。Apriori算法中假定事务或者项集中的项按字典序排序。对于(k-1)项集li,这意味着li[1]<li[2]<…<li[k-1]。执行连接操作,其中Lk-1的元素是可连接的,如果他们前(k-2)个项相同。即,Lk-1的元素l1和l2是可连接的,如果(l1[1]= l2[1])∧(l1[2]= l2[2])∧…∧(l1[k-2]= l2[k-2])∧(l1[k-1]< l2[k-1])。l1和l2连接的结果项集是{l1[1],l1[2],…,l1[k-2],l1[k-1],l2[k-1]}。
我就是突然不明白了,为什么与自身连接就可以产生候选项集了呢,哪位同学可以用数学的思想证明一下,感激不尽。
...全文
3894 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frank-98 2017-07-27
  • 打赏
  • 举报
回复
4楼的正解,但这个过程包含了两步,你说的是第一步,通过自连接求得超集,接下来还需要一步,即:剪枝。 这个求解过程其实是有点绕人的,而且背后需要从集合论来进行数学证明。楼主如果想完全了解这个求超集的部分,可以参考Apriori发明者在1994年发表的论文,里面有详细阐述。 论文链接:http://www.vldb.org/conf/1994/P487.PDF
  • 打赏
  • 举报
回复
楼主问题的时间真的好久远了。。。今天研究Apriori算法也是在这想不通,不知道为什么安装这种方法连接就可以产生所有的频繁项集。。。搜索到这儿。。。 感觉楼上两位都没理解楼主的问题。。 最后还是自己想明白的,,,在这贴出来,,,省的以后再有人在这想不通有搜不到答案 、、、、、、、、、、、、、、、、、、、、、、、、 一个频繁项集的任何子集都应该是频繁的,所以假设X是一个存在于Lk中的k项频繁集,那么他的两个子集l1和l2(满足(l1[1]= l2[1])∧(l1[2]= l2[2])∧…∧(l1[k-2]= l2[k-2])∧(l1[k-1]< l2[k-1])。)肯定应该存在于Lk-1中,所以所有的k项频繁项集都可以由Lk-1中k项频繁项集的子集按上述方法连接产生!
coralfishsea 2017-04-08
  • 打赏
  • 举报
回复
问题可以等价于任意一个下一个频繁集的元素 X ,求证X 都可以被前一个频繁集Y的元素连接推出。 因为X频繁,所以X的子集都是频繁的。所以X可以由两个频繁子项连接而成(不妨设G,H)。因为G,H 为长度l-1, 所以G,H属于Y,得证。
baidu_33493847 2015-12-24
  • 打赏
  • 举报
回复
是自连接不是与自身连接,你说的只有频繁2项集{A,B}{C,D},那{A,C},{A,D}呢?找到前几项相同的,最后一项不同的连接,那么必然产生K+1项集,我也刚在看,仅供参考。
小白么么哒 2015-12-18
  • 打赏
  • 举报
回复
可能我没有说清楚,我的意思是为何这种方法可以产生所有可能的候选项集,而不会少产生,比如当前只有频繁2项集{A,B}和{C,D},他们就没有办法在产生任何的候选3项集,我理解{A,B,C}或者{A,C,D}都是不可能作为频繁3项集的,而且不符合连接规则的产生候选3项集的要求,但是如何说明连接规则就可以产生出可能的频繁3项集呢,不知道我的表达是否正确。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧