离群点的挖掘方法及挖掘装置与流程

文档序号:11155087阅读:950来源:国知局
离群点的挖掘方法及挖掘装置与制造工艺

本发明涉及数据处理技术领域,具体而言,涉及一种离群点的挖掘方法和一种离群点的挖掘装置。



背景技术:

例外数据挖掘是数据挖掘中的一个重要研究内容,其目的是发现数据集中行为异常的少量数据对象。其中的例外即为离群点,所谓离群点是指在数据集中,常常存在一些数据对象,它们不符合数据的一般模型,因此称这样的数据对象为离群点。例外数据挖掘技术都需要对于异常情况做出快速而敏感的检测,这些都为离群点的挖掘提供了潜在的应用背景。

离群点挖掘可以描述如下:对于给定的N个数据点或对象的集合,及预期的离群点的数目k,是指发现与剩余的数据相比是有显著异常的或不一致的前k个对象。近年来,基于数据挖掘思想的离群点挖掘研究取得了一系列重要的成果和挖掘方法,例如基于深度的方法、基于距离的方法和基于密度的方法。但是,现有的离群点挖掘算法均是对点集中的所有点进行检测,以选择出符合条件的点作为挖掘结果。

由于点集中点的数量较多,若对点集中的所有点均进行检测以确定离群点,无疑会增加数量繁多的计算量,同时也会增加算法的运行时长。

因此,如何能够在进行离群点的挖掘时,减少挖掘算法的计算量,以降低挖掘算法的运行时长成为亟待解决的技术问题。



技术实现要素:

本发明正是基于上述技术问题至少之一,提出了一种新的离群点的挖掘方案,可以有效减少在进行离群点挖掘时需要检测的数据量,从而减少了挖掘算法的计算量,降低了挖掘算法的运行时长。

有鉴于此,本发明提出了一种离群点的挖掘方法,包括:将多维数据集划分为多个网格单元,并确定所述多维数据集中的每个数据点所在的网格单元;根据所述多个网格单元中的每个网格单元内的数据点的个数,确定所述多个网格单元中的边界单元;基于LOF(Local Outlier Factor,局部异常因子)算法对所述边界单元中的数据点进行离群点的挖掘。

在该技术方案中,由于聚类的点集都有一定的边界点,边界点所处的范围即边界单元,而聚类的点通常是不可能成为离群点的,因此通过将多维数据集划分为多个网格单元,以根据每个网格单元内的数据点的个数,确定多个网格单元中的边界单元,进而采用LOF算法对所述边界单元中的数据点进行离群点的挖掘,使得能够在进行离群点挖掘时,先排除掉不可能成为离群点的范围,即非边界单元,然后仅对可能出现离群点的边界单元进行离群点的挖掘,有效减少了在进行离群点挖掘时需要检测的数据量,从而减少了挖掘算法的计算量,降低了挖掘算法的运行时长。

在上述技术方案中,优选地,所述将多维数据集划分为多个网格单元的步骤具体包括:根据所述多维数据集中每一维数据集的相邻数据点之间的平均距离,计算所述每一维数据集的划分间隔值;基于所述每一维数据集的划分间隔值将所述多维数据集划分为多个网格单元。

在该技术方案中,通过根据每一维数据集的相邻数据点之间的平均距离,计算每一维数据集的划分间隔值,使得能够将距离近的点分到一个网格单元中,同时又不会导致划分间隔值取值过大而损失划分精度的问题,也不会导致划分间隔取值过小而产生较多的网格单元而增加离群点挖掘的计算量。

在上述任一技术方案中,优选地,根据所述多维数据集中每一维数据集的相邻数据点之间的平均距离,计算所述每一维数据集的划分间隔值的步骤具体包括:

将所述每一维数据集中的数据点进行排序,以确定所述每一维数据集的值域;计算所述每一维数据集中相邻数据点之间的间隔值,并统计每个间隔值的个数;根据以下公式计算所述每一维数据集的划分间隔值:

其中,si表示维标记,表示si维的网格划分的间隔值,li表示在si维中具有不同间隔值的个数,每个间隔值及出现的次数分别为Invt、mt

在上述任一技术方案中,优选地,确定所述多个网格单元中的边界单元的步骤具体包括:通过哈希表存储所述多个网格单元中的非空网格单元的信息;根据所述非空网格单元的相邻单元内的数据点的数量,确定所述多个网格单元中的边界单元。

在该技术方案中,通过采用哈希表形式的数据结构来存储网格单元信息,可以有效减少遍历和查询的时间,从而减少算法的执行时间。通过只记录有数据点的非空网格单元,可以防止当维数增加时网格单元数量呈指数增加而导致存储量增加的问题。其中,对于每个非空网格单元,如果其相邻单元含有少于预定数量的点,则这个单元称为边界单元。

在上述任一技术方案中,优选地,基于LOF算法对所述边界单元中的数据点进行离群点的挖掘的步骤具体包括:基于所述LOF算法计算所述边界单元中的每个数据点的LOF值;按照LOF值从大到小的顺序,取出所述边界单元中预定个数的数据点作为挖掘出的所述离群点。

根据本发明的另一方面,还提出了一种离群点的挖掘装置,包括:划分单元,用于将多维数据集划分为多个网格单元,并确定所述多维数据集中的每个数据点所在的网格单元;确定单元,用于根据所述多个网格单元中的每个网格单元内的数据点的个数,确定所述多个网格单元中的边界单元;处理单元,用于基于LOF算法对所述边界单元中的数据点进行离群点的挖掘。

在该技术方案中,由于聚类的点集都有一定的边界点,边界点所处的范围即边界单元,而聚类的点通常是不可能成为离群点的,因此通过将多维数据集划分为多个网格单元,以根据每个网格单元内的数据点的个数,确定多个网格单元中的边界单元,进而采用LOF算法对所述边界单元中的数据点进行离群点的挖掘,使得能够在进行离群点挖掘时,先排除掉不 可能成为离群点的范围,即非边界单元,然后仅对可能出现离群点的边界单元进行离群点的挖掘,有效减少了在进行离群点挖掘时需要检测的数据量,从而减少了挖掘算法的计算量,降低了挖掘算法的运行时长。

在上述技术方案中,优选地,所述划分单元包括:第一计算单元,用于根据所述多维数据集中每一维数据集的相邻数据点之间的平均距离,计算所述每一维数据集的划分间隔值;执行单元,用于基于所述每一维数据集的划分间隔值将所述多维数据集划分为多个网格单元。

在该技术方案中,通过根据每一维数据集的相邻数据点之间的平均距离,计算每一维数据集的划分间隔值,使得能够将距离近的点分到一个网格单元中,同时又不会导致划分间隔值取值过大而损失划分精度的问题,也不会导致划分间隔取值过小而产生较多的网格单元而增加离群点挖掘的计算量。

在上述任一技术方案中,优选地,所述第一计算单元具体用于:将所述每一维数据集中的数据点进行排序,以确定所述每一维数据集的值域;计算所述每一维数据集中相邻数据点之间的间隔值,并统计每个间隔值的个数;根据以下公式计算所述每一维数据集的划分间隔值:

其中,si表示维标记,表示si维的网格划分的间隔值,li表示在si维中具有不同间隔值的个数,每个间隔值及出现的次数分别为Invt、mt

在上述任一技术方案中,优选地,所述确定单元具体用于:通过哈希表存储所述多个网格单元中的非空网格单元的信息,并根据所述非空网格单元的相邻单元内的数据点的数量,确定所述多个网格单元中的边界单元。

在该技术方案中,通过采用哈希表形式的数据结构来存储网格单元信息,可以有效减少遍历和查询的时间,从而减少算法的执行时间。通过只记录有数据点的非空网格单元,可以防止当维数增加时网格单元数量呈指数增加而导致存储量增加的问题。其中,对于每个非空网格单元,如果其 相邻单元含有少于预定数量的点,则这个单元称为边界单元。

在上述任一技术方案中,优选地,所述处理单元包括:第二计算单元,用于基于所述LOF算法计算所述边界单元中的每个数据点的LOF值;选取单元,用于按照LOF值从大到小的顺序,取出所述边界单元中预定个数的数据点作为挖掘出的所述离群点。

通过以上技术方案,可以有效减少在进行离群点挖掘时需要检测的数据量,从而减少了挖掘算法的计算量,降低了挖掘算法的运行时长;并且在划分网格单元时能够选择到合适的划分间隔值,以将距离近的点分到一个网格单元中,同时又不会导致划分间隔值取值过大而损失划分精度的问题,也不会导致划分间隔取值过小而产生较多的网格单元而增加离群点挖掘的计算量。

附图说明

图1示出了根据本发明的一个实施例的离群点的挖掘方法的示意流程图;

图2示出了根据本发明的实施例的离群点的挖掘装置的示意框图;

图3示出了根据本发明的另一个实施例的离群点的挖掘方法的示意流程图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

图1示出了根据本发明的一个实施例的离群点的挖掘方法的示意流程图。

如图1所示,根据本发明的一个实施例的离群点的挖掘方法,包括:

步骤102,将多维数据集划分为多个网格单元,并确定所述多维数据集中的每个数据点所在的网格单元;

步骤104,根据所述多个网格单元中的每个网格单元内的数据点的个数,确定所述多个网格单元中的边界单元;

步骤106,基于LOF算法对所述边界单元中的数据点进行离群点的挖掘。

在该技术方案中,由于聚类的点集都有一定的边界点,边界点所处的范围即边界单元,而聚类的点通常是不可能成为离群点的,因此通过将多维数据集划分为多个网格单元,以根据每个网格单元内的数据点的个数,确定多个网格单元中的边界单元,进而采用LOF算法对所述边界单元中的数据点进行离群点的挖掘,使得能够在进行离群点挖掘时,先排除掉不可能成为离群点的范围,即非边界单元,然后仅对可能出现离群点的边界单元进行离群点的挖掘,有效减少了在进行离群点挖掘时需要检测的数据量,从而减少了挖掘算法的计算量,降低了挖掘算法的运行时长。

在上述技术方案中,优选地,所述将多维数据集划分为多个网格单元的步骤具体包括:根据所述多维数据集中每一维数据集的相邻数据点之间的平均距离,计算所述每一维数据集的划分间隔值;基于所述每一维数据集的划分间隔值将所述多维数据集划分为多个网格单元。

在该技术方案中,通过根据每一维数据集的相邻数据点之间的平均距离,计算每一维数据集的划分间隔值,使得能够将距离近的点分到一个网格单元中,同时又不会导致划分间隔值取值过大而损失划分精度的问题,也不会导致划分间隔取值过小而产生较多的网格单元而增加离群点挖掘的计算量。

在上述任一技术方案中,优选地,根据所述多维数据集中每一维数据集的相邻数据点之间的平均距离,计算所述每一维数据集的划分间隔值的步骤具体包括:

将所述每一维数据集中的数据点进行排序,以确定所述每一维数据集的值域;计算所述每一维数据集中相邻数据点之间的间隔值,并统计每个间隔值的个数;根据以下公式计算所述每一维数据集的划分间隔值:

其中,si表示维标记,表示si维的网格划分的间隔值,li表示在si维中具有不同间隔值的个数,每个间隔值及出现的次数分别为Invt、mt

在上述任一技术方案中,优选地,确定所述多个网格单元中的边界单元的步骤具体包括:通过哈希表存储所述多个网格单元中的非空网格单元的信息;根据所述非空网格单元的相邻单元内的数据点的数量,确定所述多个网格单元中的边界单元。

在该技术方案中,通过采用哈希表形式的数据结构来存储网格单元信息,可以有效减少遍历和查询的时间,从而减少算法的执行时间。通过只记录有数据点的非空网格单元,可以防止当维数增加时网格单元数量呈指数增加而导致存储量增加的问题。其中,对于每个非空网格单元,如果其相邻单元含有少于预定数量的点,则这个单元称为边界单元。

在上述任一技术方案中,优选地,基于LOF算法对所述边界单元中的数据点进行离群点的挖掘的步骤具体包括:基于所述LOF算法计算所述边界单元中的每个数据点的LOF值;按照LOF值从大到小的顺序,取出所述边界单元中预定个数的数据点作为挖掘出的所述离群点。

图2示出了根据本发明的实施例的离群点的挖掘装置的示意框图。

如图2所示,根据本发明的实施例的离群点的挖掘装置200,包括:

划分单元202,用于将多维数据集划分为多个网格单元,并确定所述多维数据集中的每个数据点所在的网格单元;确定单元204,用于根据所述多个网格单元中的每个网格单元内的数据点的个数,确定所述多个网格单元中的边界单元;处理单元206,用于基于LOF算法对所述边界单元中的数据点进行离群点的挖掘。

在该技术方案中,由于聚类的点集都有一定的边界点,边界点所处的范围即边界单元,而聚类的点通常是不可能成为离群点的,因此通过将多维数据集划分为多个网格单元,以根据每个网格单元内的数据点的个数,确定多个网格单元中的边界单元,进而采用LOF算法对所述边界单元中 的数据点进行离群点的挖掘,使得能够在进行离群点挖掘时,先排除掉不可能成为离群点的范围,即非边界单元,然后仅对可能出现离群点的边界单元进行离群点的挖掘,有效减少了在进行离群点挖掘时需要检测的数据量,从而减少了挖掘算法的计算量,降低了挖掘算法的运行时长。

在上述技术方案中,优选地,所述划分单元202包括:第一计算单元2022,用于根据所述多维数据集中每一维数据集的相邻数据点之间的平均距离,计算所述每一维数据集的划分间隔值;执行单元2024,用于基于所述每一维数据集的划分间隔值将所述多维数据集划分为多个网格单元。

在该技术方案中,通过根据每一维数据集的相邻数据点之间的平均距离,计算每一维数据集的划分间隔值,使得能够将距离近的点分到一个网格单元中,同时又不会导致划分间隔值取值过大而损失划分精度的问题,也不会导致划分间隔取值过小而产生较多的网格单元而增加离群点挖掘的计算量。

在上述任一技术方案中,优选地,所述第一计算单元2022具体用于:将所述每一维数据集中的数据点进行排序,以确定所述每一维数据集的值域;计算所述每一维数据集中相邻数据点之间的间隔值,并统计每个间隔值的个数;根据以下公式计算所述每一维数据集的划分间隔值:

其中,si表示维标记,表示si维的网格划分的间隔值,li表示在si维中具有不同间隔值的个数,每个间隔值及出现的次数分别为Invt、mt

在上述任一技术方案中,优选地,所述确定单元204具体用于:通过哈希表存储所述多个网格单元中的非空网格单元的信息,并根据所述非空网格单元的相邻单元内的数据点的数量,确定所述多个网格单元中的边界单元。

在该技术方案中,通过采用哈希表形式的数据结构来存储网格单元信息,可以有效减少遍历和查询的时间,从而减少算法的执行时间。通过只记录有数据点的非空网格单元,可以防止当维数增加时网格单元数量呈指 数增加而导致存储量增加的问题。其中,对于每个非空网格单元,如果其相邻单元含有少于预定数量的点,则这个单元称为边界单元。

在上述任一技术方案中,优选地,所述处理单元206包括:第二计算单元2062,用于基于所述LOF算法计算所述边界单元中的每个数据点的LOF值;选取单元2064,用于按照LOF值从大到小的顺序,取出所述边界单元中预定个数的数据点作为挖掘出的所述离群点。

综上,本发明主要提出了一种基于网格聚类技术的离群点挖掘算法,该算法将离群点挖掘算法分成两步挖掘过程:

1)先用基于网格的聚类方法删除不可能成为离群点的点集,这一步称之为挖掘前的数据准备;

2)采用LOF算法来对第1步筛选所剩下的点集进行离群点的挖掘。

本发明提出的基于网格聚类技术的离群点挖掘算法的优点是:

A、由于该算法首先采用聚类方法把非离群点集筛选出来删除掉,然后再对剩下的可能成为离群点的点集做进一步考察,这样一方面可以减少大部分不必要的计算,节省算法的运行时间,另一方面,避免了算法第2步在使用LOF方法判断离群点时,对参数选择要求高的不足;

B、该算法对相邻单元的定义和网格的划分加以改进,能更合理有效地对网格进行划分,且能根据数据信息自动生成划分间隔参数,体现了算法在性能上的改进;

C、该算法适用于处理大数据集和高维数据集。

具体地,以下详细说明本发明的技术方案。

一个具有d个属性的数据库可认为是一个具有d维数据空间的数据集,因此数据库中的每一条数据记录与数据空间中的一个点相对应。本发明中的聚类算法采用的是基于网格的聚类方法,该方法将数据空间分割成网格状,这样将数据空间量化为有限数目的大小相同的网格单元,这些网格单元可简称为单元。因此,数据集中的每个数据点都有表示它们各维的数值,从而各数据点分属于相应的网格单元,这样所需进行的聚类操作可在网格上进行。在网格上进行聚类操作的关键技术主要包括确定聚类区域、网格的划分技术和存储技术。

1、确定聚类区域

由于本发明采用基于密度的算法,因此聚类的定义就是:聚类就是一个区域,满足该区域中的点的密度大于与之相邻的区域。在网格数据结构中,由于每个网格单元都有相同的体积,因此单元中数据点密度的计算可以转换成简单的数据点计数,即落到某个单元中点的个数当成这个单元的密度。这时可以指定一个数值δ,当某单元中点的个数大于该数值时,就说这个单元是密集的。最后,聚类也就定义为连通的所有的“密的”单元的集合。给定一个d维数据空间D,D中每维间隔数分别为k1,k2,…,kd,即第i维被划分成ki等分(1≤i≤d)。一个网格单元cell可由一个d维数组表示,即cell=C[s1][s2]…[sd],其中si(1≤i≤d)标记维ID,表示第i维的第si个网格,si的取值在0和ki-1之间。

定义1:对于一个给定的网格单元cell=C[i1][i2]…[id],Ncell(cell)是其相邻单元的集合,则:Ncell(cell)={NC[j1][j2]…[jd]|jp=ip±1},其中:1≤p≤d。

由定义1可知,在d维数据空间中,一个单元有3d-1个相邻单元。

定义2:单元cell1=C1[i1][i2]…[id]与单元cell2=C2[j1][j2]…[jd]是相邻的,当以下条件被满足:|ip-jp|=1,p=v(1≤v≤d)ip=jp,p=1,2,…,v-1,v+1,…,d。

根据以上定义,d维数据空间中一个单元有2d个相邻单元。由此,不仅参与计算的单元数目大为减少,而且单元增加与维数的关系由指数增长变为线性增长,所以能进一步减少算法运行所需的时间。

定义3:对于每个非空网格单元(含有数据点的单元),如果其相邻单元为空或含有少于阈值δ的点,则这个单元称为边界单元,否则称为非边界单元。

每个聚类的点集一定有边界点,这样可以根据所求到的边界单元求出聚类点的大致范围,在这个范围内的点称为聚类点,它们是不可能成为离群点的,为此必须将这些聚类点删除。这种方法的主要优点是速度快,其处理时间独立于数据点的数目,仅依赖于量化空间中每一维上的网格单元数目。

2、网格的划分

网格的划分与划分间隔大小的选择直接影响着算法的正确性与算法的执行效率。如果间隔w选择过大,则会导致一个含有离群点的网格单元的相邻单元都不为空,该单元作为非空单元被删除,其离群点不能被检测到,从而引起有用数据的丢失;如果w选择过小,则较稀疏的聚类点难以被删除,这样就会增加后面LOF的计算工作。因此,如何选择一个好的方法来合理地划分每一维是算法的关键所在,也是研究的重点。

划分间隔最简单的一种做法就是每个维度都划分为相同的间隔。如数据集共有d维,每维取m个间隔,则网格单元总数就是m×d。这种划分方法主要有两点不足:(1)划分的单元数随维数呈指数增长,不适用于高维空间的划分;(2)在划分中也难以给m选定一个合适的值,因为m的一个微小变化都会引起单元数目的急剧波动。为了解决这个问题,本发明提出的划分间隔的具体做法是:(1)各维划分间隔的设定是独立的,即每一维划分的间隔是不同的;(2)在对其中每一维划分时,以各相邻数据点之间的距离分布规律为依据来确定划分间隔。首先把每一维数据单独取出、排序,计算相邻两点之间的距离,然后选择合理单维分布公式计算出的距离作为划分间隔。根据这种方法所计算出的划分间隔的优点是:能较好地把距离近的点分到一起,而又不会取值过大而损失划分精度,或过小产生多余的单元而增加计算量。而且在每维的间隔相差较大的情况下,可以减少参与计算的网格单元数目。

3、存储结构

在确定各维划分的间隔后,可确定出各数据点所属的网格单元位置。为了节省存储空间,提高算法性能并加快算法的速度,本发明在存储网格结构时,一是只记录有数据点的非空网格单元,这样就防止当维数增加时网格单元数量呈指数增加;二是采用Hash表(哈希表)形式的数据结构来存储网格单元信息,它可以有效减少遍历和查询时间,从而减少算法的执行时间。

Hash表的结构如表1所示:

表1

如表1所示,count1表示在该位置冲突的网格单元数;flag为网格单元标记,指出该单元是否为边界单元;count2表示该单元含有的数据点数;cellinfo表示网格单元的维数信息(在数据空间的位置);conflictcell表示当单元冲突时,指向下一个冲突单元的位置。

以下介绍本发明提出的关于离群点的数据挖掘和基于网格聚类技术的离群点挖掘算法:

1、离群点定义和数据集特征分析

尽管不同的离群点检测方法对于离群点的定义存在一定的差别,但Hawkins给出的形式化定义被研究者广泛接受。

定义1:如果一个数据样本与其它样本之间存在足以引起怀疑的差异,则称其为离群点。

虽然Hawkins的定义形象地描述了离群点的特征,但却没有给出任何用于发现离群点的实现途径。为此,本发明引用Knorr等人基于距离的离群点的定义如下∶

定义2:给定数据集D和阈值ξ,σ,称样本q∈D为离群点,如果存在至多ξ个样本位于q的σ距离之内。

根据上述定义,Knorr等构造了基于距离的离群点发现算法FindAllOutsM和FindAllOutsD,它们分别用于对可驻留内存的和基于内外存交换的数据集的离群点分析。尽管Knorr等声称其算法具有相对于数据量的线性时间复杂度,然而对大规模数据集却需要三次内外存交换和过滤。显然,该算法无法取得令人满意的效果。

构造高效的离群点检测方法必须深入研究数据集本身的分布特征。其中,数据集的主体聚类性和离群点个别属性差异性可被用来有效提高离群 点的检测效率。主体聚类性是指数据集的主体数据来自于对正常数据源的采样,相对于离群点而言,这些数据具有明显的聚类特征,即大量数据密集分布于较小的空间范围内。因此,在进行离群点检测时,对于分布于稠密区域的数据的过滤处理将不会影响离群点的检测效果。

其次,离群点是相对于正常的数据样本而言的。通常地,它们分布于正常数据样本的周围或构成远离数据主体的低密度聚类。然而,离群点并非在所有的属性上与正常数据样本存在明显的差异。例如,在研究信用卡使用记录数据集的众多属性时,恶意透支者的大部分属性与正常消费者不存在明显差异,其异常行为模式仅体现在个别的属性字段。因此,在采用基于距离的离群点检测时,采用通常的欧氏距离考虑离群点相对于正常样本点的全局差异不具有实际意义。为此,本发明在数据集的属性域空间内引入距离,它使离群点检测更加关注于数据样本在个别属性上的差异性。

定义3:点p的局部异常因子(LOF):LOF用来表征数据集中每个数据对象的异常程度,并且这种异常是局部的,即与所求数据对象一定范围内的邻居的分布有关。

点p的LOF值定义为如下数学表达式:

其中,LOF是p的MinPts邻近点的邻近密度和p的邻近密度比值的平均值,p的邻近密度越低,p的LOF值越高。显然,LOF值越高的点就是孤立点,这对于准确查找孤立点指定了相对明确的标准。

2、基于网格聚类技术的离群点挖掘算法

2.1、算法思想

首先用基于网格的聚类方法将空间划分成为不同的网格单元,并确定各数据点所在的网格单元,根据统计每个网格单元相邻单元中所含有的数据点数,确定该单元是否为边界单元,进一步删除非边界单元,即删除非边界单元中不可能成为离群点的点集,这一步称之为挖掘前的数据准备,减小了下一步对数据点LOF值的计算量,提高算法的运行时间;然后采用LOF算法来对第1步筛选所剩下的点集进行离群点的挖掘。

2.2、算法步骤

基于网格聚类技术的离群点挖掘算法主要由以下两个步骤组成:

第1步:采用基于网格聚类技术找出大部分聚类数据,并将其删除。

(1)划分数据空间

第1遍扫描数据集,以各相邻数据点之间的距离分布规律,具体地说是以各相邻数据点之间的平均距离为依据来确定每一维的等分划分的间隔。对每一维数据划分间隔的过程如下:

1)将各数据点排序,确定每维的值域。

2)求各相邻数据点之间的间隔值,并记下每个间隔值和它们出现的次数。

3)按下面的公式计算得到的值四舍五入作为该维网格单元划分的间隔值:

其中,si表示维标记,Wsi表示该维网格划分的间隔值,li表示在si中具有不同间隔值的个数,其中每个间隔的间隔值及出现的相应次数分别为Invt、mt。

(2)建立Hash表(如表1所示)

第2遍扫描数据集,将每个数据点所在的网格信息记录到Hash表H中。在记录每个点时,首先计算出该点所在的网格单元,然后通过哈希函数将对应的网格单元散列(映射)到表H中。如果在表H中没有该点所在网格单元记录,则把该单元的相关信息(如cellinfo,conflictcell)加入到H中,并对相应的count1,count2进行计数操作;如果该点所在网格单元已经记录在H中,则仅对相应的count2进行计数操作。

(3)对H表中每个网格单元检查它的相邻单元,判断是否为边界单元,并对非边界单元做出标记。当全部网格单元判断结束后,删除所有非边界单元。在H表中删除所有非边界单元后,可通过H表中cellinfo等信息从数据集中取出剩下的数据点集。

第2步:对筛选后剩下的点集,采用LOF算法计算它们的LOF值, 然后取出值高的前k个数据点作为离群点挖掘结果。

以上过程如图3所示,根据本发明的另一个实施例的离群点的挖掘方法,包括:

步骤302,载入数据。

步骤304,对每一维数据进行排序,确定划分间隔。

步骤306,扫描数据集,计算每一个点所在的网格单元。

步骤308,判断是否为边界单元,若是,则执行步骤312;否则,执行步骤310。

步骤310,删除非边界单元。

步骤312,获得剩下的点信息。

步骤314,计算剩下点的LOF值。

步骤316,输出LOF值较高的k个点作为离群点挖掘结果。

2.3、算法实现主要部分的伪代码

本发明提出的基于网格聚类技术的离群点挖掘算法的优点如下:

1)由于该算法首先采用聚类方法把非离群点集筛选出来删除掉,然后再对剩下的可能成为离群点的点集做进一步考察,这样一方面可以减少大部分不必要的计算,节省算法的运行时间,另一方面,避免了算法第2步在使用LOF方法判断离群点时,对参数选择要求高的不足。

2)该算法对相邻单元的定义和网格的划分加以改进,能更合理有效地对网格进行划分,且能根据数据信息自动生成划分间隔参数,体现了算法在性能上的改进。

3)该算法适用于处理大数据集和高维数据集。

4)为了快速判断是否为边界单元和算法执行效率,一是采用Hash表来存储网格结构信息,以提高查找相邻单元的速度;二是基于网格聚类 技术的离群点挖掘算法是以各相邻数据点之间的距离分布规律为依据来确定数据空间划分间隔的,与其它数据空间划分的方法相比,既能使划分所得的网格大小较为适合算法的执行,又能使所产生的网格单元数目少,这样也就减少了算法的执行时间。

以上结合附图详细说明了本发明的技术方案,本发明提出了一种新的离群点的挖掘方案,可以有效减少在进行离群点挖掘时需要检测的数据量,从而减少了挖掘算法的计算量,降低了挖掘算法的运行时长;并且在划分网格单元时能够选择到合适的划分间隔值,以将距离近的点分到一个网格单元中,同时又不会导致划分间隔值取值过大而损失划分精度的问题,也不会导致划分间隔取值过小而产生较多的网格单元而增加离群点挖掘的计算量。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1