异常检测是机器学习最常见的使用案例之一。寻找和识别异常值有助于防止欺诈、对手攻击和网络入侵,这些都会损害你公司的未来。
在这篇文章中,我们将谈论异常检测是如何工作的,你可以使用什么机器学习技术,以及用ML进行异常检测给企业带来什么好处。
什么是异常现象?
在谈及异常检测之前,我们需要了解什么是异常现象。
一般来说,异常是指与规范不同的东西:一个偏离,一个例外。在软件工程中,我们所理解的异常是指不符合模式的罕见发生或事件,因此,似乎很可疑。一些例子是:
- 活动的突然爆发或减少。
- 文本中的错误。
- 温度的突然快速下降或上升。
异常值的常见原因有:
- 数据预处理错误。
- 噪声。
- 欺诈。
- 攻击。
通常情况下,你想把它们都抓住;一个软件程序必须平稳地运行,并且是可预测的,所以每一个异常值都是对其稳健性和安全性的潜在威胁。捕捉和识别异常现象就是我们所说的异常或离群点检测。
例如,如果大笔资金在一天内接二连三地被消费,而且这不是你的典型行为,银行就可以封锁你的银行卡。他们会在你的日常交易中看到一个异常模式。这种异常情况通常可以与欺诈联系起来,因为身份窃贼试图趁机偷取尽可能多的钱。一旦发现异常情况,就需要进行调查,否则问题可能随之而来。
异常现象的类型
_(1).png)
现在让我们看看机器学习工程师通常要面对哪些类型的异常现象或异常值。
全局异常值
当一个数据点承担的数值远远超出数据集中所有其他数据点的数值范围时,就可以认为是一个全局异常值。换句话说,它是一个罕见的事件。
例如,如果你每个月收到美国人的平均工资到你的银行账户,但有一天得到一百万美元,这在银行的分析团队看来就是一个全球异常值。
_(1).png)
语境异常值
当一个离群点被称为上下文时,意味着它的值与我们期望在相同背景下观察到的类似数据点的值不一致。背景通常是时间性的,在不同时间观察到的相同情况可能不是离群值。
例如,对于商店来说,在节假日期间经历顾客的增加是很正常的。然而,如果突然的提升发生在假期或销售之外,它可以被认为是一个背景异常值。
_(1).png)
集体离群值
集体异常值由偏离正常行为的数据点子集表示。
一般来说,科技公司倾向于越做越大。有些公司可能会衰落,但这不是一个普遍的趋势。然而,如果许多公司在同一时期内同时显示出收入减少,我们可以识别出一个集体的异常点。
_(1).png)
为什么需要机器学习进行异常检测?
这是一个通常在统计和机器学习工具帮助下进行的过程。
原因是,今天大多数需要异常点检测的公司都是在处理大量的数据:交易、文本、图像和视频内容等。你必须花好几天的时间去研究银行内部每小时发生的所有转换,而且每秒钟都会产生越来越多的转换。要从这么多的数据中手动推动任何有意义的洞察力是根本不可能的。
此外,另一个困难是,数据往往是非结构化的,这意味着信息没有以任何特定的方式安排来进行数据分析。例如,商业文件、电子邮件或图像都是非结构化数据的例子。
为了能够收集、清理、结构化、分析和存储数据,你需要使用不惧怕大批量数据的工具。事实上,机器学习技术在涉及到大数据集时显示出最好的效果。机器学习算法能够处理大多数类型的数据。此外,你可以根据你的问题选择算法,甚至结合不同的技术来获得最佳结果。
用于现实世界应用的机器学习有助于简化异常检测的过程,节省资源。它不仅可以在事后发生,也可以在实时发生。实时异常检测被应用于提高安全性和稳健性,例如,在欺诈发现和网络安全方面。
什么是异常检测方法?
.png)
有不同种类的机器学习的异常检测方法。
有监督的
在有监督的异常检测中,一个ML工程师需要一个训练数据集。数据集中的项目被标记为两类:正常和不正常。该模型将使用这些例子来提取模式,并能够在以前未见过的数据中检测出异常模式。
在监督学习中,训练数据集的质量是非常重要的。由于需要有人收集和标记实例,所以涉及到大量的手工工作。
注意: 虽然你可以标记一些异常情况并试图对其进行分类(因此这是一项分类任务),但异常检测的基本目标是定义 "正常数据点 "而不是 "异常数据点"。因此,在现实世界的应用中,由于标记的异常样本非常少,它几乎从未被视为一项监督任务。
无监督的
这种类型的异常检测是最常见的类型,最著名的无监督算法的代表是神经网络。
人工神经网络允许减少预处理实例所需的人工工作量:不需要人工标注。神经网络甚至可以应用于非结构化数据。神经网络可以检测未标记数据中的异常情况,并在处理新数据时使用它们学到的东西。
这种方法的优点是,它可以减少异常检测中的人工工作。此外,很多时候,不可能预测数据集中可能出现的所有异常情况。例如,想想自动驾驶汽车。他们可能会在路上遇到以前从未发生过的情况。将所有的道路情况归入有限的类别是不可能的。这就是为什么神经网络在实时处理现实生活中的数据时是无价之宝。
然而,ANN的复杂程度几乎达到了火箭科学的水平。因此,在你尝试这些之前,你可能想尝试一下更传统的算法,如DBSCAN,特别是如果你的项目不是那么大。
此外,神经网络的架构是一个黑盒子。我们往往不知道神经网络会把哪类事件标记为异常,此外,它很容易学到错误的规则,而这些规则并不那么容易解决。这就是为什么无监督的异常检测技术往往比有监督的技术更不值得信任。
半监督的
半监督的异常检测方法结合了前两种方法的优点。工程师可以应用无监督学习方法来自动进行特征学习,并处理非结构化数据。然而,通过与人类监督相结合,他们有机会监测和控制模型学习什么样的模式。这通常有助于使模型的预测更加准确。
异常情况检测的机器学习算法
根据数据集的大小和问题的类型,多种机器学习算法可用于异常检测。
局部离群因子(LOF)
本地离群因子可能是最常见的异常检测技术。这种算法是基于局部密度的概念。它将一个物体的局部密度与相邻的数据点的密度进行比较。如果一个数据点的密度比它的邻居低,那么它就被认为是一个离群点。
K-最近的邻居
kNN是一种经常用于分类的监督性ML算法。当应用于异常检测问题时,kNN是一个有用的工具,因为它可以很容易地在散点图上将数据点可视化,使异常检测更加直观。kNN的另一个好处是,它在小型和大型数据集上都能很好地工作。
kNN不学习 "正常 "和 "异常 "值来解决分类问题,而是不进行任何实际学习。因此,当涉及到异常检测时,kNN作为一种无监督的学习算法工作。机器学习专家手动定义正常和异常值的范围,而算法自己将这一表述分解成类。
支持向量机
支持向量机(SVM)也是一种有监督的机器学习算法,经常用于分类。支持向量机使用多维空间中的超平面将数据点划分为类。超参数nu是离群值的阈值(百分比),你必须手动选择。
SVM通常在问题中涉及一个以上的类时被应用。然而,在异常检测中,它也被用于单类问题。该模型被训练来学习 "规范",并能识别陌生的数据是否属于这个类别或代表异常情况。
_(1).png)
DBSCAN
这是一种基于密度原则的无监督ML算法。DBSCAN能够通过观察数据点的局部密度来发现大型空间数据集中的集群,并且在用于异常检测时通常显示出良好的效果。不属于任何集群的点都有自己的类别。-1,因此它们很容易被识别。当数据由非离散数据点表示时,这种算法能很好地处理离群点。
自动编码器
这种算法是基于使用人工神经网络,通过将数据压缩到较低的维度进行编码。然后,人工神经网络对数据进行解码以重建原始输入。当我们降低维度时,我们不会失去必要的信息,因为规则已经在压缩后的数据中被识别。现在我们已经可以发现异常值了。
贝叶斯网络
贝叶斯网络使ML工程师即使在高维数据中也能发现异常情况。当我们要找的异常点比较微妙,比较难发现,在图上将其可视化可能不会产生预期的结果时,就会使用这种方法。
异常检测是用来做什么的?
现在让我们看看异常检测如何在实践中使用。
入侵检测
网络安全对于许多从事机密信息、知识产权、员工和客户的私人数据的公司来说是关键。入侵检测系统监测网络,检测和报告潜在的恶意流量。如果检测到可疑的活动,IDS软件会通知团队。一些例子是思科系统和McAfee的软件。
欺诈检测
使用机器学习的欺诈检测有助于防止旨在非法获得金钱或财产的活动。欺诈检测软件被银行、信贷组织和保险公司使用。例如,银行在做出决定前会检查贷款申请。如果系统检测到一些文件是欺诈性的,例如,你的税号不存在于系统中,它将通知银行雇主。
健康监测
异常检测系统在医疗保健方面有令人难以置信的帮助。他们帮助医生进行诊断,检测核磁共振成像和测试结果中的异常模式。通常情况下,在成千上万的例子中训练出来的神经网络被应用于此,有时它们给出的诊断比拥有20年经验的医生更准确。
缺陷检测
制造商向客户提供有缺陷的机制或机制细节,可能在诉讼中损失数百万。一个不符合生产标准的细节可能导致飞机坠毁,从而导致数百人死亡。
使用计算机视觉的异常检测系统可以检测出该细节是否有缺陷,即使在腰线上成千上万的其他类似细节中。此外,异常检测系统可以与机制连接,以监测内部系统,如发动机温度、燃料水平和其他参数。
结论
异常检测是识别数据中不符合正常模式的数据点。它可以用来解决许多问题,包括欺诈检测、医疗诊断等。机器学习方法可以使异常检测自动化,并使其更加有效,特别是在涉及大数据集的时候。异常检测中使用的一些常见ML方法包括LOF、自动编码器和贝叶斯网络。