Fast and Reliable Anomaly Detection in Categorical Data

Minimum Description Length, MDL:最小描述长度

摘要:对于金融、医疗、安全等领域的许多应用来说,发现大型多维数据库中的异常是一项至关重要的任务。本文介绍了一种利用基于模式压缩的识别异常的新方法——COMPREX。我们的方法找到一组简洁描述数据库规范的字典,将那些与规范不同的点标记为异常点,具有较高的压缩代价。我们的方法具有四个关键特征:(1)它是无参数的,它直接从数据构建字典,不需要用户指定参数如距离函数或密度和相似度阈值;(2)它具有通用性,它适用于广泛的复杂数据库,包括图形、图像和关系数据库,kennel包含分类和数字特征;(3)它是可扩展的,它的运行时间随数据库大小和维数线性增长;(4)它具有有效性,在广泛的数据集上进行的实验表明,在压缩和异常检测的精度方面都有很大的改进,超过了最先进的竞争对手。

1 Introduction

检测数据中的异常和不规范是一项重要的任务,并且存在许多异常检测至关重要的应用程序,例如检测网络入侵、信用卡欺诈、保险索赔欺诈等。除了发现可疑行为外,异常检测还有助于发现罕见事件,如医学上的罕见疾病,以及数据清理和过滤。然而,发现异常是一项困难的任务,特别是对于复杂的多维数据库。

本文使用基于模式压缩来处理多维分类数据库中的异常检测问题。基于压缩的技术主要在通信理论中被探索,以降低传输成本,提高吞吐量,在数据库中则降低存储成本,提高查询功能。我们改进目前的研究,将压缩识别作为一种发现异常的自然工具。简单来说,我们通过压缩数据的模式来定义规范。那么任何压缩不好的数据点都是不符合规范的,因此是不正常的。

COMPREX的核心是使用一组字典来编码数据库。我们利用数据库中特征之间的相关性,将那些具有高信息增益的特征分组,并为每一组强交互特征构建字典(包括查找表或编码表)。这些字典根据模式捕获数据分布;模式出现的频率越高,其编码长度就越短。目标是找到产生最小无损压缩的最优字典集,然后定位编码长度较长的元组。

[22]将[21]基于KRIMP项目集的压缩器应用在异常检测中,证明了基于字典的压缩是非常有效的。除了高性能之外,它允许进行表征,可以很容易地检查元组是如何编码的,以及为什么认为一个元组的异常的,本文展示了COMPREX可以做的更好,既能产生更好的压缩(相关的,更高的检测精度),也能降低运行时间。

我们的方法使用多个编码表来描述数据实现更好的压缩,而KRIMP只构建一个编码表。因此COMPREX可以更好的利用特征组之间的相关性,通过去除不相关的特征,它可以更有效地局部分配编码。此外,我们直接从数据以一种自底向上的方式构建编码表,而不是过滤大量预先挖掘的候选模式集合,随着数据库维度的增加,也就是特征数量的增加,成本会呈指数级增加。

此外,由于不需要用户提供候选项目集合,也不需要最小的支持阈值,因此COMPREX在理论和实践中都是无参数的。我们使用最小描述长度原则来自动决定特征组的数量,对哪些特征进行分组,在编码表中包含哪些模式,并且指出异常。相比之下,现有的大多数异常检测方法都有参数,如相似性函数的选择、密度或距离阈值、最近邻数等。

简而言之,通过使用多个而不是一个编码表表示数据来改进当前的技术,这让我们能够更好地掌握强交互性。此外,我们直接从数据构建模型,避免了挖掘和过滤大量候选模式集合的昂贵步骤。

实验表明模型在异常检测方面具有较高的性能,大大提高了当前分类数据的检测水平。进一步表明COMPREX是非常普遍适用的,在离散化之后,它匹配了数字数据的最新技术,正确识别了平移后的大型图形和图像数据中的异常。

2 Preliminaries and Background

2.1 Preliminaries

本文考虑的是分类数据库。数据库\small D由一个\small n个元组组成,包含了\small m个分类特征 \small \mathcal{F}=\left \{ f_{1},...,f_{m} \right \},每个特征 \small f \ \epsilon \ \mathcal{F} 都有一个可能值为 \small \left \{ v_{i},v_{2},... \right \} 的域 \small dom(f) ,\small v \ \epsilon \ dom(f) 的个数是 \small f 的度,即\small arity(f)=|dom(f)| \ \epsilon \ \mathbb {N} 。

特征之间的域是不一样的:\small dom(f_{i})\cap dom(f_{j})=\varnothing ,\forall i\neq j 。特征集 \small F\subseteq \mathcal{F} 的域是单个特征 \small f \ \epsilon \ F 的域的笛卡尔积,即 \small dom(F)= \prod\nolimits _{f\epsilon F}dom(f) 。

数据库\small D\small n个元组的集合,对于\small \mathcal{F}里每个特征,每个元组 \small t 是一个长度为\small m包含一个值的向量。因此 \small D 可以被认为是\small n\times m的矩阵,其列 \small i 的可能值由 \small dom(f_{i}) 决定。

一个项为一对特征值, \small (f=v),f\subseteq \mathcal{F},v \ \epsilon \ dom(f) 。一个项集就是一对特征集,\small (F=v),F\subseteq \mathcal{F} ,\small v \ \epsilon \ dom(F)  是长度为 \small |F| 的向量。通常项集称为模式。

对所有特征 \small f \ \epsilon \ F,t_{f}=v_{f} ,元组 \small t 包含一个模式 \small (F=v) ,记做 \small p(F=v)\subseteq t \ (or \ p\subseteq t) 。模式 \small (F=v) 的支持度为 \small D 中元组的数量:\small supp(F=v)=|\left \{ t \ \epsilon \ D|(F=v)\subseteq t \right \}| 。其频率为:\small freq(F=v)=supp(F=v)/|D| 。

特征集 \small F 的信息熵定义为:

\small H(F)=-\sum _{v\epsilon dom(F)}freq(F=v)log \ freq(F=v)

2.2 The MDL principle

MDL可以看作是基于无损压缩的模型选择。给定一组模型\small \mathcal{M},MDL将最佳模型 \small M\epsilon \mathcal{M} 确定为最小化的模型:\small L(M)+L(D|M) ,其中 \small L(M) 是模型\small M的描述长度,\small L(D|M) 是\small M编码的数据的描述长度,即数据库 \small D 的MDL最优模型为所有可能模型中对\small D进行最简化的编码,提供了最好的无损压缩。

MDL提供了一种系统的选择模型的方法,该方法能够平衡模型的复杂性和对数据的适合度。过于复杂的模型可能对任意数据都能很好拟合,但具有低的\small L(D|M),会过拟合数据且以较高的\small L(M)作为惩罚。过于简单的模型具有非常低的\small L(M),但由于它们无法识别\small D中重要的结构,\small L(D|M)往往会比较高,即\small L(D|M)较高。

2.3 Dictionary based compression

2.3.1 Data encoding

一个模式在数据库中出现的频率越高,它的编码就越短。

 

香农熵给出了\small p的最优前缀编码长度:

\small L(code(p) \ | \ CT)=-log (\frac{usage(p)}{\sum\limits_{​{p}'\epsilon CT}usage({p}')})

编码元组 \small t 的比特数就是其覆盖的模式的编码长度之和:

\small L(t \ | \ CT)=\sum\limits_{p\epsilon cover(t)}L(code(p) \ | \ CT)

编码数据库的比特数总长度为编码的数据元组的长度之和:

\small L(D \ | \ CT)=\sum\limits_{t\epsilon D}L(t \ | \ CT)

2.3.2 Model encoding

为了找到最优的MDL压缩器,需要确定已编码模型的大小,即代码表:

\small L(CT)=\sum\limits_{p\epsilon CT}L(code(p) \ | \ CT)+\sum\limits_{i\epsilon \S }-r_{i} \ log(p_{i})

3 Proposed Method

3.1 Compression with Set of Tables: Theory

通过使用多个编码表来改进,利用相关性为每组高度相关的特征构建一个单独的、可能更小的CT,而不是为所有可能不相关的特征构建一个单独的、可能更大的CT。因此使用多个即一组编码表并高效挖掘,不需要昂贵的频繁项集挖掘,是本文两个主要贡献。

定义1 特征分区 \small \mathcal{P}=\left \{ F_{i},...,F_{k} \right \} 是特征集 \small \mathcal{F} 中的一个分组:1)每个分区包含一个或多个特征;2)所有分区互不相交;3)每个特征都属于一个分区。

问题描述1 给定\small D\small n个数据元组,包含\small \mathcal{F}\small m个特征集,找到一个分区\small \mathcal{P}:\left \{ F_{i},F_{2},...,F_{k} \right \} 以及一组相关联的编码表 \small \mathcal{CT}:\left \{ \mathcal{CT}_{F_{1}},\mathcal{CT}_{F_{2}},...,\mathcal{CT}_{F_{k}} \right \} ,使得以比特为单位的压缩总代价最小:

\small L(\mathcal{P},\mathcal{CT},\mathcal{D})=L(\mathcal{P})+\sum\limits_{F\epsilon \mathcal{P}}L(\pi_{F}(\mathcal{D})|\mathcal{CT}_{F})+\sum\limits_{F\epsilon \mathcal{P}}L(\mathcal{CT}_{F})

其中 \small \pi_{F_{i}}(\mathcal{D}) 为\small D在特征子空间 \small F_{i} 上的投影。

\small L(\mathcal{P},\mathcal{CT},\mathcal{D}) 的第一项表示分区的编码长度,分为两部分:编码分区的数量和每个分区的特征。
(a)编码分区的数量:\small log^{*}(k)+log(c),c=\sum 2^{-log(n)}(b)编码每个分区的特征:\small m \ log(k)

 即 \small L(\mathcal{P})=log^{*}(k)+m \ log(k) 。

\small L(\mathcal{P},\mathcal{CT},\mathcal{D}) 的第二项表示用给定的编码表集对数据进行编码的代价,按照 \small \mathcal{P} 对每个元组进行分区,在相应的编码表使用最优编码。 \small L(\mathcal{P},\mathcal{CT},\mathcal{D}) 的第三项表示模型成本,即编码表的总长度。

3.2 Mining Set of Code Tables: Algorithm

在定义代价函数 \small L(\mathcal{P},\mathcal{CT},\mathcal{D}) 的基础上,还需要一种搜索算法使其最小化。本文使用贪婪的自底向上、迭代的方式构建一组编码表,COMPREX从一个分区\small \mathcal{P}开始 ,每个特征都有属于自己的组,与特征集相关的特征\small f_{i}在同一个编码表 \small \mathcal{CT}_{i} 。

定义2 一个基本编码表 \small \mathcal{CT} 对一个特征进行编码。模式 \small p \ \epsilon \ \mathcal{CT} 包含 \small dom(f) 中所有长度-1的唯一项 \small v_{i},...,v_{arity(f)} ,即 \small uasge(p \ \epsilon \ \mathcal{CT})=freq(f=v) 。

 通过IG找到合并候选集,使用MDL来判断总代价是否降低,从而决定是否进行合并。首先计算出所有特征集对的IG矩阵,这个矩阵是一个非负对称矩阵。设 \small |F| 为特征集中特征数量,按照每个特征集的IG递减排序,然后开始迭代,这些特征集对就是待合并的候选\small \mathcal{CT}。设初始代价为 \small cost_{init}, \small \mathcal{CT}_{i|j} 的构造过程如下:将所有模式 \small p_{i,1},...,p_{i,n} 和 \small p_{j,1},...,p_{j,n} 放入\small \mathcal{CT}_{i|j},先按长度降序排序,再按\small usage降序排序。候选分区 \small \widehat{\mathcal{P}} 通过从\small \mathcal{P}在删除特征集 \small F_{i},F_{j} 以及 \small F_{i|j} ;同样的方法构建临时编码表集 \small \widehat{\mathcal{CT}} 。

接着找到基于\small F_{i|j}诱导的数据库中所有唯一行,这些长度为 \small |F_{i}|+|F_{j}| 的模式按次数降序排序,构成插入到 \small \mathcal{CT}_{i|j} 的候选集。在内部迭代中,逐一插入并去重,删除没有出现过的模式,然后重新计算编码长度,计算每次插入后的总代价。如果总代价降低,存储候选分区 \small \widehat{\mathcal{P}} 和相关编码表集 \small \widehat{\mathcal{CT}},否则继续插入下一个候选模式。  在外部迭代中,如果总代价降低,则计算新特征集 \small F_{i|j} 与其余特征集之间的IG,否则不合并,丢弃候选分区 \small \widehat{\mathcal{P}} 和相关编码表集 \small \widehat{\mathcal{CT}} 。 接下来循环搜索至没有更多的特征集可以合并则终止。

时间复杂度:\small O(m^{2}n)

3.4 COMPREX at Work: Anomaly Detection

在给定的编码表中,短的编码长度代表使用率高的编码,即其模式表示数据的模式,这些模式可以有效地压缩大多数数据,因为它们捕捉了总体数据规范的趋势。另一方面,编码较长的模式出现次数少,从而对数据的稀疏区域进行编码,因此数据库中的数据元组可以通过其异常编码代价来进行评分并排序,将得分最高的k个数据点作为可能的异常;或者确定一个异常的判定阈值,将压缩代价大于阈值的点标记为异常:

\small \begin{align*} score(t) = & L(t|\mathcal{CT})=\sum_{F\epsilon \mathcal{P}}L(\pi_{F}(t)|\mathcal{CT}_{F}) \\ = & \sum_{F\epsilon \mathcal{P}}\sum _{p\epsilon cover(\pi_{F}(t))}L(code(p)|\mathcal{CT}_{F}) \end{align*} 

4 Empirical Study

评估标准:1以比特为单位的压缩代价;2运行时间;3检测准确性;4可扩展性

对比异常检测算法:KRIMP、LOF

4.1 Compression cost and Running time

4.2 Detection accuracy

COMPREX on categorical data:

COMPREX on numerical data:

 

COMPREX on graph data: 

 

COMPREX on image data: 

 

4.3 Scalability

6 Conclusion

本文的研究成果有两方面:(1)通过挖掘子编码表,即模式集,实现了数据的快速表征;(2)将描述模式应用于分类数据的可靠性异常检测。
本文介绍了一种新颖的无参数方法COMPREX,该方法使用多个编码表,构建了一个数据压缩模型,并将编码代价高的数据点报告为异常数据。我们的方法证明对这两个任务都是有效的:它在较低的运行时间内提供了更高的压缩率,特别是对大型数据集,它能够有效地发现罕见的实例,其检测精度通常高于其最先进的竞争对手。在不同数据集上的实验表明,COMPREX成功地推广到广泛的数据集,包括图像、图表和具有分类和数字特征的关系数据库。最后, 本文的方法是可伸缩的,运行时间随数据库大小和维数的增加而线性增长。
未来的工作可以将方法推广到随时间变化的数据中,以检测随时间变化的异常,其中的挑战是高效地更新编码表,以有效地捕获趋势模式。

猜你喜欢

转载自blog.csdn.net/weixin_43563178/article/details/122858865
今日推荐