如何挖掘闭频繁项集?
在朴素方法中,它可以挖掘完整的频繁项集,然后删除每个与其真子集相符且支持度与当前频繁项集相似的频繁项集。
此方法可以导出 2100-1 个频繁项集,从而获得长度为 100 的频繁项集,然后才能开始删除冗余项集。一种推荐的技术是在挖掘阶段精确搜索闭频繁项集。这需要我们在挖掘过程中识别出闭频繁项集的方法后立即修剪搜索区域。有多种修剪策略,包括以下 −
项目合并 −如果每个包含频繁项集 X 的事务也包含项集 Y,但不包含 Y 的某个真超集,则 X ×Y 构成一个频繁闭项集,无需搜索包含 X 但不包含 Y 的项集。
子项集剪枝 − 如果频繁项集 X 是先前发现的频繁闭项集 Y 的真子集,且 support_count(X) = support_count(Y),则集合枚举树中的 X 及其所有后代都不能是频繁闭项集,因此可以被剪枝。
项跳过 − 在闭项集的深度优先挖掘中,每一层都可能存在一个与头表和投影数据库相关的前缀项集 X。如果局部频繁项 p 在多个层级的多个头表中具有相似的支持度,则可以安全地从更高层级的头表中剪枝 p。
当新的频繁项集发生变化时,必须实现以下两种闭包检查:−
超集检查 − 它可以测试这个新的频繁项集是否是一些先前发现的具有相似支持度的闭项集的超集。
子集检查 − 它可以测试新发现的项集是否是先前发现的具有相似支持度的闭项集的子集。
在分治结构下,可以采用项合并剪枝技术,此时超集测试实际上是内置的,无需显式实现超集检查。这是因为,如果频繁项集 X_Y 的发现晚于项集 X,并且具有与 X 相似的支持度,那么它应该存在于 X 的投影数据库中,并且应该是在项集合并过程中生成的。
为了有助于子集检查,可以构建一个压缩的模式树来支持挖掘出的闭项集集合。模式树的机制与 FP 树相同,只是所有发现的闭项集都明确地保存在相应的树分支中。

