1.产生的原因
为了集成自顶向下立方体计算类Apriori剪枝和自底向上多维聚集的两个优点而设计。算法在一个称为星树的数据结构上进行操作,对该数据结构进行无损数据压缩,从而降低计算的事件和内存需求量。
2.共享维剪枝
如果共享维A的值a1,不满足冰山条件,则以a1CD/a1为根的整颗子树(包括a1CD/a1C,a1D/a1,a1/a1)都可以剪枝,因为他们都是a1的更特殊化的版本。
3.方体树
基本方体ABCD的方体树,包括四层,每层表示一个维,每层有n个节点表示每个维所能取的不同值。每个节点有四个字段:属性值,聚集值,指向子女的指针和指向第一个兄妹的指针。
4.星树构造
星节点:如果单个维在属性值p上的聚集不满足冰山条件,则该节点p可以用*号代替,称为星节点。
星树:使用星节点压缩过的方体树称为星树。
5.星树创建过程
6.利用星树的计算过程,即Star-Cubing算法思想
(1)总体过程
深度优先遍历星树,通过自底向上聚集,在聚集过程中,利用共享维的概念(相当于自顶向下)剪枝。
(2)遍历过程
对上述基本星树按照深度优先遍历(BCD,ACD/A,ABD/AB,ABC/ABC):
首先最左子树一次遍历a1,b*,c*,d*得到下图结果(BCD,a1CD/a1,a1b*D/a1b*,a1b*c*/a1b*c*):
注途中:destroyed表示在回溯过程中,因为c*,d*没有兄弟节点,所以没有必要保留计算结果,删除。
另,在实际计算过程中因为a1不满足生成子女数的节点的条件,所以ACD/A后面的三个树不会生成,即不用计算。
能产生子女树的节点条件为:(1)节点的度量必须满足冰山条件;(2)产生的数必须包含至少一个非星节点。
第二棵子树遍历结果:
第三棵子树遍历结果:
注:此过程树的变化情况解释:
对于上次创建并未销毁的,而且本次又重新创建的一样的两棵子树,应将两次结果进行合并,即:将每个节点的聚集值进行相加。例:第1,2次创建的ACD/A树。
对于上次创建并未销毁,而且本次也创建该树,但两棵树不一样的,应将两棵树合并在同一根下。例:BCD树。
7.与MultiWay和BUC性能分析
当计算稠密数据完全立方体时:
其能与M的性能相媲美,比BUC快的多(划分时开销较大,计算耗时间较大),
当计算稀疏完全立方体时:
其比M快的多,大部分情况下比BUC快。
当计算冰山立方体时:
比BUC快。