机器学习之非监督学习(二)异常检测(基于高斯概率密度)

news2024/11/15 8:06:44

机器学习之非监督学习(二)异常检测(基于高斯概率密度)

  • 0. 文章传送
  • 1.案例引入
  • 2.高斯正态分布
  • 3.异常检测算法
  • 4.异常检测 vs 监督学习
  • 5.算法优化

0. 文章传送

机器学习之监督学习(一)线性回归、多项式回归、算法优化[巨详细笔记]
机器学习之监督学习(二)二元逻辑回归
机器学习之监督学习(三)神经网络基础
机器学习之监督学习(四)决策树和随机森林
机器学习之实战篇——预测二手房房价(线性回归)
机器学习之实战篇——肿瘤良性/恶性分类器(二元逻辑回归)
机器学习之实战篇——MNIST手写数字0~9识别(全连接神经网络模型)
机器学习之非监督学习(一)K-means 聚类算法
机器学习之实战篇——图像压缩(K-means聚类算法)

1.案例引入

假设你是飞机生产商,生产了一批飞机发动机,并记录其两个特征x1(heat)和x2(vibration)。由于我们的生产技术过硬,可以相信其中大多数发动机能够正常工作。从机器学习的角度出发,那么我们能否充分利用已有的发动机数据,用来检测后续生产的发动机是否异常呢?这就是典型的异常监测任务。

如下图所示,可以根据数据建立概率密度分布模型,对于新的测试数据,若其位置对应的概率小于某个设定阈值,则可将其标记为‘异常。’
在这里插入图片描述
再举一个例子,数据中心可以通过用户电脑工作的实时数据(例如内存使用、CPU使用率)监测用户电脑是否异常,发现潜在的风险,例如计算机被攻击或感染恶意软件。一旦检测到异常,系统可以自动提醒用户注意,或向 IT 支持团队发送警报进行进一步检查,以保障用户体验和数据安全性。
在这里插入图片描述

2.高斯正态分布

在这里插入图片描述
高斯正态分布(Gaussian Normal Distribution)是概率统计中最重要和最常用的分布之一。它在许多自然现象中都有广泛的应用。以下是关于高斯正态分布的详细介绍:

  1. 定义
    高斯正态分布是一个连续概率分布,其概率密度函数(PDF)由以下公式给出:

p ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 p(x) = \frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{(x - \mu)^2}{2\sigma^2}} p(x)=2π σ1e2σ2(xμ)2

其中:
μ 是均值(mean),决定了分布的中心位置。
σ 是标准差(standard deviation),影响分布的宽度和形状。
σ^2是方差(variance),表示数据的离散程度。

  1. 特性
    对称性:高斯正态分布是一个对称分布,均值 \muμ 是其对称中心。
    钟形曲线:概率密度函数图形呈现为钟形曲线,具有单峰性,意味着大多数数据集中在均值附近。
    68-95-99.7法则:在高斯分布中,约68%的数据点位于均值的一个标准差内 ( μ − σ 到 μ + σ ) (\mu - \sigma到 \mu + \sigma) μσμ+σ,约95%位于两个标准差内,99.7%位于三个标准差内。
    渐近性:分布在无限远处趋向于零,但永远不会等于零。
  2. 标准正态分布
    标准正态分布是特殊的高斯分布,其均值为0,标准差为1。其概率密度函数为:

p ( z ) = 1 2 π e − z 2 2 p(z) = \frac{1}{\sqrt{2\pi}} e^{-\frac{z^2}{2}} p(z)=2π 1e2z2

其中 z 是标准分数(z-score),定义为: z = x − μ σ z = \frac{x - \mu}{\sigma} z=σxμ.

通过标准化,可以将任意高斯分布转换为标准正态分布。

3.异常检测算法

在异常检测中,我们需要建立概率密度分布模型,通常假设每个特征满足正态分布。
x i ~ N ( μ i , σ i 2 ) , p ( x i ) = 1 2 π σ i e − ( x − μ i ) 2 2 σ i 2 x_i~N(\mu_i,\sigma_i^2),p(x_i)=\frac{1}{\sqrt{2\pi}\sigma_i}e^{-\frac{(x-\mu_i)^2}{2\sigma_i^2}} xiN(μi,σi2),p(xi)=2π σi1e2σi2(xμi)2
其中均值和标准差(无偏估计)的计算公式为:
μ i = 1 m ∑ k = 1 m x i ( k ) , σ i = 1 m − 1 ∑ k = 1 m ( μ i − x i ( k ) ) 2 \mu_i=\frac{1}{m}\sum_{k=1}^{m}x_i^{(k)},\sigma_i=\sqrt{\frac{1}{m-1}\sum_{k=1}^{m}(\mu_i-x_{i}^{(k)})^2} μi=m1k=1mxi(k),σi=m11k=1m(μixi(k))2
考虑多个特征,理想情况是考虑各个特征之间相互独立,则由概率公式可得
p ( x ) = ∏ j p ( x j ; μ j , σ j 2 ) p(x)=\prod_j{p(x_j;\mu_j,\sigma_j^2)} p(x)=jp(xj;μj,σj2)

尽管通常情况下各个特征之间不完全独立,但事实表明这种计算方式能取得较好的模型效果。

设置异常检测的临界概率(阈值) ϵ \epsilon ϵ,对于待检测样本,计算其概率p(x)并与 ϵ \epsilon ϵ比较,如果p(x)< ϵ \epsilon ϵ,则将其检测为异常样本。

在异常检测中,如何确定合适的阈值 ϵ \epsilon ϵ?在前面的系列文章中我们提到,对于参数选择,一种有效方式是引入验证集,通过验证效果来决定理想的参数。

如下图所示,假设我们已知有10000台正常发动机和20台异常发动机,这时可以选择6000台正常发动机作为训练集(符合算法假设);然后选择2000台正常发动机和10台异常发动机作为验证集;剩下的部分作为测试集。

由于异常检测任务归类于分类问题,因此评估的参数包括混淆矩阵、召回率、精确率、F1-score等等。通过选取不同的阈值,比较验证效果,来选择最优阈值。
同样的,测试集上的表现可以用这些分类指标进行评估。
在这里插入图片描述

4.异常检测 vs 监督学习

异常检测属于非监督学习,训练集中的数据均未带标签(默认正常),但我们可能拥有少量带标签的数据(例如发动机案例中已知少量异常发动机),这时候使用监督学习分类算法也可行,那如何在监督学习和基于概率的异常检测之间进行选择呢?

一般来说,异常检测通常适用的情况如下:
①我们只有少量异常数据和大量正常数据
②异常种类很多,未来新的样本可能出现新的异常情况,算法很难从已有数据中捕获足够的异常信息。

监督学习更适用的情况如下:
①我们有大量的正常和异常数据
②异常种类可枚举或未来新的样本呈现的异常情况具有重复性。
在这里插入图片描述
适合两种算法的典型场景如下图所示:
在这里插入图片描述

5.算法优化

在异常检测任务中,选取和构建合适的特征非常重要,因为基本假设是特征满足正态分布,因此对于偏离正态分布较大的特征,我们希望通过特征处理,将其分布趋近于正态分布。

如下图所示,绘制了某个特征的直方图,可以看到分布曲线向左偏移,偏离正态分布较大。这时候可以通过取对数函数 l o g ( x + c ) log(x+c) log(x+c),或取幂函数 x c ( 0 < c < 1 ) x^c(0<c<1) xc(0<c<1),调整分布接近正态分布。这一过程可以通过编程尝试不同参数c实现。
在这里插入图片描述
异常检测中另一种有效的优化方法是通过误差分析引入新的特征。例如在线上交易安全检测器中,我们选取了特征x1(表示交易量)作为特征,训练好模型后进行验证时发现一个错误的案例,发现该案例用户打字速度异常快,因此可以引入新的特征x2:打字速度。这样建立的模型取得了更好的分类效果。
在这里插入图片描述
再比如在电脑检测案例中,如果发现一台电脑具有很的高CPU使用率,却使用了很少的网络流量,基于此异常情况可以构建新的特征(如下图,可以取比值)。
在这里插入图片描述
特征工程的手段灵活而丰富,但最终的目的都是提升模型的检测能力,在验证集和测试集中都能取得满意的表现。

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

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

相关文章

VMware安装CentOS7及其初始化配置教程

安装准备 VMware Workstation Pro 17&#xff1a;下载及安装教程 CentOS 7下载地址&#xff1a;centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 创建虚拟机 安装CentOS7 鼠标点一下屏幕中间&#xff0c;就可以进入虚拟机&#xff0c;按向上箭头选择安装&#xff0…

EECS498 Deep Learning for Computer Vision (一)软件使用指南

#最近开始学习深度学习的相关基础知识&#xff0c;记录一下相关笔记及学习成果# learning&#xff1a;building artificial systems that learn from data and experience deep learning(a set of machine learning): hierarchical learning algorithms with many "laye…

【基础算法总结】模拟篇

目录 一&#xff0c;算法介绍二&#xff0c;算法原理和代码实现1576.替换所有的问号495.提莫攻击6.Z字形变换38.外观数列1419.数青蛙 三&#xff0c;算法总结 一&#xff0c;算法介绍 模拟算法本质就是"依葫芦画瓢"&#xff0c;就是在题目中已经告诉了我们该如何操作…

helm安装promethues

1、添加 Helm 仓库&#xff1a; helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update 2、安装 Prometheus&#xff1a;安装promtheus到monitor名称空间中 kubectl create ns monitor helm search repo prometheus #查…

【WSL迁移】将WSL2迁移到D盘

首先查看WSL状态&#xff1a;wsl -l -v 以压缩包的形式导出到其他盘。 wsl --export Ubuntu D:\Ubuntu_WSL\ubuntu.tar 注销原有的linux系统 wsl --unregister Ubuntu 导入系统到D盘 wsl --import Ubuntu D:\Ubuntu_WSL D:\Ubuntu_WSL\Ubuntu.tar 恢复默认用户 Ubuntu co…

Python编码系列—Python策略模式:灵活应对变化的算法策略

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

后端-navicat查找语句(单表与多表)

表格字段设置如图 语句&#xff1a; 1.输出 1.输出name和age列 SELECT name,age from student 1.2.全部输出 select * from student 2.where子语句 1.运算符&#xff1a; 等于 >大于 >大于等于 <小于 <小于等于 ! <>不等于 select * from stude…

大学生必看!60万人在用的GPT4o大学数学智能体有多牛

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作者&#x1…

Spring框架总体结构

1. Spring是什么 Spring 是一个开源框架 Spring 为简化企业级应用开发而生&#xff0c;使用 Spring 可以使简单的 JavaBean实现以前只有 EJB 才能实现的功能 Spring 是一个 IOC(DI) 和 AOP 容器框架 具体描述 Spring 轻量级&#xff1a;Spring 是非侵入性的 - 基于 Spring 开发…

【24华为杯数模研赛赛题思路已出】国赛B题思路丨附参考代码丨免费分享

2024年华为杯研赛B题解题思路 B题 WLAN组网中网络吞吐量建模 问题1 请根据附件WLAN网络实测训练集中所提供的网络拓扑、业务流量、门限、节点间RSSI的测试基本信息&#xff0c;分析其中各参数对AP发送机会的影响&#xff0c;并给出影响性强弱的顺序。通过训练的模型&#xff…

撤销与恢复的奥秘:设计模式之备忘录模式详解

备忘录模式 &#x1f3af; 备忘录模式&#xff08;Memento Pattern&#xff09;简介 备忘录模式 是一种行为型设计模式&#xff0c;用于保存对象的某一时刻状态&#xff0c;以便稍后可以恢复到该状态&#xff0c;而不破坏对象的封装性。备忘录模式将对象的状态封装在一个独立的…

技术周总结 09.16~09.22 周日(架构 C# 数据库)

文章目录 一、09.16 周一1.1&#xff09;问题01&#xff1a; 软件质量属性中"质量属性场景"、"质量属性环境分析"、"质量属性效用树"、"质量属性需求用例分析"分别是什么&#xff1f;1.2&#xff09;问题02&#xff1a; 软件质量属性中…

机器学习(1)sklearn的介绍和六个主要模块、估计器、模型持久化

文章目录 1.sklearn介绍2.sklearn的模块3.监督学习和无监督学习1. 监督学习 (Supervised Learning)例子 2. 无监督学习 (Unsupervised Learning)例子 4.估计器估计器的主要特性和方法包括&#xff1a;估计器的类型&#xff1a;示例&#xff1a;使用 scikit-learn 中的估计器 5.…

用最通俗易懂的语言和例子讲解三维点云

前言&#xff1a; 我整体的学习顺序是看的按B站那“唯一”的三维点云的视频学习的&#xff08;翻了好久几乎没有第二个...&#xff09;对于深度学习部分&#xff0c;由于本人并没有进行学习&#xff0c;所以没有深究。大多数内容都进行了自己的理解并找了很多网络的资源方便理解…

JavaScript可视化示例

JavaScript 可视化是指使用 JavaScript 编程语言来创建和操作图形、图表、动画等视觉元素的过程。以下是一些常见的 JavaScript 可视化库和工具&#xff0c;以及它们的主要特点&#xff1a; 1. D3.js 特点: D3.js&#xff08;Data-Driven Documents&#xff09;是一个非常强大…

MySQL高阶之存储过程

什么是存储过程? 存储过程可称为过程化SQL语言&#xff0c;是在普通SQL语句的基础上增加了编程语言的特点&#xff0c;把数据操作语句(DML)和查询语句(DQL)组织在过程化代码中&#xff0c;通过逻辑判断、循环等操作实现复杂计算的程序语言。 换句话说&#xff0c;存储过程其实…

Linux常用命令 笔记

Linux常用指令 查看命令ls 列出指定路径下的文件和目录cd 切换目录绝对路径相对路径 pwd 查看当前路径的绝对路径touch 创建空文件cat 显示文件内容echo 显示内容 & 写入文件vim 文本编辑器打开文件编辑文件保存退出 mkdir 创建目录rm 删除文件&目录删除文件删除目录 定…

java重点学习-设计模式

十三 设计模式 工厂模式&#xff1a;spring中使用&#xff08;目的是&#xff1a;解耦&#xff09; 1.简单工厂 所有的产品都共有一个工厂&#xff0c;如果新增产品&#xff0c;则需要修改代码&#xff0c;违反开闭原则是一种编程习惯&#xff0c;可以借鉴这种编程思路 2.工厂方…

分布式锁优化之 防死锁 及 过期时间的原子性保证(优化之设置锁的过期时间)

文章目录 1、AlbumInfoApiController --》testLock()2、AlbumInfoServiceImpl --》testLock()3、问题&#xff1a;可能会释放其他服务器的锁。 在Redis中设置一个名为lock的键&#xff0c;值为111&#xff0c;并且只有在该键不存在时才设置&#xff08;即获取锁&#xff09;。同…

为解决bypy大文件上传报错—获取百度云文件直链并使用Aria2上传文件至服务器

问题描述 一方面组内的服务器的带宽比较小&#xff0c;另一方面使用bypy方式进行大文件(大于15G)上传时会报错&#xff08;虽然有时可以成功上传&#xff0c;但是不稳定&#xff09;&#xff1a; 解决方式 总体思路: 获得云盘需要下载文件的直链复制直链到服务器中使用自带…