【机器学习】异常检测

异常检测

假设你是一名飞机涡扇引擎工程师,你在每个引擎出厂之前都需要检测两个指标——启动震动幅度和温度,查看其是否正常。在此之前你已经积累了相当多合格的发动机的出厂检测数据,如下图所示

我们把上述的正常启动的数据集总结为 D a t a S e t : x ( 1 ) , x ( 2 ) , . . . , x ( m ) DataSet:{x^{(1)},x^{(2)},...,x^{(m)}} DataSet:x(1),x(2),...,x(m)
如果一个新的例子 x t e s t x_{test} xtest离点集很远,那可能这个样例是异常的

那么如何衡量“很远”呢?一般我们会有一个函数p(x)负责计算,并且有一个阈值 ϵ \epsilon ϵ,当 p ( x t e s t ) < ϵ p(x_{test})<\epsilon p(xtest)<ϵ的时候,我们认为该样例异常;而当 p ( x t e s t ) ≥ ϵ p(x_{test})\geq\epsilon p(xtest)ϵ的时候,我们认为其是正常的

异常检测的一般应用方面有欺诈检测,比如说检测一个用户的行为(登录频率,打字频率,发帖频率),来判断他是否是一个机器人。另外还可以用于计算机集群管理,通过采集各个计算机的运行数据,来找到异常的计算机,或者发掘未被充分利用的算力。

1.正态分布(高斯分布)

我们一般使用正态分布来实现异常检测,高斯分布一般用 x ∼ N ( μ , σ 2 ) x\sim N(\mu,\sigma^2) xN(μ,σ2)来表示,高斯分布的图像一般如下图所示,线段上的某个点 ( x , y ) (x,y) (x,y)表示的是取值为x的概率为y,其中 μ \mu μ是图像对称中心,而 σ \sigma σ被称为标准差,负责控制高斯分布的宽度, σ \sigma σ越大,曲线越平滑, σ 2 \sigma^2 σ2也称为方差

高斯概率密度公式如下:
p ( x , μ , σ 2 ) = 1 2 π σ e x p ( − ( x , u ) 2 2 σ 2 ) p(x,\mu,\sigma ^2)=\frac{1}{\sqrt[]{2\pi }\sigma }exp\left ( -\frac{(x,u)^2}{2\sigma^2} \right ) p(x,μ,σ2)=2π σ1exp(2σ2(x,u)2)

认识了高斯分布后,假设我们有一个数据集x,它的每个样例中仅有一个特征,那么这些数据集可以直接表示在x轴上,如下图:

那么我们需要做的事情是根据数据集在图上的离散分布,估计出 μ \mu μ σ 2 \sigma^2 σ2值,找到符合该数据集的高斯分布

对于 μ \mu μ的取值,实际上就是找数据中心,一般是找所有点在x轴上的均值,计算方式就是
μ = 1 m ∑ i = 1 m x ( i ) \mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)} μ=m1i=1mx(i)
而对于 σ 2 \sigma^2 σ2,其实是一个计算点集的方差的过程,也就是整体离中心点的偏移大小,计算方式是 μ = 1 m ∑ i = 1 m ( μ − x ( i ) ) 2 \mu=\frac{1}{m}\sum_{i=1}^{m}(\mu -x^{(i)})^2 μ=m1i=1m(μx(i))2

2.使用高斯分布构建异常检测算法

上述我们说了如果一个实例中只有一个特征,如何建立其高斯分布,那么如果一个实例有n个特征呢?实际上很简单,对于一个有m个实例,每个实例有n个特征的数据集,我们需要对每一个特征都建立一个高斯分布,而每一个高斯分布都有m个数据,共计n个高斯分布。

步骤一:对于一个实例 x x x,选择出若干特征 x i x_i xi,这些特征应该可以反映出实例x是否异常

步骤二:该步骤上文已经提到过,就是对于所有实例的第j个特征 x j x_j xj,都有一个高斯函数 x j   N ( μ j , σ j 2 ) x_j~N(\mu_j,\sigma^2_j) xj N(μj,σj2)用于计算该特征下的高斯分布, μ j , σ j 2 \mu_j,\sigma^2_j μj,σj2的计算方式参考上一节

步骤三
对于一个训练集 D a t a S e t : x ( 1 ) , x ( 2 ) , . . . , x ( m ) DataSet:{x^{(1)},x^{(2)},...,x^{(m)}} DataSet:x(1),x(2),...,x(m),每个样本x都拥有若干个特征,对于某个样本 x x x,对它的 p ( x ) p(x) p(x)的计算方法是 p ( x ) = ∏ n j = 1 p ( x j , μ j , σ j 2 ) = p ( x 1 , μ 1 , σ 1 2 ) p ( x 2 , μ 2 , σ 2 2 ) p ( x 3 , μ 3 , σ 3 2 ) . . . p ( x n , μ n , σ n 2 ) p(x)=\prod_{n}^{j=1}p(x_j,\mu_j,\sigma ^2_j) =p(x_1,\mu_1,\sigma ^2_1)p(x_2,\mu_2,\sigma ^2_2)p(x_3,\mu_3,\sigma ^2_3)...p(x_n,\mu_n,\sigma ^2_n) p(x)=nj=1p(xj,μj,σj2)=p(x1,μ1,σ12)p(x2,μ2,σ22)p(x3,μ3,σ32)...p(xn,μn,σn2)

最后我们规定一个阈值 ϵ \epsilon ϵ,当 p ( x ) < ϵ p(x)<\epsilon p(x)<ϵ的时候,我们认为该实例x异常

3.开发和评估异常检测系统

和其他算法一样,我们将训练模型的数据分为训练集,交叉验证集和测试集。假设我们有10000个正常的数据,20个异常的数据,那么我们可以这样子分配:

  • 训练集含有6000个正常数据
  • 交叉验证集含有2000个正常数据,10个异常数据
  • 测试集含有2000个正常数据,10个异常数据

接下来就是使用数据训练 p ( x ) p(x) p(x)函数,并且当 p ( x ) < ϵ p(x)<\epsilon p(x)<ϵ的时候,我们认为该实例x异常,训练的过程在上一小节已经说明了

4.异常检测和无监督学习的区别

对于异常检测,他的应用场景更多的是在异常点相对少的情况下,比如10000台发动机中只有20台需要返修。而无监督学习更多的是正样本和负样本的数据相当。这也是为什么异常检测广泛应用在制造业和数据监控行业,因为其出现异常的概率相对比较低;而在垃圾邮件识别方面,大量的垃圾邮件样例为无监督学习提供了丰富的负样本,因此使用无监督学习更好

另外的一方面是,无监督学习擅长划分若干个点集,比如将发动机划分为正常、喘振、压气机失速等若干种情况,但是如果第二天出现了叶片共振的问题,无监督学习就束手无策了,因为它没见过这种情况。

而异常检测就是简单地粗暴地将正常工作的情况划分出来,只要超出了正常的限界都被认为是异常,因此当叶片共振这种之前未出现的故障出现的时候,异常检测算法会直接认为它是异常,而不会细究其异常的原因,但是这也反而使得它具有了识别一些之前未出现的异常的能力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/48975.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于飞桨paddle的极简方案构建手写数字识别模型测试代码

基于飞桨paddle的极简方案构建手写数字识别模型测试代码 原始测试图片为255X252的图片 因为是极简方案采用的是线性回归模型&#xff0c;所以预测结果数字不一致 本次预测的数字是 [[3]] 测试结果&#xff1a; PS E:\project\python> & D:/Python39/python.exe e:/pro…

性能提升,SpringBoot 3.2虚拟线程来了

spring boot 3.2 会提供默认支持&#xff0c;必须Java19。 在以往的项目中&#xff0c;我们面临了这样一种情况&#xff1a;我们收到了数千个认证请求。为了确保安全性&#xff0c;我们依靠第三方系统发送短信 OTP 进行验证。然而&#xff0c;有时候第三方系统花费的时间比预期…

Tesseract开源的OCR工具及python pytesseract安装使用

一 、介绍 Tesseract是一款由Google赞助的开源OCR。 pytesseract是python包装器&#xff0c;它为可执行文件提供了pythonic API。 Tesseract 已经有 30 年历史&#xff0c;开始它是惠普实验室的一款专利软件&#xff0c;在2005年后由Google接手并进一步开发和完善。Tesseract支…

高压放大器模块的作用是什么呢

高压放大器模块是一种集成了高压放大器芯片、控制电路、保护电路等多种元件和功能的模块化设备。它可以将输入信号进行放大处理&#xff0c;并输出到负载上&#xff0c;具有高性能、高可靠性、高稳定性等优点。下面安泰电子将详细介绍高压放大器模块的作用&#xff1a; 信号放大…

如何学好Java并调整学习过程中的心态:学习之路的秘诀

文章目录 第一步&#xff1a;建立坚实的基础实例分析&#xff1a;选择合适的学习路径 第二步&#xff1a;选择合适的学习资源实例分析&#xff1a;参与编程社区 第三步&#xff1a;动手实践实例分析&#xff1a;开发个人项目 调整学习过程中的心态1. 不怕失败2. 持续学习3. 寻求…

外观模式-提供统一入口

在办理流量套餐的时候&#xff0c;我们可以去官网查查询套餐&#xff0c;找出符合我们需求的套餐&#xff0c;然后进行办理。官网是充斥着各种各样的套餐&#xff0c;如果我们一个个去查看这些套餐&#xff0c;耗费的时间很多。而且在办理套餐的时候&#xff0c;步骤也比较多。…

Linux工具【1】(编辑器vim、编译器gcc与g++)

vim详解 引言vimVim的三种模式及模式切换普通模式下操作底行模式下操作 gcc与ggcc的使用&#xff08;g类似&#xff09;预编译编译汇编链接静态库与动态库 总结 引言 vim&#xff08;vi improved&#xff09;编辑器是从 vi 发展出来的一个文本编辑器。 代码补全、编译及错误跳…

03-树1 树的同构(c++)

03-树1 树的同构 给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2&#xff0c;则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的&#xff0c;因为我们把其中一棵树的结点A、B、G的左右孩子互换后&#xff0c;就得到另外一棵树。而图2就不是同构的。 现…

MySQL优化(面试)

文章目录 通信优化查询缓存语法解析及查询优化器查询优化器的策略 性能优化建议数据类型优化索引优化 优化关联查询优化limit分页对于varchar end mysql查询过程: 客户端向MySQL服务器发送一条查询请求服务器首先检查查询缓存&#xff0c;如果命中缓存&#xff0c;则立刻返回存…

基于Javaweb实现ATM机系统开发实战(十五)退卡和转账跳转实现

首先创建一个servlet接受和处理请求&#xff1a; package com.atm.servlet;import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException;//用户退出 WebServlet("/logout") public class ExitServlet ex…

CSDN浏览如何解决

一、对于平时我们苦恼csdn数据不够好看 当面试等各个场合需要我们装*或者秀技术无法拿出亮眼的时候&#xff0c;刚好我闲时间编译的在线模块适合你 二、如何操作&#xff08;虚拟平台我已给大家放到最后直接使用即可&#xff09; 重点&#xff1a;pc端必须拥有python环境 win…

JGIT获取远程仓库、本地仓库提交版本号

https://www.freesion.com/article/50181381474/ JGIT获取远程仓库、本地仓库提交版本号 一、环境搭建二、项目结构二、代码部分 GitUtils.javaGitInfoAtom.java三、运行结果&#xff1a;总结 一、环境搭建 Maven依赖导入 <dependency><groupId>org.eclipse.jg…

图像滤波器

图像噪声 • 图像噪声是图像在获取或是传输过程中受到随机信号干扰&#xff0c;妨碍人们对图像理解及分析处理 的信号。 • 图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量&#xff0c;图像在传输过程中产 生图像噪声的主要因素是所用的传输信道受到了噪声…

【深度学习】基于图形的机器学习:概述

一、说明 图神经网络&#xff08;GNN&#xff09;在数据科学和机器学习中越来越受到关注&#xff0c;但在专家圈之外仍然知之甚少。为了掌握这种令人兴奋的方法&#xff0c;我们必须从更广泛的图形机器学习&#xff08;GML&#xff09;领域开始。许多在线资源谈论GNN和GML&…

DP83867IS SGMII eye diagram问题调试记录

1. 前言 使用的是带CPU的DP83867IS,通过SGMII接口 从PHY到CPU的眼图看起来很好 而从CPU到PHY的眼图很差 2. 问题梳理 (1)能证实SGMII道有100欧姆的阻抗吗? (2)能不能做一个误码率测试来看看眼图是否仍然是可以接受的? (3)因为从PHY到CPU的眼睛是好的,可能有一个…

Oracle 最高安全架构

​在当今世界中&#xff0c;数据库是存储敏感信息的宝贵资料库&#xff0c;攻击者总是在寻找目标。这导致网络安全威胁的增加&#xff0c;因此有必要采取适当的保护措施。Oracle Maximum Security Architecture&#xff08;MSA&#xff09;就是一种提供数据库端到端安全的解决方…

MYSQL 主从复制

在读多写少的网络环境下&#xff0c;MySQL 如何优化数据查询方案 假如说一个电商平台 到双十一了 大量的读写操作 如果不做点什么的话 平台就被冲烂了 那我们要怎么办呢? 你或许会想 林北直接一个redis缓存 帮数据库度过难关 这个操作实际上是不行的 因为应用缓存的原则之一…

【开发环境】Windows下搭建TVM编译器

关于搭建TVM编译器的官方文档&#xff1a;Install from Source — tvm 0.14.dev0 documentation (apache.org) 1. 安装Anaconda 首先我们需要安装Anaconda&#xff0c;因为其中包含着我们所需要的各类依赖&#xff1a; 进入Anaconda官网https://www.anaconda.com/products/d…

【Spring Cloud Alibaba】Sentinel运行原理

文章目录 前言1、基本原理2、SphU.entry()2.1、StringResourceWrapper2.2、Entry 3、entry.exit()4、Context 前言 本文基于sentinel-1.8.0版本 Sentinel 是面向分布式服务架构的流量控制组件&#xff0c;主要以流量为切入点&#xff0c;从限流、流量整形、熔断降级、系统负载保…

DoIP学习笔记系列:导航篇

文章目录 1. 前言2. 导航3. 参考资料 1. 前言 DoIP学习笔记系列是一整套基于网络的诊断协议学习笔记&#xff0c;非常适合对有UDS基础但对DoIP没有实战经验的小伙伴参考&#xff0c;通过源协议讲解&#xff0c;企标讲解&#xff0c;测试需求讲解&#xff0c;测试用例讲解&…