Supervised Learning 在以上关于评价异常检测系统的时候,我们尝试使用了 带标签的数据 来评价一个异常检测系统的好坏,既然我们有 带标签的数据 为什么不直接使用监督学习的方法来做异常检测呢 ,足够用于训练算法,未来遇到的异常实例与训练集中的异常实例会非常近似未来遇到的异常可能与只掌握的异常非常的不同 例如例如1.欺诈行为检测1.邮件过滤器2.生产质量评估2.天气预报3.检测数据中心的计算机的运行状况 选择合适的特征 Choosing what features to use 对于异常检测算法,使用的特征至关重要, 异常检测假设特征符合高斯分布 ,如果数据的分布不是高斯分布,异常检测算法也能够工作, 所以在实现异常检测系统之前,往往用直方图表示数据或者直接画出数据的分布,以确保这些数据在进入异常检测算法前看上去比较接近于高斯分布,如下图中(1)所示 ? CPU 负载 特征 4. 网络流量 以上特征为机房中对计算机工作状态进行异常检测的算法,通过识别 CPU 负载和网络流量的变化可以判断计算机是否发生异常。
什么是异常检测 异常检测是对罕见事件、项目或关注事件的识别,因为它们与大多数处理数据的特征不同。异常,也称为异常值,可以代表安全错误、结构缺陷,甚至银行欺诈或医疗问题。异常检测主要有三种形式。 第一种异常检测是无监督异常检测。该技术通过将数据点相互比较、为数据建立基线“正常”轮廓并寻找点之间的差异来检测未标记数据集中的异常。 相比之下,监督异常检测需要使用特定的“正常”和“异常”标签来训练数据集。最后,半监督异常检测技术要求分类器在“正常”数据集上进行训练以建立预设,然后分析预期数据以检测异常。 image.png 异常检测技术 有许多流行的异常检测技术。 异常检测的另一种形式的示例称为聚类分析。 聚类分析是分析活动爆发数据的技术,而不是特定的稀有对象。 异常检测的应用 异常检测用于欺诈和入侵检测、系统健康监测和生态系统干扰监测等应用。 例如,在欺诈检测中,银行可以分析一系列交易数据来监控和检测可能的欺诈实例。
为了评估 GPT-4V 在通用异常检测中的性能,来自华中科技大学、密歇根大学和多伦多大学的研究者联合进行了一项研究,在涉及 4 个数据模态,9 个异常检测任务的 15 个异常检测数据集上对 GPT-4V 除此以外,GPT-4V 在异常检测任务中还具有以下特点: GPT-4V 能够在零 / 单样本下处理多模态、多领域的异常检测任务 多模态异常检测:GPT-4V 可有效处理多种模态数据的异常检测任务。 GPT-4V 可以通过增加提示进一步增强异常检测能力 评估结果显示,提供更多文本和图像信息对 GPT-4V 的异常检测性能有积极影响。 我们研究了 GPT-4V 在时序检测中的应用,测试了其在分析和检测时间序列异常方面的能力。 我们展示了 GPT-4V 在时序检测中的性能,包括检测传感器数据中的异常、金融交易数据中的异常等。 结论 GPT-4V 在工业图像异常检测、工业图像异常定位、点云异常检测、逻辑异常检测、医学图像异常检测、交通检测、行人检测和时序检测等领域都展示出了出色的潜力。
内容简介 本文主要介绍两篇用AutoML来做异常检测的文章,《PyODDS: An End-to-end Outlier Detection System with Automated Machine 搜索空间 除网络结构外,AutoOD还新增了异常定义空间和损失函数空间。 image.png image.png image.png 异常定义空间 image.png 2.
异常值 异常值(outlier)是指一组测定值中与平均值的偏差超过两倍标准差的测定值,与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值。 异常值处理一般分为以下几个步骤:异常值检测、异常值筛选、异常值处理。 环境 jupyter notebook 实战演练 现在老板给了我有个任务,说 ? False 读取数据 data = pd.read_csv('C0911.csv', header=0) # C0911.csv, C0904.csv x = data['H2O'].values 异常检测 说明ptp()函数 ptp()是计算最大值与最小值差的函数 >>> x = np.arange(4).reshape((2,2)) >>> x array([[0, 1], [2, 3]] plt.grid(b=True, ls=':', color='#404040') plt.tight_layout(1.5, rect=(0, 0, 1, 0.95)) plt.suptitle('排污数据的异常值检测与校正
深度学习实现异常检测时常用重构的方法,但是过程中会隐含地学习到对检测不利的内容,OCGAN 尝试克服该问题。 当前的方法认为latent representation包含这in-class样本的信息,从而对于in-class样本,其reconstruction的效果好而out-of-class样本的则差,进而能达到检测异常的目的 arxiv.org/pdf/1903.08550.pdf 问题复现 对于传统的 AE 模型,以手写数字辨识为例,对于简单的数字(如0,1),模型可以获得很高的准确率;但对于较为复杂的数字(如8),其检测的准确率会有所折扣 OCGAN由4部分组成: 1个denoising auto-encoder 2个discriminators 1个classifier Denoising auto-encoder 与普通的 auto-encoder
本文记录异常检测23年性能最佳的工作 DDAD 的原理以及官方源码解析。 简介 DDAD 是 2024 年以前 MVTec AD 数据集上性能最好的异常检测模型,本文解读相关论文并对源码进行解读 论文解读 基本信息 项目 内容 备注 方法名称 DDAD 论文题目 Anomaly 在异常检测推断流程中, 重构的目标图像会被设置为输入图像 x, 目的是基于 x 生成一幅没有缺陷的重构图 x_0, 之后比对 x_0 和 x 之间的差异判断是否存在异常. 最后将二者归一化加权叠加在一起得到异常分数: D_{anomaly}=\left(v\frac{\max(D_f)}{\max(D_p)}\right)D_p+D_f, 其中 域适应性 按照算法的完备性至此已经可以完成异常检测工作了 DDAD 实现异常检测需要分两阶段训练 训练去噪 Unet FineTune 特征提取器 推断时需要加载训练好的 Unet 和特征提取器 Unet 构建 Unet 模型的函数为 main.py ->
Anomaly Detection 异常值检测想要做的任务是从数据中找出与其他数据显著不同的数据,其具体应用有如:信用卡盗卡检测、网络攻击检测、癌细胞检测等。 2. 异常值检测能不能看做一个二分类任务来建模?通常来说,异常值不能被看做为一个类别,因为异常值的种类实在是太多了。 所以异常值检测很难直接被看做二分类任务。 3. 有Label数据的异常值检测 有Label数据如何做异常值检测呢? 异常值检测任务: 收集训练集,训练集全部为正常值 训练分类模型 收集验证集,验证集中含着异常值样本 利用AUC等来衡量异常检测效果 4. 无Label数据的异常值检测 4.1 Likelihood 无Label数据的异常值检测思想和朴素贝叶斯相似,使用最大似然估计。我们可以假设各个特征的取值概率分布为高斯分布: ?
本文介绍 2023 年一篇异常检测中基于扩散模型实现异常检测的工作 —— DiffusionAD。 99.7% Segmentation AU-ROC 98.7% Segmentation AU-PRO 95.7% FPS 23.5 核心思想 用扩散模型作为数据重构子模块,结合一个分割网络用于异常检测 Loss 同时应用,以减少对异常值的过度敏感并准确分割困难异常样本。 将扩散模型与分割网络一起训练: $$ \mathcal{L}_{total}=\mathcal{L}_{noise}+\mathcal{L}_{mask}. $$ 异常生成 上述过程中需要大量带异常的数据才可以训练起来 ,论文中使用了人工制造异常的方式实现。
本文记录一篇生成异常数据用于自监督学习的异常检测工作 —— MemSeg。 一系列的操作将不同尺度信息充分融合又不冗余,实现检测及定位。 论文框架 上图为 MemSeg 整体架构,主要由 异常模拟、记忆模块和空间注意力组成。 异常模拟 监督学习分割网络关键在于生成异常数据,使用惯用套路,生成 mask,将其他图像叠加在 Mask 上,按照透明度融合在一起: I_n’=\delta\left(M\odot I_n\right 后经多尺度特征融合块,经U-Net跳跃连接(这里可以将一些模拟的可分性不强的异常特征去除,保证模拟的真实性。)进入解码器。 为什么不直接使用CI输入到空间注意模块进行计算呢? 推断 直接端到端从输入图像到异常得分结果前向传播即可。
本文介绍异常检测 2023 年一篇优秀工作 —— SimpleNet。 但是异常样本的数量往往不足以支持训练,不同于其他文章生成异常图像,本文在特征空间中的正常样本上添加简单的噪声生成异常特征(文章声明该方法优于其他手工方法)。 ,直接输出 (h,w) 位置的正常水平,正常与添加过异常扰动的人工异常特征共同训练,相当于训练分类网络。 ,异常分数直接由一系列前向推导得到: $$ s_{h,w}^i=-D(q^i_{h,w}) $$ 推理过程中异常定位的异常图定义为: $$ S_{AL}(x_{i}):=\{s_{h,w}^{i}| 同时图像级异常检测结果的得分: S_{AD}(x_i):=\max_{(h,w)\in W_0\times H_0}s_{h,w}^i 由于网络简单,在 3080Ti 上 256*256 的图在未经过量化的模型上可以达到接近
本文记录神经网络用于一分类异常检测的开山工作 —— DeepSVDD。 简介 论文:Deep One-Class Classification 开源代码:https://github.com/lukasruff/Deep-SVDD-PyTorch 基于核的单分类异常检测方法难以处理高维样本特征而且计算效率低 主要想法是利用神经网络训练来最小化计算样本特征空间的划分超球面,然后根据球心和测试样本点间的距离来判定样本点是否是异常。 推断 对于测试样本点 x\in X, 可以定义异常分数为输出空间中样本点到超球面球心的距离 $$ s(\boldsymbol{x})=\left\|\phi\left(\boldsymbol{x};
概括三种异常值检测方法 方法1:对总体进行统计建模来检测异常值 k个标准差以外的; 用指数加权移动回归; 类似CUSUM的一些方法,可以最快速的检测到一些变化。 多重校正其实也算是一种异常值的检测方法,进行多次独立test之后,比如1000次,有很多显著的结果,比如其中的100个都是显著的,但这100个中肯定有很多是由于”test太多了,碰巧造成的“,因为我们设定 关于多重校正,数说君之前专门写过一篇文章,戳这里:浅议P值校正 例2:光谱异常值检测 这个例子要检测有异常光谱的像素。怎么做的呢? 例4:POS机支付信息的异常检测 这个项目中简单来说也分三步: 1)作者分了很多层建模型,对每个银行建模(银行维度)、对每个区域建模(区域维度)、对每种交易类型建模(交易类型维度)。 异常检测就是要寻找出背后这个机制。 我们将异常值就简单定义为,由一个不同的机制或者总体所产生值。 以上是数说君个人的理解,详细还是看PPT吧: ? : ? ? ? ? ? ? ? ? ? ?
本文记录异常检测 2023 年的一篇工作 EfficientAD。 在训练学生网络时, 如果使用过多的训练图像, 会使得学生模仿教师对异常数据的行为, 这样不利于异常检测;而故意减少训练图像的数量又会使得学生没有学到正常图像的重要信息. 逻辑异常检测 异常又很多种情况, 教师学生网络适合检测局部区域的异常, 而自编码器善于检测逻辑上的异常, 因此文章为了同时检测所有异常在教师学生网络之外, 使用自动编码器来学习训练图像的逻辑约束并检测对这些约束的违反 左右两组流程分别展示细节异常和逻辑异常的检测过程. 核心代码在 pretraining.py 文件中 预训练使用 ImageNet 数据集,首先配置 ImageNet 数据位置 加载特征提取模型(默认 Wide_ResNet101_2),提取下采样 4
本文记录神经网络用于一分类异常检测的改进工作 —— PatchSVDD。 Segmentation 开源代码:https://github.com/nuclearboy95/Anomaly-Detection-PatchSVDD-PyTorch 改进 deep SVDD,提高异常检测能力与添加瑕疵定位能力 ,输出异常位置的热力图。 Patch~SVDD}}=\lambda\mathcal{L}_{\mathrm{SVDD}}+\mathcal{L}_{\mathrm{SSL}}. $$ 该 SSL loss 会提升对象类的图像的异常检测性能 encoder 后,提取并保留所有训练数据中的 Patch 特征,给定一个查询图像 x,其中的每个 Patch 通过编码器提取特征,每个Patch 特征在训练特征中距离最新的特征距离为该 Patch 的异常得分
Detecting outliers is an important task in machine learning, since if left unchecked they could hinder performance of our models. We focus on finding the reason an instance is an outlier, i.e. by finding the subset of features that if ignored the rest of the input is not an outlier anymore. We formulate the problem as a constrained monotonic submodular optimization task thanks to key properties of marginal distributions. Additionally, we leverage probabilistic circuits, which enable tractable marginal queries for arbitrary subsets, to further speed up the subset selection algorithm. We showcase the ability of finding the outlier features in a variety of different corruption scenarios, and show that finding and fixing the outlier features can help in downstream tasks such as classification.
机器学习中的异常检测在很多场景有重要应用,本文记录 SVDD 算法。 简介 支持向量数据描述 SVDD(Support Vector Data Description,SVDD)是一种单值分类算法,能够实现目标样本和非目标样本的区分,通常应用于异常检测、入侵检测等领域。 SVDD 思想 SVDD 的思路是寻找一个尽可能小的高维球体,将训练数据容纳进去,那么在预测数据时,认为在球体之外的数据为异常数据。 判断新样本是否为异常点 对于一个新的样本点 z ,如果它满足下式,那么我们认为它是一个异常点。
异常检测的应用 欺诈检测 工业质量监测 计算机集群监测 等等 image.png 建立一个异常检测系统的一般步骤 将带有label的数据集划分为训练集、验证集和测试集 注意将异常数据大致平均分配到每个集合中 通常情况下,验证集和测试集的数据都应该是互不相同的,即两个集合没有交集 使用训练集训练算法P(x) 为了避免正负样本分布不均,使用F1-score来评价算法性能 使用验证集来选择阈值ϵ 异常检测和监督学习的区别 异常检测 正例(异常样本)通常都非常少,通常是10这个数量级。 异常的种类非常多,无法通过特征一一确定。未来的异常种类不能预见。
本文综述了主要的基于GAN的异常检测方法,并突出了它们的优缺点。 异常是数据中不符合正常行为的定义(Chandola et al., 2009)的模式。 这种GAN特性表明它们可以成功地用于异常检测,尽管它们的应用只是最近才被探索出来。 使用GAN进行异常检测的任务是使用对抗性训练过程建模正常行为,并测量异常评分来检测异常(Schlegl等人,2017)。 第2节介绍了使用GAN进行异常检测的最新架构。在第3节中,我们对所有分析的架构进行了经验评估。最后,第四部分是结论和未来的研究方向. GAN异常检测 基于GAN的异常检测是一个新兴的研究领域。 EGBAD 高效基于GAN的异常检测(EGBAD) (Zenati et al., 2018)将BiGAN架构引入到异常检测领域。
异常检测(Anomaly detection),一个很常见的问题。 在图像方面,比如每天出入地铁安检,常常看到小姐姐小哥哥们坐在那盯着你的行李过检图像,类似如下(图来自GANomaly论文): ? 又比如在一些医学图像分析上,源自健康人的影像也许是比较容易获取的,并且图像的“模式”往往固定或者不多变的,而病变的图像数量是很少、很难获取,或者病变区域多变、甚至未知的,此时异常检测就面临着正样本/异常图像很少 这种情况其实在很多场景下有所体现,比如工业视觉检测等等。 对于已知类别、数量较多情况下,不管异常与否,我们也许可以通过训练一个分类模型就能解决。 下面速览几篇论文、看看GAN是如何做异常检测的(数据主要为图像形式): ---- 1. 检测时的计算方法: ? 4. 2018-11-13 GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training ?