最高和经常关闭-包括答案


10

中号ÿ  d一个Ť一个sËŤ
1个一个CË
2一个CdË
3     CË
4一个CdË
5    CdË
6    一个dË

我想找出最大频繁项目集封闭频繁项目集

  • 如果频繁项集没有任何频繁超集,则为最大值XF
  • 如果频繁项集合X∈F 没有相同频率的超集,则将其关闭

因此,我计算了每个项目集的出现次数。

{A} = 4 ;  {B} = 2  ; {C} = 5  ; {D} = 4  ; {E} = 6

{A,B} = 1; {A,C} = 3; {A,D} = 3; {A,E} = 4; {B,C} = 2; 
{B,D} = 0; {B,E} = 2; {C,D} = 3; {C,E} = 5; {D,E} = 3

{A,B,C} = 1; {A,B,D} = 0; {A,B,E} = 1; {A,C,D} = 2; {A,C,E} = 3; 
{A,D,E} = 3; {B,C,D} = 0; {B,C,E} = 2; {C,D,E} = 3

{A,B,C,D} = 0; {A,B,C,E} = 1; {B,C,D,E} = 0

Min_Support设置为 //非常重要。感谢steffen提醒您。50

是否最大 =?{一个CË}

是否关闭 =?{一个Cd} 一个ñd {CdË}

Answers:


5

我在此源代码中找到了一个稍微扩展的定义(其中包括一个很好的解释)。这是一个更可靠的(已公开的)资源:CHARM:Mohammed J. Zaki和Ching-jui Hsiao的一种有效的封闭项集挖掘算法

根据此消息来源:

  • 如果某个项目集的直接超集都不具有与该项目集相同的支持,则将其关闭
  • 如果一个项目集的立即超集都不频繁,则它是最大频率


一些说明:

  • 有必要设置一个min_support(support =包含感兴趣子集的项目集数除以所有项目集数),以定义哪个频繁出现的项目集。如果项目集的支持> = min_support,则该项目集很常见。
  • 关于算法,当尝试查找最大频繁和封闭项目集时,仅考虑具有min_support的项目集。
  • 封闭的定义中的重要方面是,是否存在具有更多支持的立即超集并不重要,只有具有完全相同的支持的即时超集才是重要的。
  • 最大频繁=>关闭=>频繁,但反之亦然。

适用于OP的例子

注意:

  • 没有检查支持计数
  • 假设min_support = 0.5。如果min_support_count> = 3,则可以满足要求
{A} = 4;由于{A,E}而未关闭
{B} = 2;不频繁=>忽略
{C} = 5;由于{C,E}而未关闭
{D} = 4;由于{D,E}未关闭,但由于{A,D}而未关闭
{E} = 6;已关闭,但由于例如{D,E}而未达到最大值

{A,B} = 1; 不频繁=>忽略
{A,C} = 3; 由于{A,C,E}而未关闭
{A,D} = 3; 由于{A,D,E}而未关闭
{A,E} = 4; 已关闭,但由于{A,D,E}而未达到最大值
{B,C} = 2; 不频繁=>忽略
{B,D} = 0; 不频繁=>忽略
{B,E} = 2; 不频繁=>忽略
{C,D} = 3; 由于{C,D,E}而未关闭
{C,E} = 5; 已关闭,但由于{C,D,E}而未达到最大值
{D,E} = 4; 已关闭,但由于{A,D,E}而未达到最大值

{A,B,C} = 1; 不频繁=>忽略
{A,B,D} = 0; 不频繁=>忽略
{A,B,E} = 1; 不频繁=>忽略
{A,C,D} = 2; 不频繁=>忽略
{A,C,E} = 3; 最大频率
{A,D,E} = 3; 最大频率
{B,C,D} = 0; 不频繁=>忽略
{B,C,E} = 2; 不频繁=>忽略
{C,D,E} = 3; 最大频率

{A,B,C,D} = 0; 不频繁=>忽略
{A,B,C,E} = 1; 不频繁=>忽略
{B,C,D,E} = 0; 不频繁=>忽略

源链接已断开,只是告诉您。是的,min_support非常重要,我使用的是.50
Mike John

1
抱歉,已修复。
steffen

1
更改了min_support = 0.5 <=> min_support_count = 3并相应地将应用程序更改为示例。
steffen

使用APRIORI,您可以节省大量的计数和构造项目集...
退出了–Anony-Mousse,2013年

@ Anony-Mousse我知道APRIORI ...我手动越过了项目集,以尽可能详细地解释封闭和最大频繁项目集的概念,因为这是操作规范(IMHO)的根源。
steffen

1

您可能需要阅读APRIORI算法。它通过巧妙的修剪避免了不必要的项目集。

{A} = 4 ;  {B} = 2  ; {C} = 5  ; {D} = 4  ; {E} = 6

B不经常去掉。

构造并计算两个项目集(尚无魔力,除非B已经存在)

{A,C} = 3; {A,D} = 3; {A,E} = 4; 
{C,D} = 3; {C,E} = 5; {D,E} = 3

所有这些都是频繁的(请注意,所有这些都B不能经常使用!)

现在使用前缀规则。仅合并以相同的n-1个项目开头的项目集。删除所有不频繁出现的子集。计算剩余的项目集。

{A,C,D} = 2; {A,C,E} = 3; {A,D,E} = 3; 
{C,D,E} = 3

请注意,这{A,C,D}并不常见。因为没有共享前缀,所以不能有更大的频繁项集!

注意我做了多少工作!

对于最大/封闭项目集,请检查子集/超集。

请注意,例如{E}=6{A,E}=4{E}是子集,具有更高的支持,即,它是封闭的,但不是最大的。{A}都不是,因为它没有比更高的支持{A,E},也就是说,它是多余的

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.