论文部分内容阅读
KNN-join是一种新近才提出的操作,它在数据挖掘中有着广泛的应用。利用KNN-join的“一次一个集合”的性质,一些数据挖掘任务,例如分类、例外挖掘和聚类等,就会更加容易地进行。MuX和Grreder则是两种专为KNN-join设计的算法。由于MuX是利用R树索引来减少CPU耗费,那么和其它基于R树索引的应用一样,它必然面临着“维数灾难”的困境;而Gorder对I/O和CPU耗费的优化是有条件的,那就是要有合适粒度的格子,由于数据分布预先是未知的,因此确定合适粒度的格子也是困难的,其性能随之降低也就不难理解了。为了综合利用这两种方法的优点,一种新的KNN-join处理方法-pgi-Distance(parallel gridindex-Distance)被提了出来。
首先,pgi-Distance使用双层结构可以对I/O和CPU进行同时优化。第一层结构是粗大的细胞(Cell)结构,它可以有效地降低磁盘的随机读写从而达到对I/O进行优化的目的。第二层是细胞中的索引结构,索引有利于简化计算,对CPU的优化有利,这样通过双层结构I/O和CPU都得到了优化。
其次,基于距离的索引能够让pgi-Distance更好地适应数据维度和分布的变化。在高维空间中,最常用的索引是基于MBR的R树及其变形树,众所周知,R树面临着“维数灾难”的困境,为了避免这种不利的情况,pgi-Distance将高维空间映射到一维空间,采用B<+>树对各数据点进行索引,由于B<+>树是一种为各DBMS厂商广泛支持的索引,这就让pgi-Distarice成为一种更为实用的KNN-join处理方法。
第三,pgi-Distance是一个支持并行KNN-join处理的方法。数据挖掘需要处理海量的数据,除了研制高效的算法外,另一个有效途径就是并行化。由于pgi-Distarice是利用格子对数据空间进行划分,边界问题容易处理,便于进行并行化。
最后,同时在标准数据集和真实数据集上做了实验,实验表明pgi-Distance是一种高效实用的KNN-join处理方法。其中真实数据集来源于“三江并流植物多样性空间数据仓库”,实验的结果对实践具有指导意义。