异常数据的检测方法及其系统
技术领域
本申请涉及计算机技术领域,特别涉及异常数据的检测技术。
背景技术
异常点一般指的是某个显著和其他点不同的数据点,比如图1中的点A.异常点检测在很多领域都有着重要的应用,比如在保险反套利业务中,异常检测可以用来发现用户最近申请的理赔是否和大盘均值严重背离等。又如,在工业制造过程中,异常检测可以用来控制产品的质量。
目前,异常检测方法主要有两种:
1)在数据中标注正常数据和异常数据,采用有监督算法学习异常检测模型。这个方法的问题在于需要大量标注数据训练模型。
2)假设数据符合某个分布,以高斯分布为例,首先计算正常数据的均值和方差;然后计算待检测数据离正常分布的距离(即有几个标准差)。该方法的问题在于需要先假设数据符合某一个分布,然而很多数据的分布事先不可知。
发明内容
本申请的目的在于提供一种异常数据的检测方法及其系统,无需对大量数据打标签,也无需知道数据的分布,就可以有效地识别异常数据。
为了解决上述问题,本申请公开了一种异常数据的检测方法,包括:
将第一维数的输入数据使用自动编码机编码为第二维数的编码数据,再将该编码数据使用该自动编码机解码为该第一维数的解码数据,其中该第一维数大于第二维数;
根据该输入数据和该解码数据计算损失函数的值;
如果该损失函数的值大于约定阈值,则判定该输入数据为异常数据。
在一个优选例中,该损失函数是输入数据与解码数据差值的平方。
在一个优选例中,如果该损失函数的值小于约定阈值,则判定该输入数据为正常数据。
在一个优选例中,该输入数据是保险理赔数据,该异常数据的检测方法用于检测保险理赔是否异常。
在一个优选例中,该自动编码机的训练方法包括:
获取训练数据集合,其中包括多个该第一维数的训练数据;
将该训练数据集合中的每一个训练数据分别作为输入数据,将每一个训练数据分别使用该自动编码机编码为该第二维数的编码数据,再将该编码数据使用该自动编码机解码为该第一维数的解码数据;
对该自动编码机的参数进行调整,使得对于该训练数据集合中的所有训练数据和对应的解码数据,损失函数的值最小;其中,该损失函数是训练数据与对应的解码数据差值的平方。
本申请还公开了一种异常数据的检测系统,包括:
自动编码机,用于将第一维数的输入数据编码为第二维数的编码数据,再将该编码数据解码为该第一维数的解码数据,其中该第一维数大于第二维数;
损失函数计算模块,用于根据该输入数据和该解码数据计算损失函数的值;
异常判定模块,用于在该损失函数的值大于约定阈值时,判定该输入数据为异常数据。
在一个优选例中,该损失函数是输入数据与解码数据差值的平方。
在一个优选例中,该异常判定模块还用于,在该损失函数的值小于约定阈值时,判定该输入数据为正常数据。
在一个优选例中,该输入数据是保险理赔数据,该异常数据的检测系统用于检测保险理赔是否异常。
在一个优选例中,还包括训练模块,用于对该自动编码机进行训练;该训练模块进一步包括:
数据获取子模块,用于获取训练数据集合,其中包括多个该第一维数的训练数据;
计算子模块,用于将该训练数据集合中的每一个训练数据分别作为输入数据,将每一个训练数据分别使用该自动编码机编码为该第二维数的编码数据,再将该编码数据使用该自动编码机解码为该第一维数的解码数据;
参数调整子模块,用于对该自动编码机的参数进行调整,使得对于该训练数据集合中的所有训练数据和对应的解码数据,损失函数的值最小;其中,该损失函数是训练数据与对应的解码数据差值的平方。
本申请还公开了一种异常数据的检测系统,包括:
存储器,用于存储计算机可执行指令;以及,
处理器,用于在执行该计算机可执行指令时实现如前文描述的方法中的步骤。
本申请还公开了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。
本申请实施方式中,无需标注数据,亦不用对数据的分布做事先假设,只要预先进行无监督训练,就可以有效地自动识别与大部分数据有明显差异的异常数据。
本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而A+B+C+E的方案应当视为已经被记载。
附图说明
图1是异常数据点的示意图
图2是根据本申请第一实施方式的异常数据的检测方法流程示意图
图3是根据本申请第二实施方式的异常数据的检测系统结构示意图
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
部分概念的说明:
自动编码机:AutoEncoder,又可称为自编码网络,是人工神经网络的一种,用于以无监督学习的方式学习有效的数据编码。
下面概要说明本申请实施方式的部分创新点:
自动编码机技术原本用于图像和可视化等领域,使用该技术实现数据的降噪和降维。本申请实施方式创造性地将自动编码机应用于异常检测。自动编码机被设置为先对输入数据进行降维编码,再进行升维解码得到解码数据。使用训练数据集合训练自动编码机,使得自动编码机的损失函数最小。将待检测数据输入训练好的自动编码机,得到解码数据,进而根据该解码数据和待检测数据计算损失函数,如果该损失函数大于预定阈值,则判定为异常数据,如果该损失函数小于预定阈值,则判定为正常数据。该技术方案中自动编码机的训练是无监督训练,无需工作量巨大的数据标注工作,也不需要预先知道或假设数据所符合的分布规律,但效果十分显著。应用于保险理赔领域时可以有效地识别出异常的理赔申请。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
本申请的第一实施方式涉及一种异常数据的检测方法,其流程如图2所示,该方法包括以下步骤:
在步骤201中,获取输入数据X,该输入数据的维数为第一维数(n)。
此后进入步骤202,将n维的输入数据X使用自动编码机编码为第二维数(m)的编码数据Z,再将该编码数据使用自动编码机解码为n维的解码数据Y,其中n>m,n和m为正整数。
此后进入步骤203,根据输入数据和解码数据计算损失函数的值。
损失函数的形式可以是多种多样的。在一个实施例中,损失函数是输入数据与解码数据差值的平方,即(X-Y)2。在其他实施例中,损失函数也可以是其他的形式,例如X与Y差值的绝对值,等等。
此后进入步骤204,判断损失函数的值是否大于约定阈值。
如果损失函数的值大于约定阈值,则进入步骤205判定输入数据为异常数据。
如果损失函数的值小于约定阈值,则进入步骤206判定输入数据为正常数据。
在一些实施例中,如果损失函数的值等于约定阈值,则判定输入数据为异常数据;在另一些实施例中,如果损失函数的值等于约定阈值,则判定输入数据为正常数据。换句话说,如果损失函数的值等于约定阈值,可以根据应用场景设定其为异常数据或正常数据。
本实施方式所描述的方法无需标注数据,亦不用对数据的分布做事先假设,只要预先进行无监督训练,就可以有效地自动识别与大部分数据有明显差异的异常数据,具有显著的技术效果。
上面用到的自动编码机需要预先使用训练数据进行训练,训练方法如下:
获取训练数据集合,其中包括多个训练数据,每个训练数据均为n维。在一个实施例中,训练数据集合中的数据都是正常数据。在另一个实施例中,训练数据集合中的数据中包含少量的异常数据。这种情况符合绝大部分的应用场景,因为通常之所以称为异常数据,就是因为这部分异常数据的数据量远少于正常数据的数据量。如果异常数据在训练数据集合中占比过大的话,有可能会降低本说明书一些实施例中对异常数据的识别效果。
将训练数据集合中的每一个训练数据分别作为输入数据,将每一个训练数据分别使用自动编码机编码为m维编码数据,再将该编码数据使用自动编码机解码为n维解码数据。
对自动编码机的参数进行调整,使得对于训练数据集合中的所有训练数据和对应的解码数据,损失函数的值最小。其中,损失函数是训练数据与对应的解码数据差值的平方。
上述使用自动编码机编码和解码的步骤,以及对自动编码机参数的调整步骤,通常需要多次的迭代才可以得到使得损失函数的值最小的优化结果。
在一个实施例中,上述技术方案应用于保险理赔,自动编码机的输入数据是保险理赔数据(例如:最近申请理赔的次数、下单到退货的分钟数等),通过上述方法就可以检测保险理赔的申请是否异常,进而对异常的保险理赔申请进行进一步的深入调查。申请人上述技术方案应用于保险理赔的测试集数据,被判为异常的数据经过人工检测,有42%的样例有套现的行为,可见效果显著。
在其他一些实施例中,上述技术方案也可以应用于其他的领域,例如工业制造领域,将某种产品生产过程的各种监控数据作为输入数据,实时监控生产过程是否发生异常。又如,信用卡套现的检测等等。
本申请的第二实施方式涉及一种异常数据的检测系统,其结构如图3所示,该异常数据的检测系统包括:
自动编码机301,用于将第一维数(n)的输入数据X编码为第二维数(m)的编码数据Z,再将该编码数据解码为n维的解码数据Y,其中n>m,n和m为正整数。
损失函数计算模块302,用于根据输入数据和解码数据计算损失函数的值。
损失函数的形式可以是多种多样的。在一个实施例中,损失函数是输入数据与解码数据差值的平方,即(X-Y)2。在其他实施例中,损失函数也可以是其他的形式,例如X与Y差值的绝对值,等等。
异常判定模块303,用于在损失函数的值大于约定阈值时,判定输入数据为异常数据;在损失函数的值小于约定阈值时,判定输入数据为正常数据。
在一些实施例中,如果损失函数的值等于约定阈值,则判定输入数据为异常数据。在另一些实施例中,如果损失函数的值等于约定阈值,则判定输入数据为正常数据。换句话说,如果损失函数的值等于约定阈值,可以根据应用场景设定其为异常数据或正常数据。
本实施方式所描述的系统无需标注数据,亦不用对数据的分布做事先假设,只要预先进行无监督训练,就可以有效地自动识别与大部分数据有明显差异的异常数据
图3中h1、h2、h3和h4代表在自动编码机(一种人工神经网络)内部各个层(例如隐藏层)中的中间结果。代表X、Y、Z、h1、h2、h3和h4的方框的高度示意了数据的维数,从图中可以形象地看出输入的X在自动编码机的各个层中不断地降维,一直到编码结果Z,再从Z开始在自动编码机此后的各个层中不断地升维,一直到解码结果Y。
在一个实施例中,上述异常数据的检测系统应用于保险理赔,自动编码机的输入数据是保险理赔数据,通过上述系统就可以检测保险理赔的申请是否异常,进而对异常的保险理赔申请进行进一步的深入调查。
在其他一些实施例中,上述系统也可以应用于其他的领域,例如工业制造领域,将某种产品生产过程的各种参数作为输入数据,实时监控生产过程是否发生异常。
上述系统还包括训练模块,用于对自动编码机进行训练。训练模块进一步包括:
数据获取子模块,用于获取训练数据集合,其中包括多个第一维数的训练数据。
计算子模块,用于将训练数据集合中的每一个训练数据分别作为输入数据,将每一个训练数据分别使用自动编码机编码为第二维数的编码数据,再将该编码数据使用自动编码机解码为第一维数的解码数据。
参数调整子模块,用于对自动编码机的参数进行调整,使得对于训练数据集合中的所有训练数据和对应的解码数据,损失函数的值最小。其中,损失函数是训练数据与对应的解码数据差值的平方。
在一个实施例中,训练数据集合中的数据都是正常数据。
在另一个实施例中,训练数据集合中的数据中包含少量的异常数据。这种情况符合绝大部分的应用场景,因为通常之所以称为异常数据,就是因为这部分异常数据的数据量远少于正常数据的数据量。如果异常数据在训练数据集合中占比过大的话,有可能会降低本说明书一些实施例中对异常数据的识别效果。
第一实施方式是与本实施方式相对应的方法实施方式,第一实施方式中的技术细节可以应用于本实施方式,本实施方式中的技术细节也可以应用于第一实施方式。
需要说明的是,本领域技术人员应当理解,上述异常数据的检测系统的实施方式中所示的各模块的实现功能可参照前述异常数据的检测方法的相关描述而理解。上述异常数据的检测系统的实施方式中所示的各模块的功能可通过运行于处理器上的程序(可执行指令)而实现,也可通过具体的逻辑电路而实现。本申请实施例上述异常数据的检测系统如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应地,本申请实施方式还提供一种计算机可读存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本申请的各方法实施方式。计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于,相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
此外,本申请实施方式还提供一种异常数据的检测系统,其中包括用于存储计算机可执行指令的存储器,以及,处理器;该处理器用于在执行该存储器中的计算机可执行指令时实现上述各方法实施方式中的步骤。其中,该处理器可以是中央处理单元(CentralProcessing Unit,简称“CPU”),还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,简称“DSP”)、专用集成电路(Application Specific IntegratedCircuit,简称“ASIC”)等。前述的存储器可以是只读存储器(read-only memory,简称“ROM”)、随机存取存储器(random access memory,简称“RAM”)、快闪存储器(Flash)、硬盘或者固态硬盘等。本发明各实施方式所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
在本申请提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描述的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。