【数据挖掘笔记五】数据立方体技术

来源:互联网 发布:linux suse iso下载 编辑:程序博客网 时间:2024/06/06 02:33

5.数据立方体技术

数据仓库系统在各种粒度上为多维数据的交互分析提供OLAP工具,OLAP工具使用数据立方体和多维数据模型对汇总数据提供灵活的访问,因此重点要关注数据立方体的技术。数据立方体技术包括数据立方体的计算方法方法和多维数据分析方法。

数据立方体技术对于数据挖掘也是有用的。多维数据挖掘是基于OLAP的数据分析与知识发现技术集成再一起的。多维数据挖掘,通过探查多维空间中的数据来搜索有趣的模式,赋予用户动态地关注感兴趣的任何维子集的自主权,用户可以交互地下钻或上卷到各抽象层,发现分类模型、聚类、预测规则和离群点。

5.1 数据立方体计算:基本概念

数据立方体有利于多维数据的联机分析处理,数据立方体预计算是终点。

1)立方体物化:完全立方体、冰山立方体、闭立方体和立方体外壳

基本方体的单元是基本单元,非基本方体的单元是聚集单元。聚集单元在一个或多给维上聚集,其中每个聚集维用单元记号的*指示。

单元之间存在祖先-后代关系的定义:在n维数据立方体中,i-D单元a=(a1,a2,…,an,measuresa)是j-D单元b=(b1,b2,…,bn,measuresb)的祖先,而b是a的后台,当且仅当i<j,且1≤k≤n,只要ak≠*,就有ak=bk

为快速OLAP,最好是预计算完全立方体,但其复杂度是维数的指数,即n维数据立方体包含2n个方体,如果在考虑每个维的概念分层,则显然大的多。完全立方体的计算,可以计算较小的立方体,包含给定维集合的一个子集,或者某些维的可能值的一个较小的值域;这样较小的立方体是给定维子集和维值的完全立方体。探索计算数据立方体的所有方体(完全物化)的可伸缩方法,必须考虑可用于计算方体的内存容量的限制、所计算的数据立方体的总体大小,以及计算所需要的时间。

数据立方体的部分物化则在存储空间和OLAP响应时间上进行折中,不是计算完全立方体,而是计算立方体的方体的一个子集,或者计算由各种方体的单元子集组成的子立方体。

当相对于存放在方体中的非零值元组的数量,方体维的基数的乘积很大时,该方体是稀疏的。如果一个立方体包含许多稀疏方体,则该立方体是稀疏的。考虑到相当多的立方体空间可能被大量具有很低度量值的单元所占据(立方体单元在多维空间中的分布常常是想当稀疏的),考虑部分物化的立方体,即冰山立方体(iceberg cube),定义最小阈值,或最小支持度阈值,或最小支持度。一种计算冰山立方体的朴素方法是首先计算完全立方体,然后剪去不满足冰山条件的单元。显然这个代价也是高昂的。最有效的当然是直接计算冰山立方体。

引入冰山立方体将减轻计算数据立方体中不重要聚集单元的负担,然而仍有大量不感兴趣的单元要计算,为系统地压缩数据立方体,需引入闭覆盖(closed coverage)概念。一单元c是闭单元(closed cell),如果不存在单元d,使得d是单元c的特殊化(后代),即d通过将c中的*值用非*值替换得到,并且d与c具有相同的度量值。闭立方体(closed cube)是一个仅由闭单元组成的数据立方体。

部分物化的另一种策略是只预计算涉及少数维(如3到5个维)的方体,这些方体形成对应的数据立方体的立方体外壳(cube cell)。这种情况下,在附加的维组合上查询需要临时计算。

2)数据立方体计算的策略

有两种基本数据结构用于存储方体,一种是关系OLAP使用关系表,另一种是多维OLAP使用多维数组。有多种有效计算数据立方体的方法,一般优化技术包括:

a.排序、散列和分组

对维属性使用排序、散列和分组操作,以便对相关元组重新定序和聚类。在立方体计算中,对共享一组相同维值的元组(或单元)进行聚集,重要的是利用排序、散列和分组操作对这样的数据进行访问和分组,以便有利于聚集的计算。这些技术可进一步扩展,进行共享排序(当使用基于排序的方法时,在多个方体之间共享排序开销),或进行共享划分(当使用基于散列的方法时,在多个方体之间共享划分开销)。

b.同时聚集和缓存中间结果

在立方体计算中,从先前计算的较低层聚集而不是从基本事实表计算较高层聚集是有效的。此外,从缓存的中间计算结果同时聚集可能导致减少开销很大的磁盘IO操作。这种技术可进一步扩展,进行平摊扫描(同时计算尽可能多的方体,分摊磁盘读)。

c.当存在多个子女方体时,由最小的子女聚集

当存在多个子女方体时,由先前计算的最小子女方体计算父母方体(即更泛化的方体)更有效。

d.使用先验剪枝方法有效地计算冰山立方体

对于数据立方体,先验性质(Apriori property)表述如下:如果给定的单元不满足最小支持度,则该单元的后代(即更特殊的单元)也不满足最小支持度。该性质可显著降低冰山立方体的计算量。如果某个单元c违反冰山立方体设定的最小支持度这个条件,则c的每个后代也将违反该条件,遵守这一性质的度量成为反单调的(anti-monotonic),当然单调性就是满足条件。剪枝在频繁模式挖掘中很流行,有助于数据立方体的计算,减少处理时间和磁盘空间的需求。

5.2 数据立方体计算方法

数据立方体计算是数据仓库实现的一项基本任务。完全或部分数据立方体的预计算可以大幅度降低响应时间,提高联机分析处理的性能。

1)完全立方体计算的多路数组聚集

多路数组聚集(MultiWay)方法使用多维数组作为基本的数据结构,计算完全数据立方体。MultiWay是一种使用数组直接寻址的典型MOLAP方法,其中维值通过位置或对应数组位置的下标访问,不能使用基于值的重新排序作为优化技术。基于数组的立方体结构构造方法:

a.把数组分成块。块是一个子立方体,足够小,可以放入立方体计算时可用的内存。分块是一种把n维数组划分成小的n维块的方法,其中每个块作为一个对象存放在磁盘上。块被压缩,以避免空数组单元所导致的空间浪费。一个单元为空,如果它不含有任何有效数据(其单元计数为零)。如为了压缩稀疏数组结构,在块内搜索单元时可以用chunkID+offset作为单元的寻址机制。

b.通过访问立方体单元(即访问立方体单元的值)来计算聚集。可以优化访问单元的次序,使得每个单元必须重复访问的次数最小化,从而减少内存访问开销和存储开销。技巧是使用这样的一种次序,使得多个方体的聚集单元可以同时计算,避免不必要的单元再次访问。

由于分块技术涉及重叠某些聚集计算,因此称该技术未多路数组聚集(multiway array aggregation),执行同时聚集,即同时在多个维组合上计算聚集。

MultiWay使用直接数组寻址,比ROLAP基于关键字的寻址搜索策略快,不过MultiWay计算从基本方体开始,逐步向上到更泛化的祖先方体,因此不能利用先验剪枝。

2)BUC:从顶点方体向下计算冰山立方体

BUC是一种计算稀疏冰山立方体的算法。和MultiWay不同,BUC从顶点方体向下到基本方体构造冰山立方体,这使得BUC可以分担数据划分开销,这种处理次序也使得BUC在构造立方体时使用先验性质进行剪枝。

方体格一般采用顶点方体在顶部基本方体在底部的表示,将下钻(从高聚集单元向较低、更细化的单元移动)和上卷(从细节的、低层单元向较高层、更聚集的单元移动)概念一致起来。BUC是指自顶向上构造(Bottom-Up Construction),采用顶点方体在底部而基本方体在顶部的表示,下钻表示从顶点方体向下到基本方体,那么反过来表示的BUC就是自顶向下,正好相反。BUC算法如下:

算法:BUC,计算稀疏冰山立方体的算法。

输入:input:待聚集的关系。

      dim:本次迭代的起始维。

全程量:

      常量numDims:维的总数。

      常量cardinality[numDims]:每个维的基数。

     常量min_sup:分区中的元组的最少个数,满足它的分区才输出。

     outputRec:当前输出记录。

     dataCount[numDims]:存放每个分区的大小。dataCount[i]是大小为cardinality[i]的整数列表。

输出:递归地输出满足最小支持度的冰山立方体单元。

方法:

      Aggregate(input);//扫描整个input,计算度量(如count),并将结果存入outputRec

      if input.count() ==1 then //优化

          WriteAncestors(input[0],dim);return;

      end if

      write outputRec;

      for(d=dim;d<numDims;d++) do //划分每个维

          C=cardinality[d];

          Partition(input,d,C,dataCount[d]);//对维d创建数据的C个分区

          k=0;

          for(i=0;i<C;i++)do //对每个分区(维d的每个值)

              c=dataCount[d][i]

              if c>=min_sup then //检查冰山条件

                  outputRec.dim[d]=input[k].dim[d];

                  BUC(intput[k..k+c-1],d+);//在下一维上聚集

              end if

              k+=c

          end for

          outputRec.dim[d]=all;

      end for

BUC的性能容易受维的次序和倾斜数据的影响。理想地,应当首先处理最有区分能力的维。维应当以基数递减序处理。基数越高,分区越小,因为分区越多,从而为BUC剪枝提供更多机会。维越均匀(即具有较小的倾斜),对剪枝越好。

BUC的主要贡献是分担划分开销的思想。不过,与MultiWay不同,BUC不在父母与子女的分组之间共享聚集计算。

3)Star-Cubing:使用动态星树结构计算冰山立方体

Star-Cubing集成自顶向下和自底向上立方体计算,并利用多维聚集(类似MultiWay)和类Apriori剪枝(类似BUC),在一个称为星树(star-tree)的数据结构上操作,对该数据结构进行无损数据压缩,从而降低计算时间和内存需求量。

Star-Cubing算法利用自底向上和自顶向下的计算模式:在全局计算次序上,使用自底向上模式;同时有一个基于自顶向下模式的子层,利用共享维的概念。如果共享维上的聚集值不满足冰山条件,则沿该共享维向下的所有单元也不可能满足冰山条件。

方体树(cuboid tree),树的每一层代表一个维,每个结点代表一个属性值;每个结点有四个字段:属性值、聚集值、指向第一个子女的指针和指向第一个兄弟的指标;方体中的元组逐个插入组中,一条从根到树叶结点的路径代表一个元组。如果单个维在属性值p上的聚集不满足冰山条件,则在冰山立方体计算中识别这样的节点没有意义。这样的结点p用*替换,使方体树可以进一步压缩。如果单个维p上的聚集不满足冰山条件,则称属性A中的结点p是星结点(star node);否则,称p为非星结点(non-star node)。使用星结点压缩的方体树称为星树(star-tree)。

先构造星树,在应用Star-Cubing算法计算冰山立方体,算法如下:

算法:Star-Cubing,通过Star-Cubing计算冰山立方体。

输入:R:关系表;

      min_support:冰山立方体条件的最小支持度阈值(取count作为度量)。

输出:计算的冰山立方体

方法:每颗星树对应于一个方体树结点,反之亦然。

      Begin

           扫描R两次,创建星表S和星树T;

           输出T.root的count;

           调用starcubing(T,T.root);

      End

      Procedure starcubing(T,cnode) //cnode:当前结点

      {

          for T的方体树的每个非空子女C

              插入或聚集cnode到C的星树的对应位置或结点;

          if (cnode.count≥min_support) then {

              if (cnode≠root) then

                  output cnode.count;

              if (cnode 是叶结点) then 

                  output cnode.count;

              else{//初始化新的方体树

                  create Cc作为T的方体树子女;

                  令Tc为Cc的星树;

                  Tc.root的count=cnode.count;

              }

           }

          if (cnode不是树叶) then 

              starcubing(T,cnode.first_child);

          if(Cc非空) then{

              starcubing(Tc,Tc.root);

              将Cc从T的方体树删除;}

          if (cnode有兄弟) then

              starcubing(T,cnode.sibling);

          删除T;

       }

Star-Cubing也可用来计算完全立方体。当计算稠密数据集的完全立方体时,Star-Cubing性能与MultiWay相当,比BUC快。如果数据集是稀疏的,则比MultiWay快,且大部分情况下比BUC快。对于冰山立方体计算,Star-Cubing比BUC快,其中数据是倾斜的,并且加速因子随min_sup减小而增加。

4)为快速高维OLAP预计算壳片段

数据立方体有利于多维数据空间的快速OLAP,不过高维完全数据立方体需要海量存储空间和不切司机的计算时间。冰山立方体是一个替代方案。但是冰山立方体本身的计算和存储开销还是比较高。于是提出计算一个很薄的立方体外壳(cube shell),但这个方法不吃之在4维及以上OLAP。

这里关注的是OLAP查询处理的外壳片段方法,方法基于一个观察的事实:数据立方体有很多的维,不过大部分OLAP操作只在少数维上执行。如果可以在高维空间内部的少数维上快速计算多维聚集,则可以获得快速OLAP,而不必物化原来的高维数据立方体。计算完全立方体(甚至冰山立方体或外壳立方体)都可能是多余的,利用一定预处理的半联机计算模型是比较可行的解。给定基本方法,首先做一些快速预计算(即脱机),然后查询可以使用预处理的数据上联机计算。

外壳片段方法遵循半联机计算策略,涉及两个算法:一个计算外壳片段立方体;另一个用立方体片段处理查询。外壳片段方法可以处理维度非常高的数据库,并且可以快速联机计算小的局部立方体,利用信息检索和基于Web的信息系统中的倒排索引结构

外壳片段方法基本思想:给定一个高维数据集,把维划分成互不相交的维片段,把每个片段转换成倒排索引表示,然后构造立方体外壳片段,并保持与立方体单元相关联的倒排索引。使用预计算的立方体外壳片段,可以联机动态地组装和计算所需要的数据立方体的方体单元,可通过倒排索引上的集合交(set intersection)操作有效地完成。

外壳片段计算方法:

算法:Frag-Shells,计算给定的高维基本表(即基本方体)的外壳片段。

输入:n维(A1,...,An)上的基本方体B。

输出:

      片段划分的集合{P1,...,Pk}和它们对应的局部片段立方体{S1,...,Sk},其中Pi表示维的集合,并且P1U...UPk形成所有n个维。

      ID_measure数组,如果度量不是元组计数count();

方法:

      将维集合(A1,...,An)划分成k个片段的集合(P1,...,Pk)(基于数据和查询分布)

      扫描基本方体B一次,并做如下工作{

          将每个<TID,measure>插入ID_measure数组

          for 每个维Ai的每个属性值aj

              建立一个倒排索引项:<aj,TIDList>

       }

       for 每个片段Pi

           取它们对应的ITD列表的交并计算它们的度量,构造局部片段立方体Si

案例可参考原书,关键是倒排索引结构的原理。

与完全立方体相比,外壳片段的存储空间和计算时间开销都可以忽略。通过在单个片段中包含所有的维,也可使用Frag-Shells算法计算完全数据立方体。由于方体格的计算次序是自顶向下和深度优先(类似于BUC),所以如果用来构造冰山立方体,那算法可以进行Apriori剪枝。

给定预计算的外壳片段,可将立方体空间看做虚拟立方体,并且联机进行关于该立方体的OLAP查询,有两种可能查询类型:点查询和子立方体查询。

点查询显示地提供相关维上被例示的变量集,通过找出最合适的(即逐维完全匹配的)片段,取出并与相关联的TID列表取交,可最大限度地利用预计算的外壳片段。

子立方体查询返回一个基于例示维和被询问的维的局部数据立方体。这种数据立方体需要以多为方式聚集,使得用户可以使用联机分析处理(如钻取、切块、转轴等),灵活地操纵和分析。

5.3 使用探索立方体技术处理高级查询

基本数据立方体可扩充到各种复杂的数据类型和新的应用。如用于地理数据仓库设计与实现的空间数据立方体,用于多媒体数据(包括图像和视频)多维分析的多媒体立方体,RFID数据立方体处理射频识别(RFID)的压缩和多维分析。文本立方体和论题立方体是分别为多维文本数据库(包括结构属性和叙事文本属性)中向量空间模型和生成语言模型的应用开发。

1)抽样立方体:样本数据上基于OLAP的挖掘

传统上,OLAP拥有整个数据总体,而用样本数据只是一个小的子集,如果把OLAP工具用于样本数据,会面临两类问题:第一,在多维意义下,样本数据过于稀疏,样本中的单个离群点或微小偏移都可能显著影响结果;第二,使用样本数据,统计学方法将用来提供可靠性度量,如置信区间,指出总体质量,而传统 OLAP并无提供。

抽样立方体旨在解决上面两类问题。抽样立方体(sampling cube)是一种存储样本数据及其多维聚集的数据立方体结构,支持在样本数据上的OLAP。抽样立方体计算置信区间,作为多维查询的质量度量。给定一个样本数据关系R(即基本方体),抽样立方体CR通常计算样本均值、样本标准差和其他针对任务的度量。


影响置信区间大小有两个主要因素:样本数据的方差和样本大小。解决小样本问题可以通过获得更多的数据。可以通过邻近单元中的数据来扩充,方体内查询扩展考虑同一方体内的邻近单元;方体间查询扩展考虑查询单元的更一般版本。

在精确地度量维与立方体的相关性上,计算维值域它们聚集立方体度量之间的相关性。通常,对数据数据用皮尔逊相关系数,而标称数据使用卡方相关检验,也可使用协方差。t-检验是一种相对简单的统计方法,可用来确定两个样本是否具有相同的均值。

2)排序立方体:top-K查询的有效计算

top-K查询(或排序查询)根据用户指定的优选条件,只返回最好的k个结果作为查询的回答,而不是返回大量不加区分的结果。

给定按排定的序返回,使得最好的结果在顶部。通常,用户指定的优选条件由两部分组成:一个选择条件和一个排序函数。

排序立方体一般原理是物化选择属性集上的立方体。使用排序维上基于区间的划分使得排序立方体可以有效而灵活地支持用户的临时查询。

5.4 数据立方体空间的多维数据分析

立方体空间的多维数据挖掘在各种粒度上把感兴趣的数据组织成直观的区域,在这些区域上系统地应用各种数据挖掘技术分析和挖掘数据。

融合OLAP分析和数据挖掘技术的方法有:使用立方体空间为数据挖掘定义数据空间;使用OLAP查询为挖掘产生特征和目标;使用数据立方体计算技术加快重复模型的构建。

1)预测立方体:立方体空间的预测挖掘

预测立方体(prediction cube)是一种立方体结构,存储多维数据空间中的预测模型,并以OLAP方式支持预测。预测立方体的每个单元值都是通过对建立在该单元数据子集上的预测模型求值计算的,表示了对该数据子集行为的预测;不同于在数据立方体中,是在单元中的数据子集上计算聚集数值来获得单元值。

预测立方体不是把预测模型看做最终结果,而是使用预测模型作为构件来定义数据子集的兴趣度,即它们识别指示更准确预测的数据子集。

在预测立方体上支持OLAP上卷和下钻操作需要在不同的粒度物化单元值。一种完全物化预测立方体的朴素方法是对每个单元和每个粒度评估。如果基本数据集很大,这这种方法开销很大,采用基于概率的组合方法(probability-Based Ensemble,PBE),只要求对最细粒度的单元构建模型,然后使用OLAP风格的自底向上的聚集产生粗粒度单元的值。预测模型的预测可以看做找出最大化评分函数的类标号。PBE方法要求任何预测模型的评分函数都是可分可解的。

2)多特征立方体:多粒度上的复杂聚集

    多特征立方体(multifeature clube)计算更复杂的查询,依赖于变化粒度层上多个聚集的分组,支持复杂的数据挖掘查询。

3)基于异常的、发现驱动的立方体空间探查

探索数据立方体的发现驱动方法,帮助用户智能地探查数据立方体巨大的聚集空间,指示数据异常的预计算的度量,在所有的聚集层来指导用户的数据分析过程。异常(exception)是一个数据立方体单元值,基于某种统计模型,显著地不同于预期值。

一个单元值是否异常要根据它与它的期望值相差多少判定,其中期望值使用统计模型确定。给定单元的值和它的期望值之间的差称为残差(residual)。直观地,残差越大,给定单元的值越异常。

发现驱动的探查构造数据立方体分三个阶段:单元聚集计算,发现异常;模型拟合,计算标准残差;基于标准残差计算异常值。

5.5 小结

1)数据立方体的计算和探查在数据仓库构建中扮演至关重要的角色,并且对于多维空间的灵活挖掘是重要的。

2)数据立方体由方体的格组成。每个方体都对应于给定多维数据的不同程度的汇总。完全物化是指计算数据立方体格中的所有方体。部分物化是指选择性地计算格中方体单元的子集。冰山立方体和外壳片段都是部分物化的例子。冰山立方体是一种数据立方体,它仅存储其聚集值(如count)大于某最小支持度阈值的立方体单元。对于数据立方体的外壳片段而言,只计算涉及少数维的某些方体。在附加维组合上的查询可以临时计算。

3)有效的数据立方体计算方法:多路数组聚集multiway,基于稀疏数组的、自底向上的、共享计算的物化整个数据立方体;BUC,通过探查有效的自顶向下计算次序和排序计算冰山立方体;Star-Cubing,使用星树结构,集成自顶向下和自底向上计算,计算冰山立方体;外壳片段立方体,通过仅预计算划分的立方体外壳片段,支持进行高维OLAP。

4)立方体空间中的多维数据挖掘是知识发现与多维数据立方体技术的集成。它有利于在大型结构化和半结构化的数据集中系统和聚焦地发现知识。它将继续为分析者的多维和多粒度分析提供极大的灵活性和能力。对于构建功能强大的、复杂的数据挖掘机制的研究者而言,这是一个尚需大量研究的领域。

5)利用立方体进行高级查询的技术,包括用于样本数据的多维分析的抽样立方体,用于大型关系数据库中top-k查询有效处理的排序立方体。

6)利用数据立方体进行多维数据分析的三种方法:预测立方体计算多维立方体空间的预测模型,帮助用户识别变化的粒度级别上的数据的有趣子集;多特征立方体计算涉及多粒度上多个依赖的聚集的复杂查询;立方体空间中基于异常的、发现驱动的探查显示可视化提示,指示在所有聚集层上发现的异常,从而指导用户的数据分析。

阅读全文
0 0
原创粉丝点击