一种基于数据结构的异常点检测方法技术

技术编号:19635672 阅读:20 留言:0更新日期:2018-12-01 16:18
本发明专利技术涉及一种基于数据结构的异常点检测方法,其包括:输入数据集;根据数据集构建一棵多维二叉树,利用二叉树搜索算法搜索距离树中每个节点最近的k个邻居;基于一棵多维二叉树构建数据点的数据结构图,结合树中各节点的邻居关系,计算数据点之间的欧氏距离;考虑到数据点之间的相似性和数据点在树中的邻居关系,通过对计算出的欧氏距离进行排序,并设定阈值p自动确定异常点。本发明专利技术提高了异常点检测的性能,更好的反应了数据集的结构特征。此外,本发明专利技术受数据分布和数据维度影响较弱,在实际应用中适用范围更广,解决了现有技术对特殊点的检测精度和对高维数据检测性能不佳的不足。

An outlier detection method based on data structure

The invention relates to an outlier detection method based on data structure, which includes: input data set; constructing a multi-dimensional binary tree according to data set, searching K neighbors nearest to each node in the tree by using binary tree search algorithm; constructing data structure map of data points based on a multi-dimensional binary tree, combining each node in the tree. The Euclidean distance between data points is calculated by the neighborhood relationship of nodes. Considering the similarity between data points and the neighborhood relationship of data points in the tree, the Euclidean distance is ranked by the calculated Euclidean distance, and the threshold P is set to automatically determine the outliers. The invention improves the performance of outlier detection and better reflects the structural characteristics of data sets. In addition, the invention is weakly influenced by data distribution and data dimension, and has a wider application scope in practical application. It solves the shortcomings of the existing technology in the detection accuracy of special points and poor detection performance of high-dimensional data.

【技术实现步骤摘要】
一种基于数据结构的异常点检测方法
本专利技术属于数据检测领域,尤其涉及一种基于数据结构的异常点检测方法。
技术介绍
在识别异常点的过程中异常值检测是一项最重要的任务,由于异常点分布不均衡等原因,传统的异常点检测方法会导致不准确甚至错误的识别结果。异常值检测技术能够有效的提高异常点检测的性能。传统的异常点检测技术主要是聚类、分类以及模式识别,这些传统的技术是找到一种通用模式来识别数据中有意义的模式,而异常点检测技术只需要识别出异常点,而不需要识别出正常点。例如,在一个检测生命紊乱的系统中,把正常的人看作正常点,把生命特征紊乱的病人或者把生命危险的病人看作异常点,这样此系统就可以帮助观察病人的生命特征情况,特别是针对和异常点生命特征相符合的病人重点观察。因此,异常值检测比正常模式检测更重要。现有的技术方案主要包括:利用统计学来研究异常点数据和基于距离的检测方法。利用统计学来研究异常点数据是一种比较早使用的方法,通过分析数据的分布情况及离散程度来识别异常点,此方法通常需要一些数据特征变化的指标来判断是否是异常点。目前常用的指标有均差、标准差及特征变化指标,变化指标越大则表示该数据集变化较大,离散程度强;变化指标值越小,则说明该数据变化较小,较密集分布。然而,基于统计的方法有一个严重的缺陷,使用该方法检测出来的异常点也可以使用其它多种方法检测出来,这会产生多义性,也就是说产生这些异常点的原理不一样;除此之外,使用统计方法类检测异常点很大程度上需要依赖于数据点的分布是趋近于某种数学分布,这对检测的准确性有很重要的意义。基于距离的检测方法以距离为测量单位,常用的距离包括曼哈顿距离、欧式距离及马氏距离,数据集中与大多数点的距离都大于某个阀值的点可以看作为异常点。该方法存在以下不足:1、在该检测方法中需要确定阈值(dmin),而该值的确定是比较困难的,不同的数据集dmin有很大的差距,对于给定不同的dmin得到的异常检测结果通常也是具有很大的不稳定性。2、基于距离的方法理论上能够处理任意维度的数据,但是当数据点的属性是非数值属性时,点之间的就不能直接确定,通常需要转化为数值属性在计算距离。基于距离的异常点检测是近几年来比较受欢迎的技术之一,该技术是对于两个给定的点之间计算欧式距离。然而单纯的计算欧式距离并不能有效、准确地识别所有异常点,并且其计算过程繁琐、耗时,计算复杂度高。根据检测方法是否需要标签,可以把该检测方法分为监督式、半监督式及无监督式,其中无监督式是最具有挑战性的一种方法,因为缺乏有效的标签训练,并且再加上数据分布的不平衡性,加剧了检测结果的不准确性。综上,现有的异常点检测算法在特定条件或特定领域下效果较好,或者对较低维空间的异常点检测效果较好,当数据的维度较高,这些算法的效果并不理想,算法泛化能力较弱,并且针对高维空间数据,计算复杂度较高。因此,如何进一步提高异常点检测精度和效率成为了目前数据挖掘领域亟需解决的问题。
技术实现思路
针对现有技术之不足,本专利技术提出了一种基于数据结构的异常点检测方法,其包括以下步骤:S1)输入数据集X∈Rm×n,其中X表示m×n的数据矩阵,数据样本xi∈Rn,i∈{1,2,…m},n表示数据样本维度,m表示数据集X的样本个数;S2)设定计算数据样本邻居距离时所需要的邻居个数k,k∈[5,floor(5log10(m))];S3)针对数据集X构建一棵多维二叉树T,利用二叉树搜索算法搜索距离树中每个节点xi,i∈{1,2,…m}最近的k个邻居;S4)针对各个样本点xi,i∈{1,2,…m},利用Dijkstra算法计算出k个邻居与节点的距离dk(xi),其公式为:其中n表示各个样本点的维度;S5)基于各个样本点xi,i∈{1,2,…m}的k个欧式距离dk(xi),计算平均距离其公式为:S6)基于各个样本点xi,i∈{1,2,…m}的平均距离对平均距离进行升序排序;S7)判定特殊点:设定阈值p,基于排序后的平均距离选取前p个数据点,该p个数据点被判定为异常点。本专利技术具有以下有益效果:1、本专利技术是一种鲁棒的异常点检测方法,通过构建一棵多维二叉树寻找数据点之间全局空间结构关系,揭示了蕴含于距离中的用于异常检测的异常特征。因此,本专利技术更好地反映了数据集的结构特征和空间特征,适用于分布未知的数据。2、本专利技术基于数据结构考虑数据之间的距离,选取平均距离判断数据点为异常点的可能性,该指标不仅考虑了数据的全局结构特征,而且考虑了数据的局部结构特征,通过设定阈值p来确定异常点,提高了异常点检测的性能与鲁棒性,更好的反应了数据集的结构特征,满足异常点检测在实际应用环境的需求。3、本专利技术受数据分布和数据维度的影响较弱,因此同样适用于高维数据,在高维数据中稳定性表现较好,在实际应用中适用范围更广。附图说明图1示出了本专利技术异常点检测方法的流程图;图2示出了针对不同数量的邻居点,对UCI数据集使用本专利技术中的方法判定异常点的AUC曲线图;图3示出了对MNIST数据集使用本专利技术方法和传统方法判定异常点的结果图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本专利技术进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本专利技术的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本专利技术的概念。需要说明的是,本专利技术中的p门限值是指:确定的临界常数,用于评价当前观测点属于异常点的程度,它被定义为与当前观测点距离有关的全局点的个数的函数。本专利技术中的特殊点包括异常点。如图1所示,本专利技术的基于数据结构的异常点检测方法包括以下步骤:S1)输入数据集X∈Rm×n,阈值p,其中X表示m×n的数据矩阵,所述数据集X的每一行表示一个数据样本,即X包括m个样本,每个样本具有n维,数据样本xi∈Rn,i∈{1,2,…m},n表示数据样本维度,m表示数据集X的样本个数;S2)设定计算数据样本邻居距离时所需要的邻居个数k,k∈[5,floor(5log10(m))];S3)针对X构建一棵多维二叉树T,利用二叉树搜索算法,搜索距离树中每个节点xi,i∈{1,2,…m}最近的k个邻居;S4)基于k个邻居,针对各个样本点xi,i∈{1,2,…m},利用Dijkstra算法,计算出k个邻居与节点的距离dk(xi),具体如公式(1)所示:其中n表示各个样本点的维度;S5)基于各个样本点xi,i∈{1,2,…m}的k个欧式距离dk(xi),计算平均距离公式如(2)所示:S6)基于各个样本点xi,i∈{1,2,…n}的平均Dijkstra距离对平均距离进行升序排序;S7)判定特殊点:设定阈值p,基于排序后的平均距离,选取前p个数据点,该p个数据点被判定为异常点。本专利技术利用平均距离去判定样本点属于异常点的程度,通过门限值p来确定特殊点,提高了异常点检测的精度和速度,更好的反应了数据集的结构特征。此外,本专利技术受数据分布和数据维度影响较弱,在多维数据中的稳定性表现良好,在实际应用中适用范围更广。图2是针对不同数量的邻居点,对UCI数据集使用本专利技术中的方法判定异常点的AUC曲线图。在UCI数据集上,邻居点的个数越多,AUC值稳步上升,从图2可以看出本专利技术的方法具有鲁棒性和稳定性。图3是本文档来自技高网
...

【技术保护点】
1.一种基于数据结构的异常点检测方法,其特征在于,包括以下步骤:S1)输入数据集X∈Rm×n,其中X表示m×n的数据矩阵,数据样本xi∈Rn,i∈{1,2,…m},n表示数据样本维度,m表示数据集X的样本个数;S2)设定计算数据样本邻居距离时所需要的邻居个数k,k∈[5,floor(5log10(m))];S3)针对数据集X构建一棵多维二叉树T,利用二叉树搜索算法搜索距离树中每个节点xi,i∈{1,2,…m}最近的k个邻居;S4)针对各个样本点xi,i∈{1,2,…m},利用Dijkstra算法计算出k个邻居与节点的距离dk(xi),其公式为:

【技术特征摘要】
1.一种基于数据结构的异常点检测方法,其特征在于,包括以下步骤:S1)输入数据集X∈Rm×n,其中X表示m×n的数据矩阵,数据样本xi∈Rn,i∈{1,2,…m},n表示数据样本维度,m表示数据集X的样本个数;S2)设定计算数据样本邻居距离时所需要的邻居个数k,k∈[5,floor(5log10(m))];S3)针对数据集X构建一棵多维二叉树T,利用二叉树搜索算法搜索距离树中每个节点xi,i∈{1,2,…m}最近的k个邻...

【专利技术属性】
技术研发人员:李孝杰郭峰史沧红娄苗苗王录涛吕建成吴锡
申请(专利权)人:成都信息工程大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1