在数据分析中,异常检测是指识别那些显著偏离大多数数据、不符合明确定义的正常行为概念的稀有项目、事件或观测。此类示例可能引起怀疑,认为其由不同机制生成,或与数据集其余部分不一致。该概念也称为离群点检测,有时根据上下文和应用领域称为新颖性检测。
异常检测在众多领域都有应用,包括网络安全、医学、机器视觉、统计学、神经科学、执法和金融欺诈检测。历史上,最初寻找异常是为了将其从数据中明确剔除或省略,以辅助统计分析,如计算均值或标准差。它们也被移除以改进线性回归等模型的预测,而最近,移除它们有助于提升机器学习算法的性能。然而,在许多应用中,异常本身是主要关注点,是整个数据集中最希望被识别的观测,需要将其与噪声或无关离群点区分开来。
定义与术语
异常检测是指识别在特定环境中显著偏离预期正常行为的观测、事件或模式。没有一种普遍适用于所有领域的操作性定义,因为正常性的概念取决于数据、观测的表示方式、其发生的上下文以及检测方法所做的假设。
异常不一定是数据错误。根据应用,它可能代表测量或记录错误、生成数据的过程变化、一个不寻常但有效的观测,或诸如欺诈、设备故障或安全入侵等感兴趣的事件。异常也不仅由稀有性或与其他观测的距离来定义;不同方法使用概率分布、距离或局部密度、聚类成员关系、正常数据周围的边界、预测误差、重构误差或其他特定于模型的标准来表征正常性。
许多异常检测方法返回数值异常分数,而不是直接的分类标签。该分数表示观测偏离拟合的正常性模型的程度,并通过应用决策阈值转换为二元决策。因此,观测是否被标记为异常取决于正常性模型、可用上下文和所使用的决策规则。
异常类型
一种广泛使用的分类区分了三种异常类型。点异常是相对于数据其余部分被视为异常的单个观测,,例如,与数据集中其他交易相比异常大的交易。上下文异常,也称为条件异常,仅在特定上下文中才异常,,一个观测在一组情况下可能正常,但在另一组情况下异常,例如夏季正常但冬季不寻常的温度。上下文可以是时间、空间、人口统计或其他由应用定义的。集体异常是一组相关的观测,即使单个观测本身并不异常,但整体上异常,,例如,时间序列中的异常子序列或计算机网络中意外的活动模式。
适当的类别部分取决于数据的结构。点异常方法可能足以处理独立观测,而时间序列、空间数据、序列和图通常需要显式建模上下文或集体关系。
相关术语
术语异常、离群点和新颖性有时可互换使用,但其用法在统计学、机器学习、信号处理和个人应用领域之间有所不同。离群点通常表示与数据集中其他观测不一致的观测;离群点检测方法通常允许此类观测存在于用于拟合模型的数据中。在新颖性检测中,训练数据通常被假定代表正常行为,而先前未见过的测试观测则根据由此产生的正常性模型进行评估。因此,新颖性检测通常被表述为一种单类分类形式。这些区别在文献中并未一致应用,而更广泛的术语异常检测通常包含所有这些设置。
技术与类别
存在三大类异常检测技术。监督式异常检测技术要求数据集标记为“正常”和“异常”,并涉及训练分类器。然而,这种方法很少使用,因为标记数据通常不可用,且类别固有地不平衡。半监督异常检测技术假设部分数据被标记,,通常是正常数据,,并构建代表正常行为的模型,然后测试测试实例由该模型生成的可能性。无监督异常检测技术假设数据未标记,并且由于其更广泛和更相关的应用,是最常用的。
统计方法
统计方法使用概率分布对数据的正常行为进行建模。方法包括参数技术,如高斯混合模型,以及基于直方图或核密度估计的非参数技术。在拟合模型下概率较低的观测被标记为异常。这些方法通常假设观测之间独立:异常,使其在未经调整的情况下不太适合复杂结构化数据。
基于距离和基于密度的方法
基于距离的方法将观测表征为异常,如果它远离其最近邻居。基于密度的方法,如局部离群因子,将观测周围的局部密度与其邻居的密度进行比较;在显著较低密度区域的观测被标记。这些方法特别适用于识别具有变化密度的数据集中的点异常,并且不需要对数据分布进行先验假设。
基于聚类的方法
基于聚类的异常检测将数据分组为聚类,并将异常识别为不属于任何聚类、远离聚类质心或属于非常小聚类的点。k-means和DBSCAN等算法已被改编用于此目的。该方法直观且可能高效,但性能取决于所选聚类算法及其参数,并且构成异常聚类的定义因应用而异。
机器学习与深度学习方法
现代异常检测越来越依赖机器学习和深度学习技术。自编码器,一种神经网络,学习重构正常数据;高重构误差表示异常。单类支持向量机在高维特征空间中学习正常数据周围的边界。基于transformer架构和大型语言模型的方法也被探索用于检测序列数据(如日志或时间序列)中的异常,利用其建模长距离依赖和上下文模式的能力。
应用
网络安全
异常检测是入侵检测系统的基础组成部分。该概念随时间显著演变,最初是系统管理员手动监控异常活动的过程,例如休假用户的账户被访问或意外的打印机活动。到1970年代末和1980年代初,审计日志和系统日志的分析主要用于事件调查的事后分析,因为数据量使实时监控不切实际。数字存储的可负担性使得使用专门程序对审计日志进行在线分析成为可能,尽管由于计算强度,这些程序通常在非高峰时段运行。1990年代带来了能够实时分析审计数据的入侵检测系统,转向主动检测。现代系统将异常检测应用于网络流量、用户行为和端点活动,以识别零日攻击、内部威胁和其他恶意模式。
金融欺诈检测
在金融领域,异常检测识别欺诈交易,如信用卡欺诈、保险索赔滥用和洗钱。交易金额、频率或地理位置中的异常模式可能触发警报以供进一步调查。该领域受益于使用历史欺诈标签的监督方法和用于发现新型欺诈方案的无监督方法。
医学与医疗保健
医学应用包括检测异常生理信号、识别对治疗的意外反应以及标记MRI或CT扫描等医学图像中的异常。这些系统帮助临床医生将注意力集中在偏离既定规范的病例上,可能改善罕见疾病的诊断或设备故障的早期检测。
制造业与预测性维护
在工业环境中,异常检测监控设备的传感器读数,并在故障发生前预测故障。异常的振动模式、温度尖峰或声学信号可能指示即将发生的故障,使维护团队能够主动干预。这减少了制造业、航空和能源等行业的停机时间和维护成本。
挑战与局限性
异常检测面临几个持续的挑战。正常性的定义经常随时间变化,要求模型适应概念漂移。异常的稀有性使标记数据稀缺,限制了监督方法并使评估复杂化。不平衡数据集可能导致高误报率,这在网络安全等领域成本高昂,因为分析师必须对大量警报进行分类。此外,异常是上下文相关的,在独立点观测上表现良好的方法可能在没有显式上下文建模的情况下在结构化数据(如图或序列)上失败。
决策阈值的选择至关重要;降低阈值会增加检测率,但也会增加误报,而提高阈值可能错过细微异常。没有普遍接受的指标用于跨领域比较异常检测方法,因为误报和漏报的相对成本因应用而异。
与其他领域的关系
异常检测与人工智能和统计学的几个领域交叉。在生成式AI中,像transformer这样的模型可用于估计序列的可能性,为检测异常输入提供基础。MIT CSAIL和斯坦福AI实验室等机构的研究为理论基础和实用算法做出了贡献。亚马逊网络服务和谷歌云等公司在其云平台上提供异常检测服务,与机器学习管道集成。该领域还借鉴了时间序列分析、信号处理和稳健统计的工作,并为数据质量管理和系统监控实践提供信息。