十六、异常检测

简介: 十六、异常检测

1、异常检测(Anormly Detection)介绍



异常检测是指在给定的一组无标签数据集 {x(1),x(2),...,x(m)},针对这组数据集训练一个模型p(x),来判定某个数据和数据集中大多数数据之间的相似程度(某个数据落在给定数据集中心区域的概率),若某个数据xtest和大多数给定数据之间很相似,则  p(xtest)≥ϵ,说明数据无明显异常情况;否则  p(xtest)<ϵ,说明数据 xtest和大多数数据之间差异很大,说明给定的数据可能是一个异常数据。


4b4bd62965d24ef5b562a0648fe826e1.png

即若某个数据不落在大多数数据所在的范围之内,则这种数据出现的概率比较小,将检测出的这种数据视为异常数据。



2、异常检测算法



首先针对m个数据样本选择出 n个可能出现异常的特征  xj,j∈n;之后针对所有样本计算每一个特征的均值  μj,j∈n和方差  σj2,j∈n;针对新给定的某个数据 x计算 p(x),若p(x)<ϵ,则判定数据为异常数据。异常检测算法流程如下所示:

f6f935e5932a466988d462f42c785b17.png


二维特征的异常检测的直观表示如下所示:

067b4b9843c44ca3862cae66058fa5d3.png




3、评估异常检测算法


下面通过飞机引擎异常检测的例子来说明异常检测算法的评估方法:


9563250fa3a54053817af876b089c600.png


首先将原始数据划分为训练数据集,交叉验证数据集和测试数据集;将少部分的已知的异常数据划分到交叉验证数据集和测试数据集中,所以CV set和test set可以看做是拥有了标签的数据。

8c01cc30ca9f4b0c829dc97b0d5c62b6.png



之后根据2中介绍的高斯模型将选定的特征对训练数据集进行异常检测模型  p(x)的拟合;之后将拟合出的模型  p(x)针对CV set进行模型检测,这个检测类似于skewed data检测标准,之后根据计算出来的 F1值来判定模型的好坏,同时可以调整模型选定的特征种类和 ϵ值的大小。最终将训练好的模型使用测试集test set来验证模型的好坏。




3.1 使用异常检测还是使用监督学习


通常当异常样本数量很少(e.g., 0-20),但是正常样本数量很多时,适合使用异常检测;同时当不能确定异常出现的特征时,通常使用异常检测,如零部件异常检测,数据中心计算机监督;而当正常样本和异常样本数量均很多时,样本中包含充分的异常样本信息,则适合使用监督学习,如垃圾邮件检测,天气预测,疾病检测等。




4、处理异常检测的特征向量



要使用gaussian分布来拟合异常检测模型,需要保证特征向量的数据分布满足近似高斯分布,若初始数据的特征向量不满足高斯分布,需要对数据进行变换处理,使其近似满足高斯分布,从而使算法达到更好的效果。处理方式可以取对数,取  α∈(0,1)次方等。


选择特征的方法,是可以首先选取一些特征,针对训练数据训练出一个异常检测模型,之后将模型在交叉验证数据集上进行验证,通过验证效果来增加或者减少特征数量。同时,通常选取那些在异常点取值较大或者较小的特征。




5、多元(multivariate)高斯分布



假如有n维特征向量 x∈Rn,多元高斯分布并非将每一维特征向量进行分别拟合  p(x1)和 p(x2),而是将所有的特征向量拟合成一个概率函数 p(x)。集合形式的高斯异常检测模型需要使用参数  μ∈Rn, Σ∈R(n∗n)(协方差矩阵),则

image.png

几种多元高斯分布的图像随着  μ和 Σ的变化情况如下所示:


c6963b6574234346bb04ee8ba0cc3a03.png

e531561133484faf826898dd59e41573.png


7b282b2b57634f96875e03f5e85924ff.png


6b6548e1f1c24861ad5c32644f51ab1e.png



5.1 利用多元高斯分布开发异常检测模型


给定训练集 x(1),x(2),...,x(m),利用多元高斯分布构建异常检测模型的方法如下所示:


6ffbdba157c94bcda2559f17daeac518.png



5.2 原始模型和多元高斯分布模型的区别


将多元高斯分布模型的协方差矩阵除对角线元素外的其他元素均设置为0之后,多元高斯模型即为原模型。


b4d19fc10fce40ccb6813e0c97cfcb7f.png



5.3 选择使用原始模型 / 多元高斯模型


原始模型需要手动选择某些特征之间的组合值异常,但多元高斯模型可以自动捕捉特征之间的相互关系;原始模型相对于多元高斯模型计算效率更高;多元高斯模型必须满足训练数据数量  m大于特征数量  n,这样才能协方差矩阵 Σ才是可逆的。


020b5f28747f434790830a4923c65b98.png

协方差矩阵在以下两种情况下回出现不可逆的情况:若训练集中训练数据的数量少于特征数量;若特征之间有线性相关性,即有冗余特征存在。









相关文章
|
6月前
|
运维 安全 数据挖掘
【数据挖掘】离群点概念、类型、检测的挑战概述(图文解释 超详细)
【数据挖掘】离群点概念、类型、检测的挑战概述(图文解释 超详细)
414 0
|
运维 监控 算法
优化电脑屏幕监控软件:关联规则挖掘算法的引入
在如今的职场中,电脑屏幕监控软件已经成为了许多企业的标配,用于监测员工的工作行为以提高生产力和安全性。然而,为了让监控软件发挥最大的效用,关联规则挖掘算法正在崭露头角。接下来就让我们通过以下方面来看看如何通过关联规则挖掘算法提高电脑屏幕监控软件的监视效率——
178 0
|
5月前
|
机器学习/深度学习 存储 编解码
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计(2)
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计
|
5月前
|
机器学习/深度学习 算法 计算机视觉
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计(3)
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计
|
5月前
|
机器学习/深度学习 存储 算法
深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数(2)
深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数
|
5月前
|
机器学习/深度学习 计算机视觉 Python
深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数(3)
深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数
|
5月前
|
机器学习/深度学习 监控 算法
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计(1)
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计
|
5月前
|
机器学习/深度学习 编解码 监控
深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数(1)
深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数
|
6月前
时间序列分析实战(十一):ECM误差修正模型
时间序列分析实战(十一):ECM误差修正模型
|
6月前
|
机器学习/深度学习 人工智能 运维
人工智能平台PAI 操作报错合集之请问Alink的算法中的序列异常检测组件,是对数据进行分组后分别在每个组中执行异常检测,而不是将数据看作时序数据进行异常检测吧
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。