我试图找到给定数据的频繁项集。在这种情况下,这是一个关于汽车数量的简单示例,如果某个年龄的人已婚或未婚。
1 项集和 2 项集的集合如下:
---Freq. 1-itemsets---> 9 times!
[
(1) [age:[20,24]]
(2) [age:[25,29]]
(1) [age:[30,34]]
(1) [age:[35,39]]
(2) [married:[no]]
(3) [married:[yes]]
(1) [num_cars:[0,0]]
(2) [num_cars:[1,1]]
(2) [num_cars:[2,2]]
]
---Freq. 2-itemsets---> 14 times!
[
(1) [age:[20,24],married:[no]]
(1) [age:[20,24],num_cars:[1,1]]
(1) [age:[25,29],married:[no]]
(1) [age:[25,29],married:[yes]]
(1) [age:[25,29],num_cars:[0,0]]
(1) [age:[25,29],num_cars:[1,1]]
(1) [age:[30,34],married:[yes]]
(1) [age:[30,34],num_cars:[2,2]]
(1) [age:[35,39],married:[yes]]
(1) [age:[35,39],num_cars:[2,2]]
(1) [married:[no],num_cars:[0,0]]
(1) [married:[no],num_cars:[1,1]]
(1) [married:[yes],num_cars:[1,1]]
(2) [married:[yes],num_cars:[2,2]]
]
(不要关心括号中的数字,它只是这个项目集的频繁;在这个例子中给定 min_support 是 0.1)
现在我想获得频率。来自频率的 3 个项目集。2项集。在这种情况下,我可以结合两个频率。2-项目集,谁的交集只有一个元素。现在我必须检查这个组合的所有子集(大小为 2)是否都是频率中的元素。2项集。
如果我这样做,我会得到以下信息:
---Freq. 3-itemsets---> 6 times!
[
(1) [age:[20,24],married:[no],num_cars:[1,1]]
(1) [age:[25,29],married:[no],num_cars:[0,0]]
(0) [age:[25,29],married:[no],num_cars:[1,1]]
(1) [age:[25,29],married:[yes],num_cars:[1,1]]
(1) [age:[30,34],married:[yes],num_cars:[2,2]]
(1) [age:[35,39],married:[yes],num_cars:[2,2]]
]
但是现在,如您所见,我得到了一个频率。3-itemset,它的频率为 0。因此它不应该在 freq 的集合中。3项集。
如果我让我们从例如 Weka ( http://www.cs.waikato.ac.nz/ml/weka/ ) 计算这个示例,则所述项集不会出现在结果中。
但我可以通过组合 {age:[25,29],married:[no]} 和 {married:[no],num_cars:[1,1]} 来生成它。
所以我的问题是:
我在生成频繁项集时是否犯了错误(我的程序在上面构建了这个),或者如果子集是 freq 的元素,我是否必须首先过滤生成的候选者。2-项目集,然后如果频繁大于 0 ???
我希望我能清楚地解释我的问题......
谢谢您的帮助!!