向毕业妥协系列之机器学习笔记:无监督学习-异常检测

news2025/2/28 23:12:47

目录

一.发现异常事件

二.高斯正态分布

三.异常检测算法

四.开发与评估异常检测系统

五.异常检测与监督学习对比

六.选择使用什么特征


一.发现异常事件

下图的例子是飞机发动机的制造,有很多特征,我们为了方便讲解取其中的两个特征:发动机产生的热量和震动强度,然后数据集是m个(发动机,每个发动机有两个特征),我们这个异常检测的问题就是测试新的数据和原来的数据是否相似,可以看到下图的坐标轴图像的示例 ,有一个合格的示例,也有一个异常的示例。

那么如何检测呢,一个方法是密度估计,如下图示新的测试数据落到内圈的概率最高(因为那里最密集),越往外越稀疏(落到外圈的概率也就越来越小),所以我们就有一个概率模型p,用于计算新数据x_test的概率,如果 概率小于设定的epsilon值,那么就认定是异常,如果≥设定的epsilon值,就认为是正常。

二.高斯正态分布

其实就是正态分布。越学越觉得数学的魅力,不愧是宇宙第一学科。

 因为概率总和是1,所以图中的阴影部分的面积是不变的,所以所以当σ(sigma)减小时,图像变窄的同时也会变宽

下图,根据坐标轴的散点,咱们可以套用公式来计算出μ和σ,然后正态分布的图像就有了

 

检测方法如下图,绿色的是新的数据,可以看到随着位置的不同对应于不同的概率,概率越小也就越远离大部队,当低于一定概率之后就会被认为是异常示例。

 

三.异常检测算法

下图中的x_i其实应该写成x^(i),意思就是每个x^(i)都有n个特征,每个特征x^(i)_ j都对应一组μ_ j和σ^2_ j,然后训练示例的各个特征的概率累乘即可得到这个训练示例的概率。

举例来说明一下这个思想:

比如温度过高的概率是1/10,震动过大的概率是1/20,那么温度过高且震动过大的概率就是

(1/10)*(1/20)=1/200

 indicative:指示的,表明的,象征的

异常检测算法过程:

以只有两个特征为例,最后的模型pru如下,是一个三维图

四.开发与评估异常检测系统

异常检测算法是一个非监督学习算法,意味着我们无法根据结果变量

的值来告诉我们数据是否真的是异常的。我们需要另一种方法来帮助检验算法是否有效。当我们开发一个异常检测系统时,我们从带标记(异常或正常)的数据着手,我们从其中选择一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。

例如:我们有10000台正常引擎的数据,有20台异常引擎的数据。 我们这样分配数据:

6000台正常引擎的数据作为训练集

2000台正常引擎和10台异常引擎的数据作为交叉检验集

2000台正常引擎和10台异常引擎的数据作为测试集

具体的评价方法如下:

  1. 根据测试集数据,我们估计特征的平均值和方差并构建p(x)函数
  2. 对交叉检验集,我们尝试使用不同的ε值作为阀值,并预测数据是否异常,根据F1值或者查准率与查全率的比例来选择ε
  3. 选出ε后,针对测试集进行预测,计算异常检验系统的F1值,或者查准率与查全率之比

五.异常检测与监督学习对比

之前我们构建的异常检测系统也使用了带标记的数据,与监督学习有些相似,下面的对比有助于选择采用监督学习还是异常检测:

两者比较:

希望这节课能让你明白一个学习问题的什么样的特征,能让你把这个问题当做是一个异常检测,或者是一个监督学习的问题。另外,对于很多技术公司可能会遇到的一些问题,通常来说,正样本的数量很少,甚至有时候是0,也就是说,出现了太多没见过的不同的异常类型,那么对于这些问题,通常应该使用的算法就是异常检测算法。

六.选择使用什么特征

尽量选取符合高斯分布的特征作为咱们训练的特征,即便是不符合高斯分布的特征我们也可以尽量把它转变成符合高斯分布的特征。转换的方式可以参考下图的红框处的方式,可以取对数,一般的形式是log(x_2+C),C是一个常数值,事实证明较大的C值最终会减少高斯分布的变化。也可以取冥,比如平方根,立方根等等。

但是这种像向高斯数据的转变一般都是试出来的,比如试多个C的值。

误差分析:

一个常见的问题是一些异常的数据可能也会有较高的值,因而被算法认为是正常的。比如说购物时,黄牛要薅羊毛,用了一些违规程序去抢购,系统检测打字速度等特征,就可以明显分出这些异常示例。这种情况下误差分析能够帮助我们,我们可以分析那些被算法错误预测为正常的数据,观察能否找出一些问题。我们可能能从问题中发现我们需要增加一些新的特征,增加这些新特征后获得的新算法能够帮助我们更好地进行异常检测。

异常检测误差分析:

我们通常可以通过将一些相关的特征进行组合,来获得一些新的更好的特征(异常数据的该特征值异常地大或小),例如,在检测数据中心的计算机状况的例子中,我们可以用CPU负载与网络通信量的比例作为一个新的特征,如果该值异常地大,便有可能意味着该服务器是陷入了一些问题中。

我们介绍了如何选择特征,以及对特征进行一些小小的转换,让数据更像正态分布,然后再把数据输入异常检测算法。同时也介绍了建立特征时,进行的误差分析方法,来捕捉各种异常的可能。希望你通过这些方法,能够了解如何选择好的特征变量,从而帮助你的异常检测算法,捕捉到各种不同的异常情况。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于JavaWeb的小区物业管理系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

(1)paddle---在anaconda中安装paddle环境

1、 创建一个anaconda的环境 (1)创建 conda create --name chenpaddle_cp310 python=3.10 如果要删除 conda remove -n chenpaddle_cp310 --all (2)查看现有环境 conda env list #查看现有环境 2、安装 paddlepaddle (1)查看自己安装的cuda版本 nvidia-smi 发现…

java计算机毕业设计ssm+vue工商学院办公用品管理信息系统

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时…

Linux内存管理知识总结(一)

以下源代码来自 linux-5.10.3 内核代码,主要以 x86-32 为例 Linux 内存管理是一个很复杂的“工程”,它不仅仅是对物理内存的管理,也涉及到虚拟内存管理、内存交换和内存回收等 物理内存的探测 Linux 内核通过 detect_memory()函数实现对物…

2021年认证杯SPSSPRO杯数学建模B题(第一阶段)依巴谷星表中的毕星团求解全过程文档及程序

2021年认证杯SPSSPRO杯数学建模 B题 依巴谷星表中的毕星团 原题再现: 依巴谷卫星(High Precision Parallax Collecting Satellite,缩写为 Hip-parcos),全称为“依巴谷高精度视差测量卫星”,是欧洲空间局发…

Java培训:重试实现高可用方案

1、背景介绍 随着互联网的发展项目中的业务功能越来越复杂,有一些基础服务我们不可避免的会去调用一些第三方的接口或者公司内其他项目中提供的服务,但是远程服务的健壮性和网络稳定性都是不可控因素。在测试阶段可能没有什么异常情况,但上…

Kubernetes存储机制认识

前言: 在Kubernetes系统中,将对容器应用所需的存储资源抽象为存储卷(Volume)。Volume是与Pod绑定的(独立于容器)与Pod具有相同生命周期的资源对象。 可以将Volume的内容理解为目录或文件,容器…

Sqoop Hook

环境: ambari大数据平台 sqoop版本1.4.7 hive版本3.1.0 Atlas版本2.2.0 Atlas使用官网给的sqoop hook 具体安装步骤 1、官网安装步骤:https://atlas.apache.org/#/HookSqoop 2、其他安装步骤:https://www.freesion.com/article/45701353391/ 根据以上两个安装的步骤可以解决…

Oracle LiveLabs实验:Automatic Partitioning in Autonomous Database

概述 此实验申请地址在这里。 实验帮助在这里。 此实验预估完成时间100分钟。 关于自治数据库自动分区的帮助文档,请参见这里。 这个实验设计得很好,推荐。 介绍 关于本研讨会 自治数据库中的自动分区分析您的应用程序工作负载,并自动…

使用Ubuntu演示介绍,Linux下安装和配置Redis、配置远程连接redis(保姆级教学)

安装redis 1、先在官网下载好Redis的安装包 Redis 官网:https://redis.io/ Redis 在线测试:http://try.redis.io/ Redis菜鸟教程: https://www.runoob.com/redis/redis-tutorial.html 2、把下载好的安装包放在Ubantu的共享文件夹下 3、Linu…

电商行业少不了的营销方式——邮件营销

邮件营销可以贯穿到客户购买商品的整个流程中,帮助企业以低成本的引流方式获取较高的销售额。邮件营销不同于其他营销方式,如果你获取了客户的邮件信息,可以和客户保持长期的联系,为品牌积累一定的客户资源。这种方式除了能够提升…

Ubuntu20.04.4 LTS正确安装方案及问题解决

Ubuntu20.04.4 LTS报错解决方案1. 开启系统功能支持2. 升级wsl3. 重新打开Ubuntu,输入用户名和密码完成安装4. 其它报错参考1. 开启系统功能支持 打开搜索,输入功能,进入启用或关闭Windows功能 开启适用于Linux的Windows子系统与虚拟机平台 注意: 这两个都得开, 不然会报错 …

MySQL索引理解

目录 什么是索引? 索引的好处 思考一个小问题, 索引这么好, 那是不是越多越好? 索引分类 索引的创建和删除 explain字段解释 索引底层数据结构 区分MyISAM和InnoDB存储引擎来再认知聚簇非聚簇索引 什么是索引? 索引: 类似于目录的帮助快速检索数据的一种数据结构. 辅…

Dragonfly 中 P2P 传输协议优化

文|孙珩珂 上海交通大学 本文1987字 阅读 10 分钟 01 优化背景 此前 Dragonfly 的 P2P 下载采用静态限流策略,相关配置项在 dfget.yaml 配置文件中: # 下载服务选项。 download: # 总下载限速。 totalRateLimit: 1024Mi # 单个任务…

Java-IO流学习

文章目录前言1.Java-IO流简介2.流的基本概念3.创建文件的三种方式3.1根据一个文件路径直接创建一个文件。3.2 根据父目录 File 对象,在子路径创建一个文件3.3 根据父目录路径,在子路径下生成文件4.获取文件信息5.目录与文件操作5.1文件删除5.2目录删除5.…

【Linux】实验二 Makefile 的编写及应用

静态和动态库的转换可以参考这篇文章哦!! 文章目录实验二 Makefile 的编写及应用实验目的实验内容具体步骤:一、进入文件夹二、生成各个.c .h文件1. exam.h2. exam.c3. mat.h4. mat.c5. main.c三、编译建立的文件1. 只编译不链接 main.o2. 使…

Vue实现任意内容展开 / 收起功能组件

博主介绍 📢点击下列内容可跳转对应的界面,查看更多精彩内容! 🍎主页:水香木鱼 🍍专栏:后台管理系统 文章目录 简介:这是一篇有关【Vue实现任意内容展开 / 收起功能组件】的文章&am…

1.jdk,数据类型,运算符

Java语言跨平台性的解释 一次编译,到处运行 将.java文件编译成.class文件,然后就可以在linux,windows运行。 java的跨平台的实现是通过在不同的操作系统上的不同的jvm差异来实现跨平台的 jdk jdk jre(jvmjavase核心类库&…

MySQL基础操作总结_CRUD

文章目录 1.新增 insert 1.1 单行数据全列插入 1.2 多行数据指定列插入 2.查询 select 2.1 全列查询 2.2 指定列查询 2.3 查询字段包含表达式 2.4 别名 2.5 去重:distinct 2.6 排序:order by 2.7 条件查询 2.7.1 where条件查询 2.7.2 and与or查询 2.7.3 范围查…

Java简介

Java是一门面向对象的编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论&#xff0…