当前位置: 首页 > news >正文

C3-1.3.1 无监督学习——异常检测

C3-1.3.1 无监督学习——异常检测

1、举例:异常值检测示例——密度评估法

1.1 举一个例子

在这里插入图片描述

这里做的是 查看飞机发动机 异常检测:

  • 左侧:X1 ,X2 … 是 可能会影响发动机状态的特征
  • 右侧:
    • Dataset:训练数据集
    • New engine :利用新发动机的数据来检测新建造出的发动机是否异常

在这里插入图片描述

  • 这里只拿出来两个特征值(X1 , X2)来举例,为了可视化让我们了解的更加方便,实际应用中 特征的数量可能达到上百 / 上千

  • 最外层蓝色圈内的:说明的大概率的,是正常的

  • 最外层蓝色圈外的:是小概率发生的事件,要进行进一步的检查

  • **P(X):**这里通过训练集建立完成 模型 P(X)后,用训练集数据 X-test 来判断结果 P(X-test):是否是状态异常的发动机

  • **ε的值:**即最外圈蓝色框的概率的值

1.2 构建过程

  • Step1:

    **特征的提取,**找出能够判断是否异常状态的特征——这里用的特征是:飞机发动机的热度X1,发动机震动频率X2

  • Step2:

    ​ 通过训练集的数据拟合出一个 模型——P(X)。

  • Step3:

    ​ 通过输入的数据 X (X可能是一组向量),得出概率值 y = P (X)。

    ​ 如果:P(X) < ε (设定好的门槛值,这个值通常很小),就说明发生异常

在这里插入图片描述

2、应用的算法:高斯正态分布

※※ 【核心】:高斯正态分布——很好的解释了:

  • 上图中三个蓝色圈的由来 ? / 代表什么? /为什么要画这三个圈不是四个?
  • P(x) Model 怎么拟合出来的?
  • ε的值的也由来?

2.1、正态分布函数 / 高斯正态分布

  • 3个蓝圈: 在 异常举例中,我们给出了3个蓝圈,其实每一个圈分别代表下面的三个分布的范围**(u± δ、u± 2δ、u± 3δ)**

  • **P(x):**也就是对应的高斯正态分布函数

  • **ε的值的也由来:**为什么在 P(X)超过了 u - 3δ < P(X) < u + 3δ 的范围就认为他是异常值,因为在 u - 3δ < P(X) < u + 3δ 的范围(达到了99.7%)之外 的概率确实太小了。 ε =u± 3δ

img

u - δ < P(X) < u + δ

img

u - 2δ < P(X) < u + 2δ

img

u - 3δ < P(X) < u + 3δ

  • 均值u 的算法:

    • 在这里插入图片描述
  • 方差δ的算法:

    • 在这里插入图片描述
  • 这个 “钟形”的概率分布的面积是 1。也就是说:

    • 标准差δ越小,意味着大多数变量值离均数的距离越短,因此大多数值都紧密地聚集在均数周围,图形呈现**“瘦高型”**
    • 相反,标准差δ越大,数据跨度就比较大,分散程度大,所覆盖的变量值就越多(比如1±0.5涵盖[0.5,1.5]),图形呈现**“矮胖型”** ——如图四

    img

2.2 高斯分布的应用

  • Step1 :通过训练集数据,进行散点分布在X轴上(这是训练其中的一个特征):

在这里插入图片描述

  • Step 2 : 正态分布的使用,进行X -> f(x)的映射:

在这里插入图片描述

  • Step 3 :利用高斯分布进行 异常值的检测:

在这里插入图片描述

3、实现流程:异常检测算法实现流程

3.1、算法实现步骤

  • Step1:
    • 选择可能影响最终结果——是否异常 的特征的选择
  • Step 2:
    • **拟合模型,**训练每个特征向量对应的参数 —— u ; δ
  • Step 3:
    • 通过输入测试集数据x-i,计算最终结果 P(x)

在这里插入图片描述

※P(X)是连乘得出的结果,是不同特征的特征值X 对应的P(X-i) 连乘 的结果,是每个特征对结果——异常检测的共同的影响

※P(X-i)中一旦有一个结果是不正常的——导致P(X-i)是特别小的数值——导致最终结果P(X)是特别小的数值——导致P(X)< u± 3δ ——得出结果是 异常点

在这里插入图片描述
ra%5Ctypora-user-images%5Cimage-20231101205906650.png&pos_id=img-QDV3Mm35-1704850973901)

【补充】:

  • 均值 u的算法:

在这里插入图片描述

  • 方差δ的算法:

在这里插入图片描述

在这里插入图片描述

3.2 异常值检测实例

  • Step1:
    • 选择可能影响最终结果——是否异常 的特征的选择
      • 这里是做 飞机发动机异常检测,保留了两个特征:
      • X1:发动机热度
      • X2:发动机震动频率
  • Step 2:
    • **拟合模型,**训练每个特征向量对应的参数 —— u ; δ
      • 计算得出 阀值 u± 3δ = ε = 0.02
      • 把 X1 ,X2 ,概率P 画在了三维图像上
  • Step 3:
    • 通过输入测试集数据x-i,计算最终结果 P(x)
      • 从图中可以看出:
      • X1-test :是正常值的状态
      • X2-test :是异常状态,发生概率 P(X) < ε ,需要进一步对发动机做检测

在这里插入图片描述

4、模型微调:运用少量标签数据 改进算法的必要性

4.1、文章核心思想

【本节核心句子】: it’s turns out to be **very userful for turning(调整) the algorithm if you have a small number of anomalous examples so that you can create a cross validation set and a test set **,which i’m going to denote (x-cv(1),y-cv(1)) 、(x-cv(2),y-cv(2)),and have a test set of some number example where both the cross validation and test sets hopefully includes a few anomalous examples

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.2、应用的例子

  • 给出了 10000个正常的数据 和 20个异常 / 瑕疵数据

  • 给出两种方法去进行模型的训练

  • 方法一:

    • 测试集用:6000个好的
    • 交叉验证集:用2000个好的 和 10 个异常数据——进行模型的微调,调整ε的值和特征的选择
    • 测试集:用2000个好的,和10个异常数据——来判断模型的泛化能力
  • 方法二(当数据及其不平衡的时候使用最好)(这时是有10000个好的,2个坏的):

    • 测试集用:6000个好的
    • 交叉验证集:用4000个好的 和 2 个异常数据——进行模型的微调,调整ε的值和特征的选择。

    缺点:不能测试模型的泛化能力,无法评估

【注释】:

这不是监督学习,因为没有进行数据的标记,这里的 好数据6000 和瑕疵数据 20 都是我们假设(原文是 Assume labeled)的

—— 引出了下文,那你都是认为是假设标记了,那为什么直接标记,所以为什么不使用监督学习呢????

在这里插入图片描述

5、什么时候使用监督学习,什么时候使用异常检测

5.1 监督学习 VS 异常值检测

  • 异常值检测:

    • ※※※应用于检测目标的异常值 可能是以前没有学到的,不像任何 一个训练集给出的异常值例子
    • 适合 具有 少量异常值大量正常值 数据量
  • 监督学习:

    • ※※※测试集中的异常值,和我们以前学习的样本有些相似之处
    • 适合 具有 大量异常值大量正常值 的数据量

在这里插入图片描述

5.2 举一个例子

  • 异常值检测的例子:

    ​ 比如说电信诈骗:诈骗手法层出不穷,我们模型学习完以前的诈骗方法,但是他三天 / 几个月之后 又出现了新的咋骗手法,总是和出新的,和以前不同——这个时候就要使用**“异常值检测”**

  • 监督学习的例子:

    ​ 比如说 垃圾邮件检测,经历了30多年,垃圾邮件无非是那几类:钓鱼网站,推销产品,诱导消费…

    我们可以学习以前的一些例子,然后通过检测测试集的例子,总会发现有一些相似之处——这是就要使用**“监督学习”**法

在这里插入图片描述

6、选择使用什么样的特征

  • 在监督学习中:就算我们选择了一些额外不相关的特征,我们也不受影响,因为有——特征放缩
  • 在异常值检测中:对于未标记的数据,这就显得比监督学习 尤其的重要了

6.1 如何选择

【※※※核心】:

  • 选择的特征 或多或少 符合 高斯分布/正态分布

  • 如果要不符合高斯分布,就把他改成高斯分布

  • 一些异常的数据可能也会有较高的𝑝(𝑥)值,因而被算法认为是正常的——需要进一步分析并找出特征

选择方法一:符合高斯分布的特征情况:

以特征X举例,在画布上画出X特征的分布,这里的X特征就 比较符合 “高斯分布”——这就是一个很好的候选特征

在这里插入图片描述

  • 不符合高斯分布的特征的情况——变成符合:

    • 首先是判断,我们是否真的需要这个特征变量

    • 如果真的需要,那我们进行进一步的转变,变成符合高斯分布的特征

通过 log(x)函数 ,变成了符合正态分布的情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其实还有许多变化的方法:

​ 常用的将数据转换成符合高斯分布的方法包括对数变换(log transformation)、平方根变换(square root transformation)、Box-Cox变换等。这些变换可以使数据更加接近正态分布的形态。

​ 如果数据中存在明显的异常值,那么将其转换成符合高斯分布的形式可能会使得异常值更加明显,从而更容易被检测到。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

[^]: (注:在python 中,通常用np.log1p()函数,𝑙𝑜𝑔1𝑝就是 𝑙𝑜𝑔(𝑥 + 1),可以避免 出现负数结果,反向函数就是np.expm1())

实例实施过程:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

选择方法二: 从学习不好的结果中进行进一步选择特征

【核心】:

一个常见的问题是一些异常的数据可能也会有较高的𝑝(𝑥)值,因而被算法认为是正常的。这种情况下误差分析能够帮助我们 ——我们可以分析那些被算法错误预测为正常的数据,观察能否找出一些问题。

  • 正常我们选择完成 交叉验证集 验证,发现有一些数据(这里对应的X蓝色坐标点)看起来很正常( 有较高的P(x)),但是是异常数据——怎么才能解决这个问题呢???

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 这时候就需要找出其他特征,根据其他特征一起来进行判断会更容易——他虽然在X1(这里指发动机 温度)的特征上表现得正常,但是在我们没有选中的X2 (这里指发动机震动频率)的特征上表现得异常。所以还需要选择特征X2,然后结合X1 X2,把X1 X2他们组合起来进行一起来判断。

​ 这也是交叉验集微调的过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

6.2 举例

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

相关文章:

C3-1.3.1 无监督学习——异常检测

C3-1.3.1 无监督学习——异常检测 1、举例&#xff1a;异常值检测示例——密度评估法 1.1 举一个例子 这里做的是 查看飞机发动机 异常检测&#xff1a; 左侧&#xff1a;X1 ,X2 … 是 可能会影响发动机状态的特征右侧&#xff1a; Dataset&#xff1a;训练数据集New engine…...

1.4.1机器学习——梯度下降+α学习率大小判定

1.4.1梯度下降 4.1、梯度下降的概念 ※【总结一句话】&#xff1a;系统通过自动的调节参数w和b的值&#xff0c;得到最小的损失函数值J。 如下&#xff1a;是梯度下降的概念图。 我们有一个损失函数 J(w,b)&#xff0c;包含两个参数w和b&#xff08;你可以想象成J(w,b) w*x…...

在IntelliJ IDEA中,.idea文件是什么,可以删除吗

相信有很多小伙伴&#xff0c;在用idea写java代码的时候&#xff0c;创建工程总是会出现.idea文件&#xff0c;该文件也从来没去打开使用过&#xff0c;那么它在我们项目里面&#xff0c;扮演什么角色&#xff0c;到底能不能删除它呢&#xff1f; 1、它是什么&#xff1f;有什么…...

【Spring Cloud】Gateway组件的三种使用方式

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Spring Cloud》。&#x1f3af;&#x1f3af; &am…...

对象的复制

方式一&#xff1a;sv 的new函数 trans tr1,tr2; malbox.get(tr2); tr1 new tr2;//仅用于浅拷贝&#xff0c;拷贝后tr1,tr2为两个独立的对象方式二&#xff1a;uvm 域的自动化常用函数&#xff1a;copy / clone / 使用前提&#xff1a; 1. 函数都可用于uvm_object类型&…...

基于 Python+Neo4j+医药数据,构建了一个知识图谱的自动问答系统

知识图谱是目前自然语言处理的一个热门方向。目前知识图谱在各个领域全面开花&#xff0c;如教育、医疗、司法、金融等。 本项目立足医药领域&#xff0c;以垂直型医药网站为数据来源&#xff0c;以疾病为核心&#xff0c;构建起一个包含7类规模为4.4万的知识实体&#xff0c;…...

Maven之属性管理

1.属性管理 1.1 属性配置与使用 ①&#xff1a;定义属性 <!--定义自定义属性--> <properties><spring.version>5.2.10.RELEASE</spring.version> </properties>②&#xff1a;引用属性 <dependency><groupId>org.springframewor…...

快乐学Python,数据分析之获取数据方法「公开数据或爬虫」

学习Python数据分析&#xff0c;第一步是先获取数据&#xff0c;为什么说数据获取是数据分析的第一步呢&#xff0c;显而易见&#xff1a;数据分析&#xff0c;得先有数据&#xff0c;才能分析。 作为个人来说&#xff0c;如何获取用于分析的数据集呢&#xff1f; 1、获取现成…...

前端常用的设计模式

设计模式&#xff1a;是一种抽象的编程思想&#xff0c;并不局限于某一特定的编程语言&#xff0c;而是在许多语言之间是相通的&#xff1b;它是软件设计中常见的问题的通用、可反复使用、多少人知晓的一种解决方案或者模板。一般对与从事过面向对象编程的人来说会更熟悉一些。…...

游戏引擎支持脚本编程有啥好处

很多游戏引擎都支持脚本编程。Unity、Unreal Engine、CryEngine等大型游戏引擎都支持使用脚本编写游戏逻辑和功能。脚本编程通常使用C#、Lua或Python等编程语言&#xff0c;并且可以与游戏引擎的API进行交互来控制游戏对象、设置变量、执行行为等。使用脚本编程&#xff0c;游戏…...

react中概念性总结(二)

目录 说说你对react的理解&#xff1f;有哪些特性&#xff1f; 说说Real diff算法是怎么运作的&#xff0c;从tree层到component层到element层分别讲解&#xff1f; 调和阶段setState干了什么&#xff1f; 说说redux的工作流程&#xff1f; 为什么react元素有一个$$type属…...

WPF自定义漂亮顶部工具栏 WPF自定义精致最大化关闭工具栏 wpf导航栏自定义 WPF快速开发工具栏

在WPF应用程序开发中&#xff0c;自定义一个漂亮的顶部工具栏具有多重关键作用&#xff0c;它不仅增强了用户体验&#xff0c;还提升了整体应用的专业性和易用性。以下是对这一功能的详细介绍&#xff1a; 首先&#xff0c;自定义顶部工具栏是用户界面设计的重要组成部分&…...

Transformer 的双向编码器表示 (BERT)

一、说明 本文介绍语言句法中&#xff0c;最可能的单词填空在self-attention的表现形式&#xff0c;以及内部原理的介绍。 二、关于本文概述 在我之前的博客中&#xff0c;我们研究了关于生成式预训练 Transformer 的完整概述&#xff0c;关于生成式预训练 Transformer (GPT) 的…...

关于LwRB环形缓冲区开源库的纯C++版本支持原子操作

1、LwRB环形缓冲区开源库&#xff1a; GitHub - MaJerle/lwrb: Lightweight generic ring buffer manager libraryLightweight generic ring buffer manager library. Contribute to MaJerle/lwrb development by creating an account on GitHub.https://github.com/MaJerle/l…...

微信小程序Canvas画布绘制图片、文字、矩形、(椭)圆、直线

获取CanvasRenderingContext2D 对象 .js onReady() {const query = wx.createSelectorQuery()query.select(#myCanvas).fields({ node: true, size: true }).exec((res) => {const canvas = res[0].nodeconst ctx = canvas.getContext(2d)canvas.width = res[0].width * d…...

Unity Editor实用功能:Hierarchy面板的对象上绘制按按钮并响应

目录 需求描述上代码打个赏吧 需求描述 现在有这样一个需求&#xff1a; 在Hierarchy面板的对象上绘制按钮点击按钮&#xff0c;弹出菜单再点击菜单项目响应自定义操作在这里的响应主要是复制对象层级路路径 看具体效果请看动图&#xff1a; 注&#xff1a; 核心是对Edito…...

解决录制的 mp4 视频文件在 windows 无法播放的问题

解决录制的 mp4 视频文件在 windows 无法播放的问题 kazam 默认录制保存下来的 mp4 视频文件在 windows 中是无法直接使用的&#xff0c;这是由于视频编码方式的问题。解决办法&#xff1a; 首先安装 ffmeg 编码工具&#xff1a; sudo apt-get install ffmpeg 然后改变视频的…...

一键与图片对话!LLM实现图片关键信息提取与交互

本期文心开发者说邀请到飞桨开发者技术专家徐嘉祁&#xff0c;主要介绍了如何通过小模型与大模型的结合&#xff0c;解决数据分析中的问题。 项目背景 在智能涌现的大模型时代&#xff0c;越来越多的企业和研究机构开始探索如何利用大模型来提升工作效率&#xff0c;助力业务智…...

洛谷 P8833 [传智杯 #3 决赛] 课程 讲解

前言&#xff1a; 大家好&#xff01; 我们又见面啦~~~ 对于我20多天没上号&#xff0c;深表歉意&#xff01;&#xff01; 希望大家给我的account点一个赞&#xff0c;加一个粉丝&#xff0c;谢谢&#xff01; 也对CSDN的所有博主们送上衷心的祝福&#xff01; 如有错误…...

中国IT产经新闻:新能源汽车发展前景与燃油车的利弊之争

随着科技的进步和环保意识的提高&#xff0c;新能源汽车在全球范围内逐渐受到重视。然而&#xff0c;在新能源汽车迅速发展的同时&#xff0c;燃油车仍然占据着主导地位。本文将从新能源与燃油车的利弊、新能源汽车的发展前景两个方面进行分析&#xff0c;以期为读者提供全面的…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...