从0开始机器学习--Day30--异常检测算法

异常检测算法(Anomaly detection algorithm)

我们定义异常检测算法的输出p(x) = p(x_{1};\mu_{1},\sigma_{1}^{2})p(x_{2};\mu_{2},\sigma_{2}^{2})p(x_{3};\mu_{3},\sigma_{3}^{2})...p(x_{n};\mu_{n},\sigma_{n}^{2}),也写作\prod_{j=1}^{n}p(x_{j};\mu_{j},\sigma_{j}^{2}),这里的每一项括号内代表的是每个特征x_{n}都符合各自的高斯分布(也就是正态分布),\mu代表均值,决定了模型的中心位置;\sigma^{2}代表方差,决定了模型的离散程度,越高则离散程度越低。这里用乘积的方式是因为假定每个特征都是独立的,那么每个特征同时满足的概率就是各自的乘积。以下是异常检测算法的步骤:

异常检测算法步骤

如图,第一步跟正常算法一样,都是选择特征量,但在这里建议选择一些比较能彰显正常样本的特征,因为此算法的目的是为了筛选出异常样本;第二步是选取数据组成训练集,并对均值和方差进行参数拟合;最后将拟合好的参数预测样本的特征带入公式中计算概率并判断是否小于一个极小值(如0.02)。

开发和评估异常检测系统(Developing and evaluating an anomaly detection systeam)

在之前,我们有提到过可以通过在算法应用的结果里加入一个返回值来评估算法优化的好坏,在这里我们用来评估异常检测系统。

首先,从开发开始,我们先把无标签的样本放入训练集,再将有标签的样本放入验证集和测试集来验证我们的算法,以飞机引擎为例,假设我们有10000个好的引擎数据和20个异常样本,将好的样本按照6:2:2的比例分别放入训练集、验证集和测试集中,再分别将10个异常样本放入验证集和测试集中。

接着便是利用训练集的数据来拟合p(x),并将验证集和测试集的样本用于该函数来预测结果。最后,我们计算F_{1},从而得出算法的精度和召回率(由于正常样本过多属于偏斜类问题,前面提到过这个时候用分类的正确率来评估是不准确的,其值会一直很高)。注意,在验证时要使用多个\varepsilon来确定哪个更合理,而不是直接任意取一个极小值。

注意,在验证集和测试集中,我们使用的是带标签的数据来测试函数,这与在解决监督学习问题时十分类似,但两者从定义和使用条件上有本质的区别。前者是大量的正常样本下,有极少量的异常样本,未来可能会出现新的异常样本,且多个异常样本之间很可能属于不同类,像引擎问题中的异常样本可能是零件问题,也有可能是燃油问题,这个时候我们只需要圈定正常样本的范围,其他边界以外的一律认为是异常样本即可,所以我们的训练集中放入的全都是无标签的正常样本;而后者则对样本量有要求,需要正常样本和异常样本都有很大的数量,且训练集中两者都有且都要有标签。

特征选取与处理(Features choosing and solving)

这里说的特征选取实际上是在第一次算法运行之后进行选择,当我们运行算法后,发现异常样本的特征值落在了正常样本的范围里,此时就需要我们返回训练集,通过观察其特征,试图加入一个新的特征(例如,可以通过构造一个数,其值通过正常数据特征除以异常数据特征计算得出的新特征,这样其比值变化便能帮助我们筛选出异常样本)来让算法在保证其他结果不变的情况下,筛选出这个异常样本,使其在后续拟合的函数中落在边界之外。

而特征的处理则比较简单,我们在将数据应用于算法在之前,可以先可视化数据,若其图像不符合高斯分布,可以通过数据转换(像指数函数,对数函数等等)使其数据分布性质符合高斯分布,从而让算法运行得更好。

多元高斯分布(Mul-variate gaussian distribu-on)

算法无法检测特殊异常样本

如图,正常样本的范围是在椭圆形里,但是普通异常检测算法的逻辑是判断两个特征各自的高斯函数值,实际上判断的是是否落在圆内,所以像图里在椭圆以外的异常样本无法检测出来。

鉴于此,我们不再分别对特征建模,而是构建一个整体的模型,也就是多元高斯分布模型。

多元高斯分布概率及参数公式

如图,与普通的高斯分布相比,多元的高斯分布依然是两个参数\mu,\Sigma,分别代表中心点和协方差矩阵,一个是n维向量,一个是n×n的矩阵,依然是前者决定中心位置,后者决定函数离散程度,只是后者可以改变矩阵右对角线的元素的值使得图像不再是轴对称而往其他方向偏移,也就是说普通高斯分布实际上就是当\Sigma是对角矩阵时的多元高斯分布。

一般当样本数量很大的时候,我们还是倾向于使用普通高斯分布模型,其计算成本较低,特殊的异常值我们可以通过手动构建新的特征来捕捉;而当样本数量较少时(100或1000),我们可以通过构建多元高斯分布来捕捉特殊异常,注意样本数量要远远大于特征的数量,这会导致协方差矩阵不可逆拟合不了参数,如果在此情况下矩阵还是不可逆,那么就需要检查一下是否有冗余特征,即x_{3}=x_{1}+x_{2} orx_{1}=x_{2}的情况出现。

视频学习来自:https://www.bilibili.com/video/BV1By4y1J7A5?spm_id_from=333.788.player.switch&vd_source=867b8ecbd62561f6cb9b4a83a368f691&p=95

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

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

相关文章

架构图解析:如何构建高效的微服务系统

在当今的数字化浪潮中,构建高效、灵活且可扩展的系统已成为企业的重要目标。微服务架构作为一种先进的软件设计模式,通过将复杂的应用程序分解为一系列小型、独立的服务,显著提升了系统的灵活性、可扩展性和维护性。本文将通过解析微服务系统…

排序排序的概念及其运用和选择排序

排序排序的概念及其运用和选择排序 7. 排序7.1 排序的概念及其运用7.2 选择排序算法——直接选择排序选择排序基本思想:直接选择排序选择排序原理参考程序 如何交换数据直接选择排序的特性总结: 7. 排序 7.1 排序的概念及其运用 排序:所谓排…

Websocket如何分块处理数据量超大的消息体

若我们服务端一次性最大处理的字节数是1M,而客户端发来了2M的数据,此时服务端的数据就要被切割成两次传输解码。Http协议中有分块传输,而在Websocket也可以分块处理超大的消息体。在jsr356标准中使用javax.websocket.MessageHandler.Partial可以分块处理…

【澜舟科技-注册/登录安全分析报告】

前言 由于网站注册入口容易被机器执行自动化程序攻击,存在如下风险: 暴力破解密码,造成用户信息泄露,不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 ,造成用户无法登陆、注册,大量收到垃圾短信的…

uni-app快速入门(十)--常用内置组件(下)

本文介绍uni-app的textarea多行文本框组件、web-view组件、image图片组件、switch开关组件、audio音频组件、video视频组件。 一、textarea多行文本框组件 textarea组件在HTML 中相信大家非常熟悉,组件的官方介绍见: textarea | uni-app官网uni-app,un…

Tomcat 如何管理 Session

Tomcat 如何管理 Session 我们知道,Tomcat 中每一个 Context 容器对应一个 Web 应用,而 Web 应用之间的 Session 应该是独立的,因此 Session 的管理肯定是 Context 级的,也就是一个 Context 一定关联多个 Session。 Tomcat 中主…

鸿蒙NEXT开发-用户通知服务的封装和文件下载通知

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

01 IP路由基础

一、路由器是怎么转发数据包 • 当数据包到达路由器之后,根据数据包的目的 IP 地址,查找 路由表,并根据路由表中相应的路由所指示出接口还有下一跳 指导数据包在网络中的转发。 • 如果路由器路由表没有路由怎么办? -------- 将数…

Android studio 呼叫盒app

一、权限文件 0.gradle切换国内源 #Fri Nov 08 15:46:05 CST 2024 distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip zipStoreBaseGRADLE_USER_HOME zipStorePathwrapper/dists1…

[Admin] Dashboard Filter for Mix Report Types

Background RevOps team has built a dashboard for sales team to track team members’ performance, but they’re blocked by how to provide a manager view based on sales’ hierarchy. Therefore, they seek for dev team’s help to clear their blocker. From foll…

2024年人工智能技术赋能网络安全应用测试:广东盈世在钓鱼邮件识别场景荣获第三名!

近期,2024年国家网络安全宣传周“网络安全技术高峰论坛主论坛暨粤港澳大湾区网络安全大会”在广州成功举办。会上,国家计算机网络应急技术处理协调中心公布了“2024年人工智能技术赋能网络安全应用测试结果”。结果显示,广东盈世计算机科技有…

Java进阶四-异常,File

异常 概念:代表程序出现的问题。 目的:程序出现了异常我们应该如何处理。 最高父类:Exception 异常分为两类 编译时异常:没有继承RuntimeException的异常,直接继承与Exception,编译阶段就会错误提示。运行时异常:RuntimeExc…

ERROR TypeError: AutoImport is not a function

TypeError: AutoImport is not a function 原因:unplugin-auto-import 插件版本问题 Vue3基于Webpack,在vue.config.js中配置 当unplugin-vue-components版本小于0.26.0时,使用以下写法 const { defineConfig } require("vue/cli-se…

Elasticsearch:更好的二进制量化(BBQ)对比乘积量化(PQ)

作者:来自 Elastic Benjamin Trent 为什么我们选择花时间研究更好的二进制量化而不是在 Lucene 和 Elasticsearch 中进行生产量化。 我们一直在逐步使 Elasticsearch 和 Lucene 的向量搜索变得更快、更实惠。我们的主要重点不仅是通过 SIMD 提高搜索速度&#xff0…

检查课程是否有效

文章目录 概要整体架构流程技术细节小结 概要 这是一个微服务内部接口,当用户学习课程时,可能需要播放课程视频。此时提供视频播放功能的媒资系统就需要校验用户是否有播放视频的资格。所以,开发媒资服务(tj-media)的…

红外遥控报警器设计(模电课设)

一、设计要求 利用NE555p芯片设计制作报警器。要求当有人遮挡红外光时发出报警信号,无人遮挡红外光时报警器不工作,即不发声。 二、元器件 555芯片:NE555P 集成运放:LM358 三级管:2N1711 蜂鸣器:HY-30…

Spring MVC——针对实习面试

目录 Spring MVC什么是Spring MVC?简单介绍下你对Spring MVC的理解?Spring MVC的优点有哪些?Spring MVC的主要组件有哪些?Spring MVC的工作原理或流程是怎样的?Spring MVC常用注解有哪些? Spring MVC 什么是…

机器学习(贝叶斯算法,决策树)

朴素贝叶斯分类 贝叶斯分类理论 假设现有两个数据集,分为两类 我们现在用p1(x,y)表示数据点(x,y)属于类别1(图中红色圆点表示的类别)的概率,用p2(x,y)表示数据点(x,y)属于类别2(图中蓝色三角形表示的类别)的概率,那么对于一个新数据点(x,y)…

题目讲解18 有效的括号

原题链接: 20. 有效的括号 - 力扣(LeetCode) 思路分析: 第一步:先搭建一个数据结构——栈。 typedef char STDataType; typedef struct Stack {STDataType* arr;int top, capacity; } Stack;//初始化 void StackIn…

HarmonyOS笔记5:ArkUI框架的Navigation导航组件

ArkUI框架的Navigation导航组件 在移动应用中需要在不同的页面进行切换跳转。这种切换和跳转有两种方式:页面路由和Navigation组件实现导航。HarmonyOS推荐使用Navigation实现页面跳转。在本文中在HarmonyOS 5.0.0 Release SDK (API Version 12 Release)版本下&…