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

一种数据异常检测方法及相关装置与流程

2022-02-24 16:49:22 来源:中国专利 TAG:


1.本技术涉及数据处理技术领域,特别涉及一种数据异常检测方法、数据异常检测装置、服务器以及计算机可读存储介质。


背景技术:

2.随着信息技术的不断发展,使用数据处理手段对各行各业的数据进行处理,以提高数据处理的效率,提前发现数据中存在的问题。
3.相关技术中,基于数据挖掘进行异常交易检测,首先采用了贝叶斯信念网络算法判断当前交易属于异常交易的后验概率。另外,将当前交易之前一定数量的历史交易组成交易序列,将该序列与已知异常交易序列对比,得到相似度。最终,综合后验概率和相似度两个指标来判别交易是否异常。但是,在真实的纳税人交易场景中,足够的有标签数据是十分理想化的。使用贝叶斯信念网络分类器对交易进行分类,在无标签数据的前提下是难以实施的;其次在对比历史交易序列和异常交易序列时,也没有考虑到异常交易序列的多样性与复杂性。也就是,无法准确的进行数据检测,降低了数据检查的准确性。
4.因此,如何提高对数据进行检测的准确性是本领域技术人员关注的重点问题。


技术实现要素:

5.本技术的目的是提供一种数据异常检测方法、数据异常检测装置、服务器以及计算机可读存储介质,以提高对数据进行检测的准确性,及时发现数据中的异常数据。
6.为解决上述技术问题,本技术提供一种数据异常检测方法,包括:
7.基于数据格式对原始数据进行预处理,得到多个数据矩阵;
8.采用卷积降噪自动编码器模型对所述多个数据矩阵进行表示向量提取,得到每个数据矩阵对应的表示向量;
9.将所有所述表示向量进行多输入融合,得到目标表示向量;
10.基于密度dbscan算法对所述目标表示向量进行聚类分析,得到异常点;
11.将所述异常点的数据标记为异常数据。
12.可选的,基于数据格式对原始数据进行预处理,得到多个数据矩阵,包括:
13.对所述原始数据进行清洗,得到待整理数据;
14.基于所述数据格式和数据属性对所述待整理数据进行数据矩阵整理,得到所述多个数据矩阵。
15.可选的,采用卷积降噪自动编码器模型对所述多个数据矩阵进行表示向量提取,得到每个数据矩阵对应的表示向量,包括:
16.基于预设模型结构进行构建,得到所述卷积降噪自动编码器模型;
17.采用所述卷积降噪自动编码器模型对所述多个数据矩阵进行模型训练;
18.当所述模型训练完成时,将所述模型训练的结果作为所述每个数据矩阵对应的表示向量。
19.可选的,将所有所述表示向量进行多输入融合,得到目标表示向量,包括:
20.基于预设比例将所有所述表示向量进行多输入融合,得到所述目标表示向量。
21.可选的,基于密度dbscan算法对所述目标表示向量进行聚类分析,得到异常点,包括:
22.对所述密度dbscan算法进行参数设定;
23.基于所述密度dbscan算法对所述目标表示向量进行聚类分析,得到所述异常点。
24.可选的,还包括:
25.基于所述异常数据发送提示信息。
26.本技术还提供一种数据异常检测装置,包括:
27.数据预处理模块,用于基于数据格式对原始数据进行预处理,得到多个数据矩阵;
28.表示向量提取模块,用于采用卷积降噪自动编码器模型对所述多个数据矩阵进行表示向量提取,得到每个数据矩阵对应的表示向量;
29.多输入融合模块,用于将所有所述表示向量进行多输入融合,得到目标表示向量;
30.聚类分析模块,用于基于密度dbscan算法对所述目标表示向量进行聚类分析,得到异常点;
31.异常数据标记模块,用于将所述异常点的数据标记为异常数据。
32.可选的,所述数据预处理模块,具体用于对所述原始数据进行清洗,得到待整理数据;基于所述数据格式和数据属性对所述待整理数据进行数据矩阵整理,得到所述多个数据矩阵。
33.本技术还提供一种服务器,包括:
34.存储器,用于存储计算机程序;
35.处理器,用于执行所述计算机程序时实现如上所述的数据异常检测方法的步骤。
36.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据异常检测方法的步骤。
37.本技术所提供的一种数据异常检测方法,包括:基于数据格式对原始数据进行预处理,得到多个数据矩阵;采用卷积降噪自动编码器模型对所述多个数据矩阵进行表示向量提取,得到每个数据矩阵对应的表示向量;将所有所述表示向量进行多输入融合,得到目标表示向量;基于密度dbscan算法对所述目标表示向量进行聚类分析,得到异常点;将所述异常点的数据标记为异常数据。
38.通过先对原始数据进行预处理,得到多个数据矩阵,再进行表示向量提取,得到每个数据矩阵对应的表示向量再进行多输入融合得到多个表示向量融合的目标表示向量,最后再进行聚类分析,得到异常点,实现在缺少标签数据的背景下,借助无监督的聚类算法检测出异常数据,提高数据检测的准确性。
39.本技术还提供一种数据异常检测装置、服务器以及计算机可读存储介质,具有以上有益效果,在此不做赘述。
附图说明
40.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
41.图1为本技术实施例所提供的一种数据异常检测方法的流程图;
42.图2为本技术实施例所提供的一种数据异常检测装置的结构示意图。
具体实施方式
43.本技术的核心是提供一种数据异常检测方法、数据异常检测装置、服务器以及计算机可读存储介质,以提高对数据进行检测的准确性,及时发现数据中的异常数据。
44.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
45.相关技术中,基于数据挖掘进行异常交易检测,首先采用了贝叶斯信念网络算法判断当前交易属于异常交易的后验概率。另外,将当前交易之前一定数量的历史交易组成交易序列,将该序列与已知异常交易序列对比,得到相似度。最终,综合后验概率和相似度两个指标来判别交易是否异常。但是,在真实的纳税人交易场景中,足够的有标签数据是十分理想化的。使用贝叶斯信念网络分类器对交易进行分类,在无标签数据的前提下是难以实施的;其次在对比历史交易序列和异常交易序列时,也没有考虑到异常交易序列的多样性与复杂性。也就是,无法准确的进行数据检测,降低了数据检查的准确性。
46.因此,本技术提供一种数据异常检测方法,通过先对原始数据进行预处理,得到多个数据矩阵,再进行表示向量提取,得到每个数据矩阵对应的表示向量再进行多输入融合得到多个表示向量融合的目标表示向量,最后再进行聚类分析,得到异常点,实现在缺少标签数据的背景下,借助无监督的聚类算法检测出异常数据,提高数据检测的准确性。
47.以下通过一个实施例,对本技术提供的一种数据异常检测方法进行说明。
48.请参考图1,图1为本技术实施例所提供的一种数据异常检测方法的流程图。
49.本实施例中,该方法可以包括:
50.s101,基于数据格式对原始数据进行预处理,得到多个数据矩阵;
51.可见,本步骤旨在基于数据格式对原始数据进行预处理,得到多个数据矩阵。其中,数据格式可以是将数据按照类别按照矩阵形式进行显示的格式。
52.其中,原始数据可以是从企业经营过程中获取到的纳税发票数据。
53.进一步的,本步骤可以包括:
54.步骤1,对原始数据进行清洗,得到待整理数据;
55.步骤2,基于数据格式和数据属性对待整理数据进行数据矩阵整理,得到多个数据矩阵。
56.可见,本可选方案中主要是说明如何进行预处理进行说明。本可选方案中首先对原始数据进行清洗,得到待整理数据,然后基于数据格式和数据属性对待整理数据进行数据矩阵整理,得到多个数据矩阵。可见,本可选方案中对原始数据进行清洗,得到待整理数据也就是剔除原始数据中不用的数据,以便降低数据量,提高有效数据的含量,然后将数据按照数据格式和数据属性进行整理,得到多个数据矩阵。也就是,将相同数据属性的数据整
理得到对应的数据矩阵。
57.s102,采用卷积降噪自动编码器模型对多个数据矩阵进行表示向量提取,得到每个数据矩阵对应的表示向量;
58.在s101的基础上,本步骤旨在采用卷积降噪自动编码器模型对多个数据矩阵进行表示向量提取,得到每个数据矩阵对应的表示向量。
59.其中,卷积降噪自动编码器模型是将卷积神经网络与降噪自动编码器结合。卷积神经网络是一项成熟的技术,可以用来构建数据之间的关联映射。降噪自动编码器可看作一种无监督学习的人工神经网络,降噪是为了去除数据中异常值对训练的扰动,提高模型的鲁棒性。该模型结构有两个阶段:编码阶段与解码阶段。
60.进一步的,本步骤可以包括:
61.步骤1,基于预设模型结构进行构建,得到卷积降噪自动编码器模型;
62.步骤2,采用卷积降噪自动编码器模型对多个数据矩阵进行模型训练;
63.步骤3,当模型训练完成时,将模型训练的结果作为每个数据矩阵对应的表示向量。
64.可见,本可选方案中主要是说明如何获取到每个数据矩阵的表示向量。本可选方案中基于预设模型结构进行构建,得到卷积降噪自动编码器模型,采用卷积降噪自动编码器模型对多个数据矩阵进行模型训练,当模型训练完成时,将模型训练的结果作为每个数据矩阵对应的表示向量。也就是,首先构建出需要使用的卷积降噪自动编码器模型,然后进行循环训练,将训练过程中的结果作为该数据矩阵对应的表示向量。实现了在进行特征提取过程中将数据的噪声进行剔除,以便提高数据的纯度,保持数据的有效性,并剔除多余的冗余数据。
65.s103,将所有表示向量进行多输入融合,得到目标表示向量;
66.在s102的基础上,本步骤旨在将所有表示向量进行多输入融合,得到目标表示向量。
67.进一步的,本步骤可以包括:
68.基于预设比例将所有表示向量进行多输入融合,得到目标表示向量。
69.可见,本可选方案中主要是说明如何进行多输入融合。本可选方案中,首先对不同的数据矩阵设置对应的数据比例,然后基于该设置的预设比例将所有表示向量进行多输入融合,得到该目标表示向量。
70.s104,基于密度dbscan算法对目标表示向量进行聚类分析,得到异常点;
71.在s103的基础上,本步骤旨在基于密度dbscan算法对目标表示向量进行聚类分析,得到异常点。
72.其中,密度dbscan(density-based spatial clustering of applications with noise,具有噪声的基于密度的聚类方法)算法是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。
73.进一步的,本步骤可以包括:
74.步骤1,对密度dbscan算法进行参数设定;
75.步骤2,基于密度dbscan算法对目标表示向量进行聚类分析,得到异常点。
76.可见,本可选方案中主要是说明如何进行聚类分析。本可选方案中,首先对密度dbscan算法进行参数设定,然后基于密度dbscan算法对目标表示向量进行聚类分析,得到异常点。
77.s105,将异常点的数据标记为异常数据。
78.在s104的基础上,本步骤旨在将异常点的数据标记为异常数据。
79.此外,本实施例还可以包括:
80.基于异常数据发送提示信息。
81.可见,基于本可选方案,在实施例执行结束时还可以基于异常数据发送对应的提示信息。以便将异常数据的相关属性信息进行提示。
82.综上,本实施例通过先对原始数据进行预处理,得到多个数据矩阵,再进行表示向量提取,得到每个数据矩阵对应的表示向量再进行多输入融合得到多个表示向量融合的目标表示向量,最后再进行聚类分析,得到异常点,实现在缺少标签数据的背景下,借助无监督的聚类算法检测出异常数据,提高数据检测的准确性。
83.以下通过一个具体的实施例,对本技术提供的一种数据异常检测方法做进一步说明。
84.本实施例中,该方法可以包括:
85.步骤1,对从纳税发票中获取的各企业各类信息进行整理、清洗,将企业投入、产出的金额,投产时间差,商品所属类别分别以矩阵形式呈现。同时对数据进行归一化处理,将数据映射到[0,1]之间;
[0086]
步骤2,构建卷积降噪自动编码器模型,用预处理后的数据训练模型,提取企业表示向量;
[0087]
步骤3,将企业的投产金额表示向量、投产时间差表示向量、商品所属类别向量通过多输入融合的方式进行融合,得到最终的企业表示向量,来作为下一步的输入;
[0088]
步骤4,将各企业的表示向量作为输入,使用基于密度的dbscan算法,设定合适的参数,对企业表示向量进行聚类分析,找到异常点;
[0089]
步骤5,异常点代表的企业即为投产异常的企业,可能存在虚开发票等逃税偷税行为,可交由税务稽查人员进一步审查。
[0090]
其中,交易过程中产生的发票是研究交易、纳税信息的唯一数据来源,通常将发票信息整理在数据库中。该数据包含纳税人进行一项交易行为而具备的所有相关属性,包括交易双方纳税人编号、交易商品编号、交易金额、开票时间等重要信息。但也存在很多冗余信息,对识别异常企业的帮助微乎其微。并且,发票的数据格式主要便于人类进行读写与理解,并不适用于计算机处理,因此需要对发票数据进行预处理。处理后得到的企业交易信息矩阵,包含“企业投产矩阵a”、“企业投产时间差矩阵t”、“商品类别矩阵c”三类。
[0091]
下面分别介绍三种交易矩阵的处理方法:
[0092]
其中,企业投产矩阵a的处理。首先,在数据库中通过sql(structured query language,结构化查询语言)语句操作,得到各企业的“投入”表与各企业的“产出”表,为之后建立企业“投入”矩阵与“产出”矩阵做铺垫。“投入”矩阵与“产出”矩阵的行索引均为各企业编号,列索引则表示各类商品编码,“投入”矩阵中的数值表示某企业购买某商品所花费的金额总量,“产出”矩阵中的数值表示某企业销售某商品所赚取的金额总量。
[0093]
由于企业规模不同,以及商品之间成本的差异,金额数值分散在不同的量级上,因此必须对矩阵进行归一化处理。这里将企业总数记作m,将商品总数记作n,“投入”矩阵用g表示,“产出”矩阵用x表示。本实施例中,沿企业轴对数据做归一化,计算每种商品金额在该企业交易中占据的比例,处理后的数值范围在[0,1]中。
[0094]
对于“投入”矩阵而言,第i行企业的向量归一化结果为:
[0095][0096]
其中,g
ij
是“投入”矩阵中第i行企业购买第j种商品花费的金额。同理,“产出”矩阵的归一化结果为:
[0097][0098]
最后,将“投入”矩阵g与“产出”矩阵x拼接,得到企业投产矩阵a。各企业的购买信息与销售信息分别合成一个完整的向量,该向量表示该企业全年的交易行为在金额数值上的体现。从几何意义上讲,在n维的空间中,每个企业向量都在空间中有唯一一个点表示。
[0099]
企业投产时间差矩阵t的处理。
[0100]
企业投产时间差矩阵信息从已有的发票数据中提取,按照开票日期,将已有的发票分为企业购买发票和企业销售发票。企业投产矩阵的构建以企业数量为行数,商品类别为列数,其中一行内不同元素代表一个企业的不同商品购销时间差,规定对于同一种商品,以其一个月内的开票时间差为输入,具体计算公式如下:
[0101]
t
ij
=a
time(js)-a
time(jp)

[0102]
其中,t
ij
为第i家企业第j种商品的购销时间差,a
time(js)
和a
time(jp)
分别代表在发票矩阵a中,i企业对应第j种商品的销售时间和购买时间。t
ij
最大为30,最小为-30。对于上述公式,有以下几种情形需要讨论:
[0103]
1、在单个月内,该种商品购买销售各一次,按上述计算即可;
[0104]
2、在单个月内,该种商品销售在前,购买在后,仍按照上述计算;
[0105]
3、在单个月内,该种商品无购销记录的,结果记为0;
[0106]
4、在单个月内,该种商品存在多笔购销记录,按照如下公式加权计算时
[0107]
间差:
[0108][0109]
其中,s
ij
表示在该月内,第i家企业对于j种商品的销售总金额,s
ijn
表示第n笔销售的金额;p
ij
表示在该月内,第i家企业对于j种商品的购买总金额,p
ijm
表示第m笔购买的金额。
[0110]
将得到的企业投产时间差矩阵t,按如下公式进行归一化处理:
[0111][0112]
其中,t
ij
是投产时间差矩阵中第i行企业投产第j种商品的时间差。
[0113]
商品类别矩阵c的处理
[0114]cij
=sgn(a
ij
),其中sgn函数定义如下:
[0115][0116]
对于矩阵c的解释:如果企业购买或销售过某种商品,那么在其投产矩阵a中对应位置会有正值,经过sgn函数,在c的对应位置上将其转化为1,代表着该企业有过这类商品的购销记录。0则意味着该企业无对应于这类商品的购销记录。
[0117]
基于卷积降噪自动编码器的表示学习。
[0118]
构建卷积降噪自动编码器模型,用以处理上述提及的三种企业交易矩阵,学习企业交易向量的数据表示。该模型将卷积神经网络与降噪自动编码器结合。卷积神经网络是一项成熟的技术,可以用来构建数据之间的关联映射。降噪自动编码器可看作一种无监督学习的人工神经网络,降噪是为了去除数据中异常值对训练的扰动,提高模型的鲁棒性。该模型结构有两个阶段:编码阶段与解码阶段。
[0119]
首先,是对输入数据的破坏。采用降噪自编码算法,以高斯分布对输入数据进行随机置零,致使数据丢失部分特征。这不仅使得在随机置零过程中将一些噪声去除,减少扰动,而且能够让模型在之后的训练中尽可能填补被破坏的特征,提高学习能力。
[0120]
其次,使用破坏后数据作为编码阶段的输入。编码阶段具有数据输入层、卷积层、池化层、全连接层、编码输出层。经过编码阶段,输入数据被压缩为特征向量。然后经过解码阶段再将特征向量复原,解码阶段具有编码输入层、全连接层、上采样层、逆卷积层、输出层。
[0121]
利用自编码器获取企业交易数据的表示学习,有如下重要步骤:
[0122]
步骤1,设置目标函数。
[0123]
编码阶段中,卷积层的目标函数定义为f
θ
(x),用于表示经过处理的输出。此处的x表示输入的企业交易数据。卷积层的输出特征向量记作h,该向量表示企业交易的特征,有:
[0124]
h=f
θ
(x)=s(wx b)。
[0125]
其中,w表示编码阶段卷积层的权重,b表示卷积层的偏置向量。
[0126]
对于输入破坏后的企业交易数据向量x
(t)
∈{x
(1)
,...,x
(n)
},每个向量都有对应输出:
[0127]h(t)
=f
θ
(x
(t)
)。
[0128]
卷积层之后为池化层,本发明采用最大池化层,主要用于数据的下采样,避免发生过拟合现象。最大池化保留一次滑动窗口的最大值。
[0129]
在解码阶段,卷积层的目标函数定义为g
β
(h),这里的h是编码阶段的企业交易特征向量。解码阶段主要将编码得到的企业交易特征向量进行“复原”。模型复原后的向量记作r。有:
[0130]
r=g
β
(h)=s(w

h b')
[0131]
其中,w'表示解码阶段卷积层的权重矩阵,b'表示偏置向量。
[0132]
对于每个编码向量h
(t)
∈{h
(1)
,...,h
(n)
},都有:
[0133]r(t)
=g
β
(h
(t)
)。
[0134]
上述编码阶段与解码阶段提及参数θ与β,两个阶段均会通过训练不断修正θ与β。θ为编码阶段参数,θ={w,b},β为解码阶段参数,且β={w

,b'}。且s(
·
)在解码阶段和编码阶段中均表示激活函数。
[0135]
步骤2,模型训练优化。
[0136]
在训练的过程中,需要确保误差loss越来越小。误差loss由输入企业交易数据x与最后的经解码后得到的结果r比较得出,需要注意的是此处x与r的维度应是相同的。误差loss会随着模型迭代不断降低,越小表明模型训练得越好,表示向量h的质量也会越高。误差函数定义为:
[0137][0138]
其中,考虑到企业交易特征数值维度较大,可以采用均方误差损失函数,其中,g
β
(f
θ
(x
(t)
))表示解码阶段的输出结果。
[0139]
利用反向传播算法调整参数,调整公式如下:
[0140][0141]
首先是解码阶段参数θ,利用反向传播算法更新,更新过程如下:
[0142][0143]
其中,α为预先设置的学习率。
[0144]
步骤3,获取降维处理后的企业交易数据。
[0145]
通过训练中的不断调整设置合适的超参数,使得损失函数低于设定的阈值。待模型训练完成后,提取出编码阶段的结果作为输入数据的表示向量,作为接下来多输入融合的输入。
[0146]
多输入融合。
[0147]
将上述经过自编码器降维处理后的输入按照一定的比例融合,得到用于聚类的样本向量,其结果x
ij
利用如下公式计算:
[0148][0149]
其中分别为企业投产矩阵、企业投产时间差矩阵和商品类别矩阵经过自编码器降维处理后的结果。α和β分别为时间差输入权重和商品类别权重。α和β可以动态调整,且要满足:
[0150]
α β<0.3,
[0151]
α>>β。
[0152]
dbscan聚类算法对企业特征向量进行聚类。
[0153]
dbscan算法是一种基于密度的聚类算法,主要用以寻找被低密度区域分离的高密度区域。dbscan算法的相关名词解释如下。
[0154]
核心点:核心点在基于密度的簇的内部。点的邻域由距离函数和用户指定的距离参数e决定。且一个点的给定邻域内的点数超过用户指定的域最小数量p
min
。那么该点可以称作核心点。
[0155]
边界点:如果一个点不是核心点,但是落在核心点的邻域内,那么该点称作边界点。
[0156]
噪声点:如果一个点既不属于核心点也不属于边界点,那么该点称作噪声点。
[0157]
本发明的任务便是找出这些噪声点,噪声点的实际含义是潜在的投产异常企业,也可以称作异常点。需要进一步审查其税务行为。
[0158]
该dbscan算法的主要步骤,可以包括:
[0159]
步骤1,算法初始化。
[0160]
首先算法的输入为企业交易数据集d={x
(1)
,...,x
(m)
}

。这里的输入为前一步骤经过自动编码器处理得到的企业表示向量。然后进行算法的初始设定,初始化核心点集合初始化聚类簇数k=0,初始化未访问点集合ψ=d,并且设定距离度量方法。距离度量方法通常选用欧氏距离,表示为:
[0161][0162]
其中,x与y分别为两个企业表示向量,n为向量的维度。
[0163]
步骤2,循环处理每个数据。
[0164]
循环数据集中每一个企业数据点,通过距离度量方法计算,寻找每个企业的邻域点集合n
x
。如果该数据点的邻域集合样本数|n
x
|≥p
min
,则将该数据点加入核心点集合:
[0165]
ω=ω∪{x}。
[0166]
步骤3,选择核心点生成簇。
[0167]
在核心企业点集合ω中,随机选择一个核心企业点d,建立一个以企业d为核心的簇cd,将企业d的邻域点都纳入该簇内。并且更新未访问点集合ψ=ψ-{d},将该点标记为已访问。
[0168]
步骤4,判定核心点邻域的样本。
[0169]
接下来,对企业d的邻域nd内所有的点进行判断,对于q∈nd,若q存在于未访问点的集合ψ中,检测q的邻域是否满足|nq|≥p
min
,若满足,则将nq集合中未归入任何一个簇的点归入cd簇。然后返回步骤3继续选择下一个核心点,直至说明所有的点都访问完毕。
[0170]
为了进行簇评估,引入轮廓系数。轮廓系数的取值范围为[-1,1],值越接近1说明聚类的性能越好,簇内凝聚度高且簇间分离度高;相反,值越接近-1说明聚类性能较差。将某个数据点与其所在簇内数据点的平均距离记作a,将某个数据点与其他簇样本的平均距离记作b。针对该数据点,轮廓系数s为:
[0171][0172]
s是单独数据点的轮廓系数,将所有点的轮廓系数取均值得到的是整体聚类的性能。最终整体聚类的轮廓系数记作s:
[0173][0174]
根据轮廓系数判断聚类效果,并调整参数e与p
min
,直至聚类效果优良,算法结束。最后得到聚类的簇数k,以及不在任何簇中的异常点。
[0175]
最后,根据模型从发票数据识别企业是否在投产过程中存在异常,将企业的投产金额经过预处理,输入到基于卷积降噪自动编码的多输入融合模型中获取数据表示,然后将得到的数据表示作为dbscan算法的输入,根据无监督的聚类找寻投产明显背离的异常企业。
[0176]
本实施例是用于解决数据缺少标签难以识别企业是否投产异常的问题,通过卷积网络与自动编码器的结合,提取企业投产的表示向量,提升训练及检测的效率。使用了降噪自编码算法,在训练时排除了噪声的影响,模型的鲁棒性较强。属于无监督学习,即使没有标签数据也能够识别企业是否存在异常。本实施例借助多输入融合手段,将企业购销时间差和商品类别作为辅助因素考虑在内,充分利用了现有的发票数据。
[0177]
进一步的,在实际应用中可以选取590家商贸业企业,获取此类企业一年的交易信息。利用该信息通过算法进行企业投产异常检测。该异常检测方法可以包括:
[0178]
步骤1,数据预处理。
[0179]
首先获取590家商贸业企业全年交易后得到的发票数据,其中每张发票都具有的信息为fpdm,fphm,qdbz,hwmc,spbm,kpsj,je,se,gfnsrdzdah,xfnsrdzdah,dzdzfpzt_id,id。这些信息表示的含义为发票代码,发票号码,清单标志,货物名称,商品编码,开票时间,金额,税额,购方纳税人电子档案号,销方纳税人电子档案号,电子底账发票状态,同一张发票中的货物id。由于真实场景中,存在商品编码漏填、错填的现象,采用机器学习的方法根据其他信息对商品编码进行补充、修正,从而得到xxhspbm,即学习后商品编码。
[0180]
在本实施例中,需要使用的信息为购方纳税人电子档案号(gfnsrdzdah),销方纳税人电子档案号(xfnsrdzdah),学习后商品编码(xxhspbm),金额(je),商品名称(spmc),开票时间(kpsj)六类。其中,购方纳税人电子档案号与销方纳税人电子档案号均是企业唯一的识别编号,代表唯一的企业。商品编码由19位长度的数字字符串表示,代表唯一的商品。商品名称表示商品的汉字名及其他表述。金额表示该项交易中发票的金额,正值表示正常交易,负值表示退货。
[0181]
通过数据库操作,得到各企业的“投入”表和“产出”表,“投入”表结构为(购方纳税人电子档案号,学习后商品编码,金额,商品名称),表示企业投入商品的金额记录;“产出”表结构为(销方纳税人电子档案号,学习后商品编码,金额,商品名称),表示企业产出商品的金额记录。记录中不同的商品共有3345种。因此,通过进一步预处理得到的“投入”矩阵与“产出”矩阵均为590*3345维度矩阵,表示590家企业在3345种商品中花费(赚取)的金额数值,若没有记录则记为0。
[0182]
本实施例中,对“投入”矩阵与“产出”矩阵分别沿着矩阵的企业轴对数据做归一化处理,计算企业购买(销售)某种商品金额在该企业购买(销售)所有商品的占比。以“投入”矩阵g的第i个企业为例,进行归一化处理:
[0183][0184]
其中,g
ij
是“投入”矩阵中第i行企业购买第j种商品花费的金额,n=3345为企业向量维度。同理,对“产出”矩阵进行归一化:
[0185][0186]
本实施例中,在归一化处理之后,将“投入”矩阵与“产出”矩阵拼接成590*6690维度矩阵,企业的“投入”信息与“产出”信息合成一个向量,表示企业全年交易信息的综合体现。
[0187]
对于购销时间差矩阵t,其中每一行代表一个企业的所有商品购销时间差,规定对于同一种商品,以其一个月内的开票时间差为输入,具体计算公式如下:
[0188][0189]
没有涉及到的商品购销时间差记为0,最后生成590*3345的矩阵。将得到的企业投产时间差矩阵t,按如下公式进行归一化处理:
[0190][0191]
对于商品类别矩阵c。其中每一行代表一家企业的所有商品购销情况,具体计算如下:
[0192]cij
=sgn(a
ij
)
[0193]
最后生成590*6690的矩阵c。
[0194]
步骤2,基于卷积降噪自动编码器的表示学习。
[0195]
使用590家企业全年“投入”与“产出”的金额信息作为卷积降噪自动编码器模型的输入,对企业的交易特征进行提取。模型以高斯分布对输入数据进行随机置零,进行破坏,使用破坏后数据作为新的输入进行训练。
[0196]
卷积降噪自动编码器模型的详细构建步骤如下:
[0197]
步骤2.1,结构设计。
[0198]
模型分两个阶段,编码阶段与解码阶段。在编码阶段提取590家商贸业企业的交易特征。根据步骤1得到的矩阵中商品维度确定编码阶段卷积层的输入神经元个数m,本实施例中m为6690,编码阶段具有数据输入层、卷积层、池化层、全连接层、编码输出层,解码阶段内部为编码输入层、全连接层、上采样层、逆卷积层、输出层。此处可以看出解码阶段的目的在于复原被压缩的原数据,再将复原结果与原数据比较。
[0199]
步骤2.2,确定模型的网络参数。
[0200]
网络结构确定后,需要确定具体的参数。本实施例中除解码阶段最后输出的激活函数为sigmoid函数外,其余层使用的激活函数均为线性整流函数,即relu函数。
[0201]
sigmoid函数的形式化表示为:
[0202][0203]
relu函数的形式化表示为:
[0204]
f(x)=max(0,x)。
[0205]
编码阶段卷积层和解码阶段卷积层的目标函数分别为f
θ
(x)与g
β
(h),x为输入数据,h为编码阶段输出的特征向量,模型的损失函数为:
[0206][0207]
其中,g
β
(f
θ
(x
(t)
))表示解码阶段的输出,θ为编码阶段参数,β为解码阶段参数。m为企业数量,本实施例中为590。网络在训练过程中为前向传播,在调整网络参数时采用反向传播算法。反向传播时,先调整解码阶段参数,后调整编码阶段参数。
[0208]
输入一条企业向量xi,目标向量也设置为xi,输出设置为yi。根据损失函数计算输出与目标的误差:
[0209]
loss(θ,β,xi,yi)=∑x
i-y
i2

[0210]
其中的输出yi表示为:
[0211]
yi=g
β
(f
θ
(xi))。
[0212]
实施例中使用反向传播算法调整网络参数,调整过程:
[0213][0214]
其中,α为学习率。另外,编码阶段卷积层的参数为{filter number,kernel size},表示filter数量和卷积核大小,三个卷积层的参数分别是{10,10},{32,10},{1,10},池化层参数为k,每个卷积层后的池化层参数设定为k=3,k=2,k=4。解码阶段同理,三个卷积层的参数分别是{1,10},{32,10},{10,10},池化层参数分别是k=4,k=2,k=3。
[0215]
重复该过程计算处理所有企业向量,最终得到可以提取企业特征向量的自动编码器模型。
[0216]
对于企业投产时间差矩阵和商品类别矩阵,做上述同样处理。
[0217]
步骤3,多输入融合。
[0218]
根据步骤2得到的模型对590家企业交易信息进行特征提取,最后得到的企业投产矩阵维度为590*128。各个企业向量的维度均从6690维压缩至128维。类似的,企业投产时间差矩阵维度为590*128,商品类别矩阵590*128。将上述处理过的矩阵按照如下公式进行融
合:
[0219][0220]
融合后得到最终输入矩阵x,用于后续密度聚类。
[0221]
步骤4,基于密度的dbscan算法进行聚类分析。
[0222]
将处理后的企业特征向量作为输入,设计dbscan算法对企业进行聚类分析,检测投产背离的异常企业。
[0223]
在本实施例中,dbscan的距离度量方法采用欧氏距离,形式化的表示如下:
[0224][0225]
其中,x与y为任意两个数据点,即两个企业特征向量,n=128为企业特征向量维度。
[0226]
dbscan算法的两个参数,距离参数e与簇内最小样本量p
min
,根据数据点的分布区间,定义合适的距离参数、簇内最小样本量区间,分别为[0.6,1.5]与[5,12]。
[0227]
采用嵌套循环的结构进行多次聚类,最终得到每一种参数下的聚类结果。结果包含聚类的簇数k,异常点的个数no,以及该聚类结果的轮廓系数s。轮廓系数表示为:
[0228][0229]
其中,a与b分别为某个数据点与簇内数据点的平均距离,某个数据点与其他簇样本的平均距离。si为单一数据点的轮廓系数,s为整体聚类的轮廓系数。该数值越接近1说明性能越好。
[0230]
选择最高轮廓系数的一组进行详细评估,获取全部异常点的详细交易信息进行审查。
[0231]
步骤5,企业异常投产识别。
[0232]
根据步骤2设计的表示学习方法提取590家商贸业企业的表示向量。根据步骤4提出的dbscan算法对590家商贸业企业进行聚类分析。得到聚集的簇的数量,以及不在簇中的异常企业。将该类具有嫌疑的异常企业交由税务稽查人员进一步核查。该方法为企业发票数据缺乏标签,难以识别投产背离提供了可解决的方案。
[0233]
可见,本实施例通过先对原始数据进行预处理,得到多个数据矩阵,再进行表示向量提取,得到每个数据矩阵对应的表示向量再进行多输入融合得到多个表示向量融合的目标表示向量,最后再进行聚类分析,得到异常点,实现在缺少标签数据的背景下,借助无监督的聚类算法检测出异常数据,提高数据检测的准确性。
[0234]
下面对本技术实施例提供的数据异常检测装置进行介绍,下文描述的数据异常检测装置与上文描述的数据异常检测方法可相互对应参照。
[0235]
请参考图2,图2为本技术实施例所提供的一种数据异常检测装置的结构示意图。
[0236]
本实施例中,该装置可以包括:
[0237]
数据预处理模块100,用于基于数据格式对原始数据进行预处理,得到多个数据矩阵;
[0238]
表示向量提取模块200,用于采用卷积降噪自动编码器模型对多个数据矩阵进行表示向量提取,得到每个数据矩阵对应的表示向量;
[0239]
多输入融合模块300,用于将所有表示向量进行多输入融合,得到目标表示向量;
[0240]
聚类分析模块400,用于基于密度dbscan算法对目标表示向量进行聚类分析,得到异常点;
[0241]
异常数据标记模块500,用于将异常点的数据标记为异常数据。
[0242]
可选的,该数据预处理模块100,具体用于对原始数据进行清洗,得到待整理数据;基于数据格式和数据属性对待整理数据进行数据矩阵整理,得到多个数据矩阵。
[0243]
本技术还提供一种服务器,包括:
[0244]
存储器,用于存储计算机程序;
[0245]
处理器,用于执行所述计算机程序时实现如以上实施例所述的数据异常检测方法的步骤。
[0246]
本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如以上实施例所述的数据异常检测方法的步骤。
[0247]
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0248]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0249]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0250]
以上对本技术所提供的一种数据异常检测方法、数据异常检测装置、服务器以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
再多了解一些

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

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

相关文献