从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,一经查实,立即删除!

相关文章

[数组二分查找] 0209. 长度最小的子数组

文章目录 1. 题目链接2. 题目大意3. 示例4. 解题思路5. 参考代码 1. 题目链接 209. 长度最小的子数组 - 力扣(LeetCode) 2. 题目大意 描述:给定一个只包含正整数的数组 nums 和一个正整数 target。 要求:找出数组中满足和大于等…

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

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

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

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

centos和ubuntu有什么区别?

CentOS与Ubuntu的区别在于以下几个方面:1、源码基础不同;2、设计理念不同;3、使用场景不同;4、软件包管理不同;整体上看,CentOS更倾向于企业级服务器应用,稳定性较强;而Ubuntu更注重…

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

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

ELMo模型介绍:深度理解语言模型的嵌入艺术

ELMo模型介绍:深度理解语言模型的嵌入艺术 引言 在自然语言处理(NLP)领域,词嵌入(word embedding)是将词汇或短语从词汇表映射到向量的数学表示,这些向量能够捕捉词汇之间的语义和语法关系。E…

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

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

C++ 编程基础(8)模版 | 8.3、类模版

文章目录 一、类模版1、定义2、模板参数3、模版的实例化4、模版的特化5、模版成员函数6、总结 前言&#xff1a; 这里是引用 一、类模版 1、定义 类模板的定义以template关键字开始&#xff0c;后面跟着一个模板参数列表&#xff08;用尖括号< >包围&#xff09;。模板参…

HarmonyOS NEXT应用开发实战:十二、远场通信RCP简单好用的模块化封装

在进行HarmonyOS的应用开发中&#xff0c;我们常常需要进行网络通信。然而&#xff0c;原始的远场通信&#xff08;RCP&#xff09;使用方式较为繁琐&#xff0c;让人感到不够便捷。作为一位前期从事小程序开发的开发者&#xff0c;我深受小程序网络访问的简单性和便利性的吸引…

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

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

Tomcat 如何管理 Session

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

Flink vs Spark

Flink vs Spark Flink和Spark都是大数据处理领域的热门分布式计算框架&#xff0c;它们有各自的特点和优势&#xff0c;适用于不同的场景。本文对两者进行对比。 一、技术理念与架构 Flink&#xff1a; 基于事件驱动&#xff0c;面向流的处理框架。支持真正的流计算&#xff0c…

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

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

01 IP路由基础

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

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…

网络技术-路由协议

路由协议是网络中确保数据包能够有效地从源节点传递到目的节点的重要机制。以下是常见的几种路由协议&#xff1a; 一、根据算法分类 1.距离向量路由协议&#xff08;Distance Vector Routing Protocol&#xff09; RIP&#xff08;Routing Information Protocol&#xff09;&…

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

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

Java进阶四-异常,File

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

Gin 框架中的路由

1、路由概述 路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等) 组成的,涉及到应用如何响应客户端对某个网站节点的访问。 RESTful API 是目前比较成熟的一套互联网应用程序的 API 设计理论,所以我们设计我们的路 由的时候建议参考 …