一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于K近邻算法的异常数据检测方法、系统、设备、介质与流程

2022-04-30 11:01:14 来源:中国专利 TAG:

基于k近邻算法的异常数据检测方法、系统、设备、介质
技术领域
1.本发明涉及异常数据检测技术领域,尤其涉及一种基于k近邻算法的异常数据检测方法、系统、设备、介质。


背景技术:

2.随着数据时代的到来,各行各业通过信息技术管理自身企业数据的需求与日俱增。许多企业经过前期探索式的业务系统建设,越来越明白信息化的建设本身就是企业数据的建设与管理。数据质量管理,异常数据检测及数据标准化是企业数据治理的重中之重。没有好的数据质量管理办法及技术,通过数据促生产就难以实现。
3.现有的数据质量检测办法,必须制定特异且复杂的校验规则进行异常数据检测,规则针对性强、复用性差且无法穷尽所有异常情况,存在缺陷。基于此,亟需一种通用的异常数据检测方法。


技术实现要素:

4.本发明的目的在于提供一种基于k近邻算法的异常数据检测方法、系统、设备、介质,用于确定异常数据,通用性强。
5.为了实现上述目的,本发明提供如下技术方案:
6.一种基于k近邻算法的异常数据检测方法,所述检测方法包括:
7.基于预设标准在待检测原始数据集中确定一正常数据与一异常数据;所述正常数据和所述异常数据组成已分类数据集;
8.在所述待检测原始数据集中随机选取一个未分类数据,并基于综合校验规则计算所述未分类数据与所述已分类数据集中每一已分类数据之间的相似度;
9.按照所述相似度从大到小的顺序进行排序,选取前k个相似度对应的已分类数据作为所述未分类数据的k个邻居;
10.根据所述k个邻居的类别确定所述未分类数据的类别,成为已分类数据,并将所述已分类数据放入所述已分类数据集;所述类别包括正常数据和异常数据;
11.判断所述待检测原始数据集中是否有未分类数据;
12.若是,则返回“在所述待检测原始数据集中随机选取一个未分类数据”的步骤,直至所述待检测数据集中的每一未分类数据均已被检测;
13.若否,则根据所述已分类数据集确定异常数据。
14.与现有技术相比,本发明提供的一种基于k近邻算法的异常数据检测方法,基于综合校验规则计算未分类数据与已分类数据集中每一已分类数据之间的相似度,并按照相似度确定未分类数据的k个邻居,根据k个邻居的类别确定未分类数据的类别,进而基于相似度确定待检测原始数据集中每一数据的类别,以确定所有的异常数据,实现异常数据检测。本发明所用的方法可以适用于所有场景下的异常数据检测,通用性强。此外,所用的检验规则简单,无需制定特异且复杂的校验规则进行异常数据检测,检测效率高。
15.一种基于k近邻算法的异常数据检测系统,所述检测系统包括:
16.已分类数据集确定模块,用于基于预设标准在待检测原始数据集中确定一正常数据与一异常数据;所述正常数据和所述异常数据组成已分类数据集;
17.相似度计算模块,用于在所述待检测原始数据集中随机选取一个未分类数据,并基于综合校验规则计算所述未分类数据与所述已分类数据集中每一已分类数据之间的相似度;
18.邻居确定模块,用于按照所述相似度从大到小的顺序进行排序,选取前k个相似度对应的已分类数据作为所述未分类数据的k个邻居;
19.类别确定模块,用于根据所述k个邻居的类别确定所述未分类数据的类别,成为已分类数据,并将所述已分类数据放入所述已分类数据集;所述类别包括正常数据和异常数据;
20.判断模块,用于判断所述待检测原始数据集中是否有未分类数据;
21.返回模块,用于若是,则返回“在所述待检测原始数据集中随机选取一个未分类数据”的步骤,直至所述待检测数据集中的每一未分类数据均已被检测;
22.异常数据确定模块,用于若否,则根据所述已分类数据集确定异常数据。
23.一种基于k近邻算法的异常数据检测设备,包括:
24.处理器;以及
25.存储器,其中存储计算机可读程序指令,
26.其中,在所述计算机可读程序指令被所述处理器运行时执行上述的检测方法。
27.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述检测方法的步骤。
28.与现有技术相比,本发明提供的检测系统、设备、介质的有益效果与上述技术方案所述检测方法的有益效果相同,此处不做赘述。
附图说明
29.此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
30.图1为本发明实施例1所提供的检测方法的流程示意图;
31.图2为本发明实施例1所提供的k近邻算法的原理图;
32.图3为本发明实施例2所提供的检测系统的系统框图。
具体实施方式
33.为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
34.实施例1:
35.许多企业顺应潮流,开发了自己的数据质量软件产品,如东软集团的《dataquality》提供了近100多种字段级校验,60多种表级校验,40多种表间规则校验等丰
富的校验模型,以及错误数据自动入库等辅助功能。又如神州信息开发的《数据质量管理系统》通过建立统一规范的数据质量运行机制、建立全面完善的异常数据监测机制、建立基于过程管理的数据监控机制及建立完善的数据质量考核机制,提升数据的准确性、及时性、完整性。然而数据校验规则丰富众多并不能完全识别出异常数据,这是由于真实的异常数据情况永远比校验规则复杂,再多的校验规则也无法穷尽各种异常数据。且使用了众多校验规则的数据质量效果并不好,这是由于每个字段都配置许多规则,是份无聊且繁琐的任务,一旦少配置就会校验不准。
36.针对现有技术必须制定特异且复杂的校验规则进行异常数据检测,规则针对性强、复用性差且无法穷尽所有异常情况,且为众多字段配置校验规则,操作繁琐并且费时费力的问题,本实施例提供一种通用的异常数据检测方法,使用k近邻算法解决异常数据检测问题,通用性强,且所用的校验规则简单,能够提升数据质量。
37.本实施例用于提供一种基于k近邻算法的异常数据检测方法,如图1所示,所述检测方法包括:
38.s1:基于预设标准在待检测原始数据集中确定一正常数据与一异常数据;所述正常数据和所述异常数据组成已分类数据集;
39.首先将待分析数据质量的待检测原始数据集载入数据库存储,并基于预设标准从待检测原始数据集中选取一个规范的数据和一个非规范的数据,分别设置类别为正常数据及异常数据,即从待检测原始数据集中确定一正常数据与一异常数据,相似度分别为1和0,形成已分类数据集。对于待检测原始数据集中已经知晓类别的数据,则将其归为已分类数据,存入已分类数据集中。
40.s2:在所述待检测原始数据集中随机选取一个未分类数据,并基于综合校验规则计算所述未分类数据与所述已分类数据集中每一已分类数据之间的相似度;
41.在待检测原始数据集随机选取一个未设置分类的数据,即随机选取一个不知晓类别的数据作为未分类数据。
42.其中,基于综合校验规则计算未分类数据与已分类数据集中每一已分类数据之间的相似度可以包括:
43.1)对于已分类数据集中的每一已分类数据,计算未分类数据与已分类数据之间的字符长度匹配度、特殊字符匹配度和数据类型匹配度;
44.2)对字符长度匹配度、特殊字符匹配度和数据类型匹配度进行加权求和,得到未分类数据与已分类数据之间的相似度。相似度越大代表二者的距离越近。
45.具体的,相似度=字符长度匹配度*a 特殊字符匹配度*b 数据类型匹配度*c;
46.其中a b c=1,a、b、c分别为字符长度匹配度、特殊字符匹配度和数据类型匹配度的权重,a、b、c的具体数值根据实验准确性调整得出。
47.字符长度匹配度:等于短字符的长度/长字符的长度,该值《=1。
48.特殊字符匹配度:设定除英文字母、数字、汉字、标点符号以外字符为特殊字符(如!、 @、#、¥、%等)。若未分类数据及已分类数据只有一方存在特殊字符,则特殊字符匹配度为 0,其余取1。
49.数据类型匹配度:若未分类数据及已分类数据的数据类型同为汉字、数字或英文字母,则数据类型匹配度为1,否则取0。
50.更为具体的,计算未分类数据与已分类数据之间的字符长度匹配度包括:分别计算未分类数据的第一字符长度和已分类数据的第二字符长度。判断第一字符长度是否小于第二字符长度;若是,则以第一字符长度和第二字符长度的比值作为未分类数据与已分类数据之间的字符长度匹配度,即此时以第一字符长度除以第二字符长度的商作为字符长度匹配度;若否,则以第二字符长度和第一字符长度的比值作为未分类数据与已分类数据之间的字符长度匹配度,即此时以第二字符长度除以第一字符长度的商作为字符长度匹配度。
51.计算未分类数据与已分类数据之间的特殊字符匹配度包括:判断未分类数据和已分类数据中是否存在特殊字符;所述特殊字符为除英文字母、数字、汉字、标点符号之外的字符;若未分类数据和已分类数据中均存在特殊字符,或者未分类数据和已分类数据中均不存在特殊字符,则未分类数据与已分类数据之间的特殊字符匹配度为1;否则,则未分类数据和已分类数据之间的特殊字符匹配度为0。
52.计算未分类数据与已分类数据之间的数据类型匹配度包括:判断未分类数据和已分类数据的数据类型是否相同;所述数据类型包括汉字、数字和英文字母;若是,则未分类数据与已分类数据之间的数据类型匹配度为1;否则,则未分类数据与已分类数据之间的数据类型匹配度为0。
53.本实施例所提出的综合检验规则,通过计算字符长度匹配度、特殊字符匹配度和数据类型匹配度,即可得到未分类数据与已分类数据之间的相似度,检验规则简单,相较于现有的复杂检验规则,能够显著提高异常数据检测效率。
54.s3:按照所述相似度从大到小的顺序进行排序,选取前k个相似度对应的已分类数据作为所述未分类数据的k个邻居;
55.初始化k值为2,且固定不变。经实验证明,k取全部已分类样本易造成前期样本分类结果对后期样本分类结果影响过大,故本实施例中k取固定值。
56.s4:根据所述k个邻居的类别确定所述未分类数据的类别,成为已分类数据,并将所述已分类数据放入所述已分类数据集;所述类别包括正常数据和异常数据;
57.其中,根据k个邻居的类别确定未分类数据的类别包括:将k个邻居中多数邻居的类别作为未分类数据的类别,也就是说,大于k/2个邻居的类别相同时,该类别即为未分类数据的类别。比如说,k取5,当3个邻居的类别为正常数据时,则此时的未分类数据的类别即为正常数据。当k个邻居中,k/2个邻居为正常数据,k/2个邻居为异常数据时,则未分类数据的类别与k个邻居中相似度最高的邻居的类别相同。比如说,k取6,其中3个邻居的类别为正常数据,3个邻居的类别为异常数据,此时相似度最高的邻居的类别为正常数据,则未分类数据的类别为正常数据。
58.需要说明的是,当未分类数据的类别确定后,该未分类数据即成为已分类数据,并将该已分类数据加入已分类数据集中。在确定下一个未分类数据的类别时,则以新的已分类数据集作为已分类数据集。
59.s5:判断所述待检测原始数据集中是否有未分类数据;
60.s6:若是,则返回“在所述待检测原始数据集中随机选取一个未分类数据”的步骤,直至所述待检测数据集中的每一未分类数据均已被检测;
61.s7:若否,则根据所述已分类数据集确定异常数据。
62.以下,通过一具体实验,对本实施例所用的异常数据检测方法进行进一步的说明:
63.1、初始化数据:选取待检测原始数据集,并从中选取正常数据和异常数据,如表1所示。
64.表1
[0065][0066][0067]
2.将【郭某某】作为未分类数据,预设初始k=2。
[0068]
3.计算未分类数据与已分类数据的相似度,即分别计算【郭某某】与【张某】、【281927】的相似度。
[0069]
【郭某某】与【张某】的相似度=0.67*0.2 0*0.4 1*0.4=0.534
[0070]
【郭某某】与【281927】的相似度=0.5*0.2 1*0.4 0*0.4=0.5
[0071]
4.确定k个邻居及未分类数据的类别
[0072]
由于邻居数k等于2,所以邻居为【张某】、【281927】,此时k/2个邻居为正常数据, k/2个邻居为异常数据,又因为最大的相似度为0.534,其为邻居【张某】对应的相似度,故该未分类数据的类别与【张某】相同,类别为正常数据。
[0073]
5、对其他未分类数据按照以上方法计算分类,则异常数据检测情况如表2所示。
[0074]
表2
[0075][0076][0077]
经由表2可知,本实验一共有5个未分类数据,通过该算法检测出了一种异常数据,另外样本【$8你是】为异常数据但未检测出,故本实施例的方法检测异常数据的准确率为75%。影响准确性的因素主要是数据语义差异,后续的相似度计算中可加入语义匹配度规则,以进一步提高异常数据检测的准确性。但由于当前无合适的语义匹配算法支撑,故暂不考虑加入本实施例。
[0078]
本实施例通过k近邻算法进行了异常数据检测,在此对k近邻算法的原理进行介绍
[0079]
1.概念介绍:
[0080]
所谓k近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例(也就是上面所说的k个邻居),这k个实例的多数属于某个类,就把该输入实例分类到这个类中。
[0081]
2.案例介绍:
[0082]
如图2所示,有两类不同的样本数据,分别用正方形和三角形表示,而图中的圆所标示的数据则是待分类数据。也就是说,现在不知道圆从属于哪一类(正方形or三角形),下面就要解决这个问题:给这个圆分类。
[0083]
如果k=3,圆最近的3个邻居是2个三角形和1个正方形,少数从属于多数,基于统计的方法,判定圆属于三角形一类。
[0084]
如果k=5,圆最近的5个邻居是2个三角形和3个正方形,少数从属于多数,基于统计的方法,判定圆属于正方形一类。
[0085]
由此可知,当无法判定当前待分类点是从属于已知分类中的哪一类时,便可以依据统计学的理论看它所处的位置特征,衡量它周围邻居的权重,而把它归为(或分配)到权重更大的那一类。这就是k近邻算法的核心思想。knn算法(k近邻算法)中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。knn算法本身简单有效,它是一种lazy-learning算法,分类器不需要使用训练集进行训练,训练时间复杂度为0。knn分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为n,那么knn的分类时间复杂度为o(n)。knn方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于knn 方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,knn方法较其他方法更为适合。k近邻算法使用的模型实际上对应于对特征空间的划分。k值的选择,距离度量和分类决策规则是该算法的三个基本要素:实现k近邻算法时,主要考虑的问题是如何对训练数据进行快速k近邻搜索,这在特征空间维数大及训练数据容量大时非常必要。
[0086]
本实施例提供的一种基于k近邻算法的异常数据检测方法,基于上述knn算法的原理,基于综合校验规则计算未分类数据与已分类数据集中每一已分类数据之间的相似度,并按照相似度确定未分类数据的k个邻居,根据k个邻居的类别确定未分类数据的类别,进而基于相似度确定待检测原始数据集中每一数据的类别,以确定所有的异常数据,从而提供了一种识别异常数据的通用方法,使校验操作变得简单,复用性强,同时减少了数据质量校验中,为每个字段配置校验规则的操作,减少了人力工作量,提高检验效率。
[0087]
实施例2:
[0088]
本实施例用于提供一种基于k近邻算法的异常数据检测系统,如图3所示,所述检测系统包括:
[0089]
已分类数据集确定模块m1,用于基于预设标准在待检测原始数据集中确定一正常数据与一异常数据;所述正常数据和所述异常数据组成已分类数据集;
[0090]
相似度计算模块m2,用于在所述待检测原始数据集中随机选取一个未分类数据,并基于综合校验规则计算所述未分类数据与所述已分类数据集中每一已分类数据之间的相似度;
[0091]
邻居确定模块m3,用于按照所述相似度从大到小的顺序进行排序,选取前k个相似
度对应的已分类数据作为所述未分类数据的k个邻居;
[0092]
类别确定模块m4,用于根据所述k个邻居的类别确定所述未分类数据的类别,成为已分类数据,并将所述已分类数据放入所述已分类数据集;所述类别包括正常数据和异常数据;
[0093]
判断模块m5,用于判断所述待检测原始数据集中是否有未分类数据;
[0094]
返回模块m6,用于若是,则返回“在所述待检测原始数据集中随机选取一个未分类数据”的步骤,直至所述待检测数据集中的每一未分类数据均已被检测;
[0095]
异常数据确定模块m7,用于若否,则根据所述已分类数据集确定异常数据。
[0096]
实施例3:
[0097]
本实施例用于提供一种基于k近邻算法的异常数据检测设备,包括:
[0098]
处理器;以及
[0099]
存储器,其中存储计算机可读程序指令,
[0100]
其中,在所述计算机可读程序指令被所述处理器运行时执行如实施例1所述的检测方法。
[0101]
实施例4:
[0102]
本实施例用于提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例1所述检测方法的步骤。
[0103]
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
[0104]
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献