数据立方体计算与数据泛化数据泛化数据泛化数据库中的数据和对象通常包含原始概念层的细节信息,数据泛化就是将数据库中的跟任务相关的大型数据集从相对较低的概念层抽象到较高的概念层的过程。主要方法:数据立方体(OLAP使用的方法)面向属性的归纳方法12345概念层(Month,city,customer_group)(Month,*,*)两种不同类别的数据挖掘从数据分析的角度看,数据挖掘可以分为描述性挖掘和预测性挖掘描述性挖掘:以简洁概要的方式描述数据,并提供数据的有趣的一般性质。E.g.数据泛化就是一种描述性数据挖掘预测性数据挖掘:通过分析数据建立一个或一组模型,并试图预测新数据集的行为。E.g分类、回归分析等数据立方体的物化数据立方体有利于多维数据的联机分析处理数据立方体使得从不同的角度对数据进行观察成为可能方体计算(物化)的挑战:海量数据,有限的内存和时间海量数据运算对大量计算时间和存储空间的要求数据立方体---基本概念(1)数据立方体可以被看成是一个方体的格,每个方体用一个group-by表示最底层的方体ABC是基本方体,包含所有3个维最顶端的方体(顶点)只包含一个单元的值,泛化程度最高上卷和下钻操作与数据立方体的对应BA()CABACBCABC数据立方体---基本概念(2)基本方体的单元是基本单元,非基本方体的单元是聚集单元聚集单元在一个或多个维聚集,每个聚集维用*表示E.g.(city,*,year,measure)m维方体:(a1,a2,...,an)中有m个不是*祖先和子孙单元i-D单元a=(a1,a2,...,an,measuresa)是j-D单元b=(b1,b2,...,bn,measureb)的祖先,当且仅当(1)ij,并且(2)对于1≤m≤n,只要am≠*就有am=bm冰山立方体(1)为了确保快速的联机分析,有时希望预计算整个立方体(所有方体的所有单元)n维数据立方体包含2n个方体如果考虑概念分层部分物化是存储空间和响应时间的折中方案事实上,很多高维方体都是稀疏的(包含很多度量值为0的单元))11(niiLT冰山立方体(2)对于稀疏的数据立方体,我们往往通过指定一个最小支持度阈值(也称冰山条件),来进行部分物化,这种部分物化的方体称之为冰山方体。比如:COMPUTECUBESales_IcebergASSELECTmonth,city,cust_grp,COUNT(*)FROMSales_InfoCUBEBYmonth,city,cust_grpHAVINGCOUNT(*)=min_sup闭立方体(1)冰山方体的计算通过冰山条件(例:HAVINGCOUNT(*)=min_sup)来减轻计算数据立方体中不重要的聚集单元的负担,然而仍有大量不感兴趣的单元需要计算比如:最小支持度为10,假定100维的数据立方体有两个基本方体:{(a1,a2,a3,…,a100):10,(a1,a2,b3,…,b100):10},假设冰山条件为最小支持度10则需计算和存储的单元仍是海量:2101-6个如:(a1,a2,a3,…,a99,*):10,(a1,*,a3,…,a100):10闭立方体(2)闭单元一个单元c是闭单元,如果单元c不存在一个跟c有着相同度量值的后代d例如:上述例子中,任何一个(a1,a2,a3,*,*,…,*):10,都和他的后代有相同度量值闭立方体:一个仅有闭单元组成的数据立方体例如:(a1,a2,*,*,…,*):20(a1,a2,a3,…,a100):10(a1,a2,b3,…,b100):10立方体外壳部分物化的另外一种策略:仅预计算涉及少数维的方体(比如3到5维),这些立方体形成对应数据立方体的外壳利用外壳对其他的维组合查询进行快速计算仍将导致大量方体(n很大时),类似的我们可以利用方体的兴趣度,选择只预计算立方体外壳的部分立方体计算的一般策略(1)一般,有两种基本结构用于存储方体关系OLAP(ROLAP)底层使用关系模型存储数据多维OLAP(MOLAP)底层使用多维数组存储数据无论使用哪种存储方法,都可以使用以下立方体计算的一般优化技术优化技术1:排序、散列和分组将排序、散列(hashing)和分组操作应用于维的属性,以便对相关元组重新排序和聚类立方体计算的一般策略(2)优化技术2:同时聚集和缓存中间结果由先前计算的较低层聚集来计算较高层聚集,而非从基本方体开始计算,减少I/O优化方法3:当存在多个子女时,由最小的子女聚集例如,计算Cbranch,可以利用C(branch,year)或者C(branch,item),显然利用前者更有效优化技术4:可以使用Apriori剪枝方法有效的计算冰山方体如果给定的单元不能满足最小支持度,则该单元的后代也都不满足最小支持度完全立方体计算的多路数组聚集方法(1)使用多维数组作为基本数据结构,计算完全数据立方体一种使用数组直接寻址的典型MOLAP方法计算步骤(1)将数组分成块(chunk,一个可以装入内存的小子方)块还可以进一步被压缩,以避免空数组单元导致的空间浪费(处理稀疏立方体)(2)通过访问立方体单元,计算聚集。可以优化访问单元组的次序,使得每个单元被访问的次数最小化,从而减少内存访问和磁盘I/O的开销。完全立方体计算的多路数组聚集方法(2)一个包含A,B,C的3-D数组,假定维A,B,C的基数分别是40、400和4000A(month)40个值B29303132123459131415166463626148474645a1a0c3c2c1c0b3b2b1b0a2a3C(item)4000个值B(city)400个值442856402452362060哪个是多路数组聚集的最佳遍历次序?将要物化的立方体:•基本方体ABC,已计算,对应于给定的3-D数组•2D方体AB,AC和BC•1D方体A,B,C•0D顶点方体,记作all完全立方体计算的多路数组聚集方法(3)A(month)40B29303132123459131415166463626148474645a1a0c3c2c1c0b3b2b1b0a2a3C(item)4000442856402452362060B(city)400通过扫描ABC的1~4块,计算出块b0c0,然后块内存可以分配给下一刻b1c0,如此继续,可计算整个BC方体(一次只需一个BC块在内存)完全立方体计算的多路数组聚集方法(4)AB29303132123459131415166463626148474645a1a0c3c2c1c0b3b2b1b0a2a3C442856402452362060B•BC方体的计算,必须扫描64块中的每一块;计算其他块亦然•多路数组聚集方法避免重复扫描:当一个3D块在内存时,向每一个平面同时聚集完全立方体计算的多路数组聚集方法(5)方法:各平面要按他们大小的升序排列进行排序和计算详见书P108例4-4思想:将最小的平面放在内存中,对最大的平面每次只是取并计算一块ABCBCACABABCall内存空间需求最大的块计算次序ABCBCACABABCall内存空间需求最小的块计算次序完全立方体计算的多路数组聚集方法(6)根据1到64的扫描次序,在块内存中保存所有相关的2-D平面所需的最小存储为:40×400(用于整个AB平面)+40×1000(用于AC平面一行)+100×1000(用于BC平面一块)=156,000这种方法的限制:只有在维数比较小的情况下,效果才比较理想(要计算的立方体随维数指数增长)如果维的数目比较多,可以考虑使用“自底向上的计算”或者时“冰山方体”计算