读书笔记《Outlier Analysis》 第七章 有监督的异常检测

1. 引言

监督异常检测的目标是赋予学习方法特定于应用程序的知识,以获得与应用程序相关的异常。这一知识往往包括此类相关异常的例子,尽管其他类型的监督也是可能的。由于异常的罕见性质,这种例子往往是有限的。这给创建健壮模型带来了挑战。然而,即使有少量的数据可供监督,它的纳入通常会显著提高异常检测的准确性。关于异常分析的一般建议是在可能的情况下始终使用监督。

1.训练数据的特征(属性)问题

异常检测与分类问题的区别,主要是有以下几个具有挑战性的特征,这些特征有可能是孤立的,也有可能是组合的:

1、类不平衡:

由于异常值被定义为数据中的罕见实例,正常类和罕见类之间的分布将非常倾斜是很自然的。还有一个问题是假阳性(实际上是负的,被预测为正的)和假阴性(实际上是正的,预测为负的)的问题。通常情况下,假阳性比假阴性更容易接受。这导致了分类问题的成本敏感变化,其中分类的自然优化函数(即精度)被更改为成本敏感精度。

2、被污染的正常类例子(阳性-未标记类问题):只有正类数据被标记为正,其他数据没有被标记。

在许多实际场景中,只有阳性类被标记,其余的“正常”数据包含一些异常。因此,这些正常的类被污染了。“正常类”也可以被认为是一个未标记的类。 然而,在实践中,未标记类主要是正常类,其中的异常可能被视为污染物。

3、部分训练信息(半监督或新颖类检测):训练数据不完整,可能异常类(负的)不完整;或只有正类数据,而无负类数据。

在许多应用程序中,一个或多个异常类的示例可能不可用。 例如,在入侵检测应用程序中,当新类型的入侵随着时间的推移而出现时,可能会有普通类和一些入侵类的示例。 在某些情况下,一个或多个普通类的示例是可用的。 一个特别常见的研究案例是一类变化one-class variation,其中只有正常类的例子是可用的。 这种特殊的情况,在这种情况下,训练数据只包含正常类,更接近无监督版本的异常值检测问题。 除了适当区分训练和测试数据外,不需要对现有算法进行更改。

有些实际问题是以上三种情况的组合,它们的界限往往是模糊的。本章的目标是阐明分类方法所需要的修改,以解决这些不同的情况。

1.2 异常检测中特征工程问题

所有的分类问题,包括罕见的类问题,都严重依赖于用于学习过程的特征表示。例如,核方法经常用来通过隐士变换使非线性变换为线性可分。然而,在特征工程中,这种转换是在理解手头问题的域特性的情况下显式执行的。罕见类的学习就是这样一个领域,其中异常检测算法的输出可以作为工程特征来进行更有效的学习。因此,将探索使用无监督异常检测算法进行监督问题中特征工程。

1.3 主动学习:用于解决训练数据的缺乏问题

当类别不平衡时,训练数据的缺乏是一个常见的问题,即使在一个适度的大型训练数据中,也可能只有少数罕见的实例可用,这可能导致不良结果。为了解决这一问题,主动学习被用来以引导的方式标记训练实例。

1.4 回归模型用于异常检测

本章大部分内容将集中在ground-truth可用(监督)的情况下。但是也会研究无监督异常检测和监督回归建模之间的联系。

最近的研究表明,可以使用现成的回归模型的反复应用来进行无监督异常检测。其基本思想是使用回归建模从剩余的属性中预测每个属性,然后结合这些模型的错误来创建异常值分数。

回归建模的特点是,它为使用数百个现成的回归模型来进行有效的无监督异常检测打开了大门。

 

2.完全监督:稀有类别的检测

2.1 基本介绍

罕见类检测类不平衡问题是监督异常检测中常见的问题。

很多时候需要做到“宁可错杀一千(正常的),不可漏掉一个(异常的)”:即如果测试实例中有将近一半都是异常的,可以以牺牲正常类上的精度为代价来提高异常类的分类精度。

在实际问题中,这往往是很有用的。例如,对欺诈性交易的错误分类(可能导致数百万的损失)比对正常交易的错误分类(这回给最终用户带来不正确的警告)更昂贵。再如,在医疗检测中,将一个有病的病例诊断为无病的代价,比将无病的病例诊断为有病的病例的代价,往往前者的代价大得多。

所以,在实际问题中,往往错误分类异常实例的成本高得多。

有两种主要类型的算法解决这种类平衡设置问题:

1、成本敏感型学习:

对分类算法的目标函数进行了修正,以便对政策类和稀有类以差分方式加权分类误差。

典型的假设是,一个罕见的类的错误分类会导致更高的成本。在许多情况下,目标函数的这种变化只需要对现有分类模型进行微小的更改。

2、自适应重采样:

数据重新采样,以放大稀有类的相对比例。这种方法可以被认为是成本敏感型学习的一种间接形式。因为数据重新采样相当于隐含地假设罕见类错误分类的更高成本。毕竟,样本中特定类的相对数量较大的实例(相对于原始数据)的存在往往会使预测算法偏向于该类。

 

2.2 成本敏感型学习

在成本敏感型学习中,目标是学习一个分类器,使不同类的加权精度最大化。在这种模型中,成本不仅取决于错误分类实例的类标签,而且还取决于错误分类的特定类标签。在本章中,我们考虑了一个更简单的模型,其中错误分类成本仅取决于来源实例所属的类。目标类与成本无关,这样的简化模型更适合于罕见类的检测问题。因此,分类器的目标是学习一种最小化加权分类率的训练模型。

2.2.1 元成本:一种重新标记方法

一个被称为元成本Meta的通用框架,使用重新标记方法进行分类。这是一个元算法,它可以绕过任何现有的分类算法。在这种方法中,其思想是使用成本重新标记数据中的一些训练数据,从而将具有合理概率分类到稀有类的正常训练实例重新标记到该稀有类(使更多的正常类更大概率分类到稀有类中)。当然,罕见的类也可能被重新标记为普通类,但基于成本的方法旨在降低这种可能性。随后,在这个更平衡的训练数据集上使用分类器。其思想是,使用成本,以便以成本敏感的方式移动决策边界,从而使正常实例比罕见实例具有更大的错误分类机会,并将预期的错误分类成本最小化。

 

也可以使用分类概率的软估计。元成本的有效性取决于重新标记的概率估计的质量

当然,如果首先从训练模型中直接获得良好的概率估计,那么可以使用预期的错误分类成本直接预测测试实例,而不是使用通过重新标记视图“纠正”训练数据的间接方法。这就是加权方法背后的思想。

 

2.2.2 加权方法

大多数分类算法都可以通过自然的方式进行修改,以核算成本。这些修改背后的主要驱动力是隐式地处理每个训练实例的权重,其中实例的权重对应于其错误分类成本

贝叶斯分类器

贝叶斯分类器的修改为成本敏感型学习提供了最简单的情况。在这种情况下,改变示例的权重只会改变类的先验概率,贝叶斯估计中的所有其他项都保持不变。

基于邻近的分类器

在具有二进制类的最近邻分类器中,测试实例的分类标签被定义为来自其k个最近邻的多数类。因为加权,测试实例可以被归类为异常,即使在其邻近域中存在较少的罕见实例。

基于规则的分类器

许多基于规则的分类器利用支持support和置信度confidence参数的关联规则挖掘。规则将数据中的条件(例如,数字属性上的范围)与类标签关联起来。条件发生在规则的左侧,而类标签发生在规则的右侧。

决策树

在决策树中,对训练数据进行递归分区,使不同类的实例在树的较低级别依次分离出来。分区是通过对数据中的一个或多个特征使用条件来执行的。

支持向量机

支持向量机分类器通过学习超平面来优化地分离这两个类,以最小化精心定义的惩罚函数。

这种惩罚函数训练数据点,因为它们位于决策边界的错误一侧,甚至接近决策边界(在正确的而一侧)。

支持向量机分类器可以被建模为一个优化问题,其中的目标是学习底层超平面的系数,以便优化这两个目标的加权组合。

2.3 自适应重采样

值得注意的是,大多数加权方法只是增加稀有类的权重,以便将分类过程偏向于正确分类稀有类实例。在自适应重采样中,通过对训练数据进行差分采样,以利于稀有类,实现了增加稀有类影响的类似目标。

取样可以在更换或不更换的情况下进行。要么罕见类可以过采样(oversampled, 将将罕见类的数量增加到和正常类数量一样多),要么正常类可以下采样(under-sampled,将正常类的数量减少到和罕见类一样),要么两种类型的采样都可以同时进行。在重新采样的数据上学习分类模型。

当采用下采样时,采样的训练数据比原始数据少得多。普遍认为,下采样比过采样有许多优点。下采样也成为片面选择。

下采样的优点:

较小的训练数据集的模型构建阶段需要的时间要少得多。

对于建模目的来说,正常类不那么重要,并且大多数罕见的类都包含在建模中。 因此,丢弃的实例不会从建模的有效性中带走太多。

由于效率的提高,人们可以绘制多个子样本并对预测进行平均,以创建一个更健壮的集成模型。

2.3.1 自适应重采样与加权的关系

由于成本敏感的学习在逻辑上可以被理解为以不同的方式加权不同类的示例的方法,因此出现了一个问题,即这些方法是如何相互关联的。 自适应重采样方法可以理解为按照数据权重的比例采样数据,然后平等对待所有示例的方法。

直接基于权重的技术保留了更多关于数据的信息。

另一方面,自适应再采样具有明显的效率优势,因为它与更小的数据集一起工作。

2.3.2 合成过采样:SMOTE

少数类过采样的问题之一是,大量的替换样本导致相同数据点的重复样本。 这可能导致过度拟合和恶化的偏置中心效应的准确性。可以使用合成过采样来创建过采样的示例,以提供更好的准确性。

SMOTE方法的工作原理如下。 对于每个少数实例,找到其k个最近的邻居。 然后,根据所需的过采样水平,随机选择其中的一小部分。 在连接该少数示例与其最近邻居的线段上生成一个合成数据示例。 示例的精确位置沿线段随机均匀选择。 除了对稀有类进行过采样外,SMOTE算法还对少数类进行了下采样

2.4 提升算法Boosting Methods

在分类中通常使用Boosting 方法,以提高数据的困难实例的分类性能。 众所周知的Adaboost算法通过将每个训练示例与在每次迭代中更新的权重相关联来工作,这取决于其在上一次迭代中预测的准确性。 未分类的实例被赋予更大的权重。 其思想是更加重视可能位于分类过程的决策边界附近的“困难”实例。 总体分类结果是作为不同回合的结果的组合计算的。 其基本思想是,分类器由于这个决策边界的形状不正确而产生偏差。 通过将多个训练模型对偏置数据集的预测相结合,可以正确地近似决策边界的形状。 换句话说,在一组有偏差的数据集上的结果的组合被用来纠正特定模型中固有的偏差。

提升(boosting)方法是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

3.半监督:正类数据和未标记数据

在很多情况下,采集负类样本非常困难。尤其是收集具有代表性的负类数据非常艰难。

 

4.半监督:部分观察类 (观察到的部分类,可能是正常数据,也可能是异常的)

数据可能包含一个正常来和几个异常类。在这种情况下,可能会出现一些有趣的设置,其中一些类被观察到,而另一些类则没有观察到。

缺少类的各种场景:

1、当数据过于多样或受到污染时,很难获得正常数据的干净样本。在这种情况下,可以观察到异常类,但正常类可能丢失。

2、有时候收集正常例子很容易,但是如果异常情况从未发生,则难以收集到异常类的数据。

3、如在入侵检测中,可能有许多正常数据和以前的入侵的异常数据,但是随着时间的推移,可能出现新的入侵异常数据。

这个问题的这些版本是真正的半监督的,因为训练数据是关于数据的某些部分而不是其他部分的。

正类数据和未标记的数据的情况要简单,因为未标记的数据可以近似为负类。因此,最好结合监督和无监督技术来解决这些问题。

异常类可用的例子,与仅正常类可用的例子非常不同,前者是尽可能与训练数据相似的点,而后者,异常值是尽可能与训练数据不同的点。

在只有正常类的例子可用的情况下,与无监督异常检测的区别是最小的。

无监督异常检测与一类新颖性检测之间的区别是,新颖性检测通常用于训练数据中只有正类的数据,异常数据从未出现。

4.1 一类学习与异常的例子

在大多数情况下,异常类丢失了,正常类的大多数实例可用。

在这种情况下,可以在与正类对应的数据子集上构造无监督模型。主要的区别是,数据与正类的更高拟合对应于更大的异常值分数。这是通常在异常检测中执行的反向操作。假设具有代表性的数据只包含异常,因此异常值更有可能与此数据相似。基于邻近的异常检测方法在一类场景中是非常自然的构造,因为测试实例属于类的倾向可以自然地使用距离来建模。

另一种方法是使用一类支持向量机。前面讲的使用一类支持向量机是假设只有一类正类的数据,而无异常数据。这里是要求只有异常数据,而无正常数据。

4.2 一类学习与正常的例子

在大多数情况下是只有正常数据可用,没有观察到罕见的类。这种情况与无监督的异常检测没有什么区别。所以,任何用于异常检测的无监督模型都可以用在这种情况中。

通常,在无监督中,训练和测试数据并没有相互区分,而在半监督中,训练数据和测试数据相互区分。

几乎所有无监督的异常检测方法都试图对数据的正常行为进行建模,并且可以用于新的类检测,特别是当训练数据中唯一的类是正常类时。

4.3 使用标记类的子集进行学习

有一个更具有挑战的场景,即当训练数据中有标记的罕见类时,但是新的罕见类会随着时间不断出现新的罕见类。如入侵检测中,可能会有新的入侵方式,这种情况下,仅可以获得部分异常类的只是,其他情况需要以无监督的方式建模。

对于给定的测试点,需要按以下顺序做出两个关键决策:

1、测试点是否自然适合训练数据的模型? 该模型还包括当前发生的罕见类。 因此,可以使用各种无监督模型,如聚类。 如果没有,它立即被标记为离群点或新颖性

2、如果测试点适合训练数据,则使用分类器模型来确定它是否属于稀有类之一。 任何成本敏感模型(或它们的集合)都可以用于此目的。

 

因此,该模型需要结合无监督和监督的方法来识别异常值。

有些场景是根据时间流来检测异常的,比如入侵检测。在这种情况下,新的类可能出现在数据流种的任何一个点上,并且可能需要区分到新的类种。此外,新的类可能随着时间推移而复发。

5.监督方法中的无监督特征工程

特征工程是为特定模型选择数据集的最佳表示的问题。

提取更方便的表示通常可以克服模型固有的表示限制。

在罕见类种,什么是合理的特征表示?哪些类型的特征最有可能强调罕见类和正常类的区别?在这里,无监督异常检测方法可以发挥重要作用,因为不同的无监督方法是为了强调数据集的典型罕见特性而设计的。由于不同的异常检测算法强调不同类型的稀有特征(可能适合不同的数据集),因此可以使用多个异常加内存算法提取不同的特征。这些特征可以替换或添加到原始数据表示中。

为了提取不同的特征,可以使用不同模型的异常值分数相同异常模型的不同参数设置,或者在不同的特征袋上执行相同的模型。例如,从LOF中提取的特征对于包含许多局部离群点的数据集是有用的,而从k近邻方法中提取的特征对于包含许多全局离群点的数据集是有用的。 偶然性在提取有用的特征方面也起着一定的作用。 例如,来自采样特征包的分数对于特定的数据集可能非常有效,尽管在能够采样正确的包方面有一些运气因素。

请注意,这种方法导致了罕见类学习问题的特征表示中的显著冗余。 这是特别正确的,因为许多离群点检测模型是相似的,可能导致高度相关的特征。 然而,可以使用任意数量的监督特征选择正则化方法来最小化冗余特征的影响。

值得注意的是,特征工程方法可以是监督的,也可以是无监督的。

6. 主动学习

主动学习大致思路
    通过机器学习的方法获取到那些比较“难”分类的样本数据或是容易被错分的数据,让人工再次审核和确认,然后将人工标注得到的数据再次使用有监督的学习模型或者半监督学习模型进行训练,逐步提升模型的效果,将人工经验融入机器学习的模型中。

7. 无监督异常检测的监督模型

无监督异常检测的监督模型,主要是使用现成的分类回归模型重复应用来进行无监督的异常检测。

第三章介绍了可以使用线性回归模型来预测来自其他属性的数据中的特定属性的错误。这种模型在上下文环境中非常有用,比如时间序列数据,其中上下文属性和行为属性之间有明确的区别。有实验证明,这种线性回归模型也可以用在多维数据中的无监督异常检测中。

基本思想是通过选择第 K 个属性作为因变量,其他属性作为自变量,即用其余的这些属性预测第K个属性,反复使用回归模型。这种方法也成为属性学习,可用于评分异常值ALSO。

 

7.1 基于主成分分析的方法的连接

如上图所示,图a显式了PCA方向的回归误差,图b显式了属性方向(线性)上的回归误差。

图c比较特殊,其分布不能用PCA或因变量建模来建模,因为异常值A暴露在不同的旋转子空间中,而异常值B没有。如果使用随机森林作为基本回归方法,那么这些异常值也会被暴露,因为随机森林能够对这种复杂的非线性分布进行建模。将单个无监督问题分解为多个监督问题,也具有允许每个子问题中最相关类型的特征选择的优点。原则上,使用谱核方法时,这种异常值也能用非线性PCA暴露。

 

7.2 高维数据的分组预测

这种方法是以集成为中心的。对于像文本这样的非常高维的数据域,沿着r维潜向量中的每一个来预测比单个单词频率更有意义。这种方法也被称为GASP(分组属性选择和预测)。ALSO和Mahalanobis方法都是GASP技术的特例。

7.3 适用于混合属性的数据集

大多数回归模型都可以非常容易地应用到混合属性的情况中。此外,在预测属性是分类的情况下,可以使用分类器而不是回归模型。

7.4 合并列式知识

监督方法在我们正在寻找特定类型异常的情况中特别有用,并且已知某些属性对于异常检测比其他属性更重要。

例如,在预测欺诈交易的无监督的应用中,交易的金额大小比年龄和性别等其他属性更有用。在这种情况下,可以仅将预测过程限制在作为目标的相关属性子集上,尽管所有属性都可以用于预测目标属性。

从某种意义上讲,我们能够用这个过程正确地区分主属性和次要属性。这种方法还用于上下文数据类型中的异常检测,例如时间序列数据,其中行为属性(例如温度)的预测比上下文属性(例如时间)更重要。

7.5 其他具有合成异常值的分类方法

使用监督方法的一种相关方法是为异常值生成合成数据,并为所提供的数据集视为正常类。这将创建一个有监督的情况,因为现在可以使用任何现成的分类器来处理这两类问题。然而,这种方法不太可取,因为可能会从合成数据中引入偏差。

异常值通常是由底层系统种特定类型的异常引起的,并且它们通常被聚集成小的组。因此,使用随机分布的数据作为异常值可能会导致某些类型的数据集的差性能。

8.总结

本章讨论了监督异常分析的问题。对于训练数据可用时,可以使用这些数据以大大提高异常检测过程的有效性。许多现成的分类算法可以通过小的修改来适应这个问题。最常见的修改是通过采样和加权来解决这种类不平衡问题。

对于部分监督变化问题。其中没有在普通类别数据上提供任何标签,即正常类受到未知数量的异常值示例的污染;有些情况下,科恩那个没有正常类的示例等情况。在这些情况下,需要将无监督和监督方法结合起来。对于只有单个正常类的情况下,和无监督问题差不多。

在主动学习方法中,人类专家可能会进行干预,以便为孤立点检测过程增加更多的知识。 这种自动过滤与人类互动的组合可以提供有洞察力的结果。 人类干预的使用有时会提供更有洞察力的结果,因为人类参与了标签获取和最终离群点检测的整个过程。

监督方法还可以通过将异常检测问题分解为一组回归建模问题,用于无监督异常检测。这是通过将数据中的每个维度设置为预测变量和其他维度作为预测变量来实现的。对这些不同模型的预测误差的加权平均值被用来量化异常值分数。

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
localoutlierfactor(局部离群因子)是一种常用的异常数据检测方法。其基本思想是判断一个数据点是否为异常点,需要考虑其周围邻居点的密度和分布情况。 对于给定的数据集,localoutlierfactor方法首先计算出每个数据点的局部密度,即该点周围邻居点的密度,通过设定邻居点的个数K来确定。如果一个数据点的K个邻居点很近,说明它处在一个高密度的区域,那么该点的局部密度就会较高;相反,如果这些邻居点离得较远,说明它处在一个低密度的区域,那么该点的局部密度就会较低。 接着,对于每个数据点,计算出其与邻居点相对密度的比例,即局部离群因子(LOF)。如果一个数据点的LOF值大于1,说明该点周围的邻居点的密度比它自身密度更低,即该点是异常点;相反,如果LOF值小于1,则说明该点周围的邻居点的密度比它自身密度更高,即该点是正常点。 通过计算数据集中每个点的LOF值,localoutlierfactor方法能够有效地识别出异常数据点。与传统的基于距离或数值的异常检测方法相比,localoutlierfactor可以更好地适应不同数据分布的情况,并且在处理高维数据和大规模数据时也具有较好的效果。 总之,localoutlierfactor是一种基于密度的异常数据检测方法,通过考虑数据点的局部密度和分布情况,判断数据点是否为异常点,具有较好的鲁棒性和适应性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值