12.异常检测

news2025/2/13 12:58:53

12.1 异常检测的应用

异常检测最常见的应用是欺诈检测;

如果你有很多用户,每个用户都在从事不同的的活动,你可以对不同的用户活动计算特征变量x^{(i)},然后可以建立一个模型来表示用户表现出各种行为的可能性,用来表示用户行为对应的特征向量。最后可以用建立的模型p(x)来发现网站上行为奇怪的用户,只需要查看哪些用户的p(x)概率小于\varepsilonp(x)< \varepsilon

第二类应用就是工业制造方面,比如飞机引擎问题;

第三类应用就是数据中心的计算机监控。

12.2 高斯分布(正态分布)

可以用高斯分布来进行异常检测

 什么是参数估计?

假设有一个数据集,其中有m个样本,从x^{(1)},...,x^{(m)},假设它们都是实数。参数估计就是:猜测这些样本来自一个高斯分布的总体,每个样本x^{(i)}服从高斯分布(x^{(i)}\sim N(\mu ,\sigma ^2)),通过给定的数据集能够估算出\mu\sigma ^2

\mu =\frac{1}{m}\sum_{i=1}^{m}x^{(i)}\sigma ^2 = \frac{1}{m}\sum_{i=1}^{m}\left ( x^{(i)}-\mu \right )^2(极大似然估计)

其中\frac{1}{m}可以替换成\frac{1}{m-1}

利用高斯分布来构建一个异常检测算法

计算m个数据集在每一个维度上的\mu\sigma ^2,然后根据p(x)得到一个概率\varepsilon,根据概率的大小来定义是否为异常行为。

异常检测算法的步骤

  1. 选择特征量,它会帮助我们指出那些反常的样本;
  2. 给出训练集,也就是m个未作标记的样本;
  3. 给出一个新案例,计算p(x)的值,如果这个概率值很小,就将这一项标为异常

12.3 评估异常检测算法

评估的作用:需要决定是否纳入新的特征,如果分别在纳入该特征和不纳入该特征情况下运行算法,然后算法返回一个数字来告诉你这个特征对算法的影响是好是坏。这样的话,就能更简单地决定是否纳入这个新特征。

 12.4 异常检测vs监督学习

在异常检测中,当时我们开始用了一些带有标签的数据,使用了一些例子,这些例子要么正常要么异常。相应地,我们用y=1或者y=0来标记,那么问题来了,我也可以用监督学习来处理这些数据,为什么要用异常检测呢?

在异常检测中,负样本很多,正样本很少(负样本是普通样例,正样本是异常样例) 。而在监督学习中,正样本和负样本的占比都差不多。对异常检测算法的理解:对正常的数据建模,异常的不管,只要不是正常的就是异常的。

异常检测和监督学习的应用

 12.5 如何选择特征来实现异常检测

问题1:如果画出的数据直方图不像高斯分布,可以通过调整参数,来让数据更接近高斯分布。

 问题2:如何得到异常检测算法的特征?

通过一个误差分析步骤:先完整地训练出一个算法,然后在一组交叉验证集上运行算法,找出哪些预测出错的样本并且尝试能否找到一些其他的特征来帮助学习算法,让那些在交叉验证集中判断出错的样本表现得更好。

12.6 多元高斯分布

两种特征虽然都是显示数据正常,但是特征组合在一块后就异常。

异常检测算法,往往是把\mu附近的数据认为是高频率出现的,表现在图像上类似一个圆形。在一些情况下数据并不是规则分布,单变量的高斯分布不能体现拟合椭圆形状。

因此就引入了多元高斯分布的概念。多变量高斯分布引入了协方差矩阵,通过修改矩阵的值来改变高斯分布的情况。(用于衡量两个变量的总体的误差)

\Sigma可以理解为每个特征的缩放比例,这样就可以拟合更多的数据分布。

 

12.7 多元高斯分布的应用

多元高斯分布的公式:p(x;\mu,\Sigma)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}exp\left ( -\frac{1}{2}(x-\mu)^{T}\Sigma^{-1}(x-\mu) \right )

 开发一个应用多元高斯分布的异常检测

  1. 首先利用数据集来拟合模型;
  2. 当有一个新样本x,需要用多元高斯分布的公式来计算p(x),如果得出的值比\varepsilon小就做异常标记;

 

传统高斯分布与多元高斯分布的关系:传统的高斯分布实际上是多变量高斯分布的特殊形式,对应矩阵在非对角线上的数为0。非多元高斯分布算法也可以用协方差矩阵表示计算过程,对角协方差矩阵暗示各个特征之间是相互独立的,当应用多元正态分布时,暗示特征之间是非相互独立的。单独高斯模型只是做伸缩变换,而多元可以伸缩和旋转。

 如何在单独高斯分布与多元高斯分布之间选择?

传统的模型需要手动构造异常特征的组合,多变量可以自动的捕捉。 不过多变量的计算复杂度高一些。

 冗余特征在线性代数中就是线性相关的意思。

 

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

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

相关文章

LiangGaRy-学习笔记-Day22

1、shell工具-tput 这个是tput bash工具 具体的操作如下&#xff1a; tput clear&#xff1a;清屏tput cup Y X 第Y行&#xff0c;第X列的位置 tput bold&#xff1a;字体加粗tput sgr0 &#xff1a; 重置命令tput setaf n n&#xff1a;代表数字0-7 0黑色1红色2绿色3黄色4蓝…

【Protobuf速成指南】Map类型的使用

文章目录 2.4 map 类型一、 基本认识二、map相关函数4.3 contact2.4的改写 2.4 map 类型 本系列文章将通过对通讯录项目的不断完善&#xff0c;带大家由浅入深的学习Protobuf的使用。这是Contacts的2.4版本&#xff0c;在这篇文章中将带大家学习Protobuf的 map 语法&#xff0c…

Java自制绘图软件

引言 在大连时接触了Java&#xff0c;Java非常优雅&#xff0c;我非常喜欢。期末老师要做一个项目作品&#xff0c;看着windows自带的画图软件&#xff0c;我决定自己动手做一个绘图软件。经过无数次界面调试&#xff0c;刷新层叠关系令我爆肝了一个月&#xff0c;最终完成了这…

没有AI歌手一键包,纯纯的算法项目

项目地址&#xff1a; https://github.com/PlayVoice/so-vits-svc-5.0 来源丨元语音技术 本项目的目标群体是&#xff1a;深度学习初学者&#xff0c;具备Pyhon和PyTorch的基本操作是使用本项目的前置条件&#xff1b; 本项目旨在帮助深度学习初学者&#xff0c;摆脱枯燥的纯…

2023年6月最新|大屏可视化

大屏可视化 一、可视化适配 大屏下显示一般都是16:9尺寸 1920*1080 &#xff0c;做适配也就是在这个比例的基础上进行的 方案一&#xff1a;打开VSCode终端&#xff0c;下载flexible npm i lib-flexible修改源码 要修改的源码的路径&#xff1a; 项目/mode_modules/lib-fl…

Springboot+Vue服务器盲盒活动

文章目录 一、项目要求二、说明文档1、用户抽奖主页/raffle2、多种奖品链接1、奖品1 discont /discount2、奖品2 CPU upgrade /cpu3、奖品3 Memory upgrade /memory4、奖品4 Increase duration /duration5、奖品5 Send to server /server6、奖品6 Configuration upgrade /upgra…

信必优成功案例-全球Tops汽车技术供应商

该集团是全球Tops汽车技术供应商&#xff0c;业务范围涵盖了汽油系统、柴油系统、汽车底盘控制系统、汽车电子驱动、起动机与发电机、电动工具、家用电器、传动与控制技术、热力技术和安防系统等。信必优于2021年开始为该客户服务&#xff0c;参与了客户多个项目&#xff0c;以…

Android进阶 四大组件的工作过程(二):Service的工作过程

Android进阶 四大组件的工作过程&#xff08;二&#xff09;&#xff1a;Service的工作过程 导语 本片文章主要是来介绍Service组件的工作过程的&#xff0c;主要分成Service的启动和Service的绑定两个部分来讲。上一篇文章我们已经介绍了Activity的工作工程&#xff0c;而Ser…

Windows软件:如何安装ideaIU-2020.3.3并使用无限重置插件达到永久使用

​前言&#xff1a; ​在我们做SpringBoot Java项目时&#xff0c;一个好的开发工具可以让我们的效率达到事半功倍&#xff0c;早期的eclipse已经无法满足我们日常需求&#xff0c;当然idea集成开发工具在很早前就已经进入市场&#xff0c;如今取得了无法撼动的地位&#xff0c…

度学习pytorch实战六:ResNet50网络图像分类篇自建花数据集图像分类(5类)超详细代码

1.数据集简介、训练集与测试集划分 2.模型相关知识 3.model.py——定义ResNet50网络模型 4.train.py——加载数据集并训练&#xff0c;训练集计算损失值loss&#xff0c;测试集计算accuracy&#xff0c;保存训练好的网络参数 5.predict.py——利用训练好的网络参数后&#xff0…

为Nomad Web使用添加快捷应用图标

大家好&#xff0c;才是真的好。 上次我们说到Nomad Web已经更新到了1.0.8版本&#xff0c;作为未来的“Notes客户机”&#xff08;运行在浏览器中&#xff09;&#xff0c;Nomad Web的更新迭代很快。从1.0.5版本开始&#xff0c;就可以直接部署在Domino服务器上&#xff0c;而…

STM32MP157_PRO开发板的第一个驱动程序

文章目录 目的&#xff1a;为什么编译驱动程序之前要先编译内核&#xff1f;编译内核编译设备树编译安装内核模块编译内核模块安装内核模块到 Ubuntu 的NFS目录下备用 安装内核和模块到开发板上编译 led 驱动在开发板安装驱动模块下载驱动程序安装驱动模块 目的&#xff1a; 在…

Netty实战(十三)

WebSocket协议&#xff08;一&#xff09; 一、什么是WebSocket 协议二、简单的 WebSocket 程序示例2.1 程序逻辑2.2 添加 WebSocket 支持2.3 处理 HTTP 请求2.4 处理 WebSocket 帧 一、什么是WebSocket 协议 WebSocket 协议是完全重新设计的协议&#xff0c;旨在为 Web 上的双…

读书笔记-《ON JAVA 中文版》-摘要16[第十六章 代码校验]

文章目录 第十六章 代码校验1. 测试1.1 单元测试1.2 JUnit1.3 测试覆盖率的幻觉 2. 前置条件2.1 断言&#xff08;Assertions&#xff09;2.2 Java 断言语法2.3 Guava 断言2.4 使用断言进行契约式设计2.4.1 检查指令2.4.2 前置条件2.4.3 后置条件2.4.4 不变性2.4.5 放松 DbC 检…

Frida技术—逆向开发的屠龙刀

简介 Frida是一种基于JavaScript的动态分析工具&#xff0c;可以用于逆向开发、应用程序的安全测试、反欺诈技术等领域。Frida主要用于在已安装的应用程序上运行自己的JavaScript代码&#xff0c;从而进行动态分析、调试、修改等操作&#xff0c;能够绕过应用程序的安全措施&a…

路径规划算法:基于人工电场优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于人工电场优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于人工电场优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

【Leetcode60天带刷】day06哈希表——242.有效的字母异位词,349. 两个数组的交集,202题. 快乐数,1. 两数之和

题目&#xff1a;242.有效的字母异位词 Leetcode原题链接&#xff1a;242. 有效的字母异位词 思考历程与知识点&#xff1a; 如果一个字母一个字母的找&#xff0c;也就是暴力&#xff0c;用两个for的话时间复杂度是O(N^2)&#xff1b; 我们可以换个思路&#xff0c;a~z一共…

Telerik Report Server R2 2023

Telerik Report Server R2 2023 仪表报告项-使用仪表或类似表盘的显示提供数据的可视化表示。 报告项上的AccessibleRole属性-ARIA(可访问的富Internet应用程序)支持已显著改进。在Web上&#xff0c;当启用了辅助功能时&#xff0c;呈现的报表项包含预定义的辅助功能角色。这样…

(七)矢量数据的空间分析——叠置分析①

矢量数据的空间分析——叠置分析 叠置分析是将代表不同主题的各个数据层面进行叠置&#xff0c;产生一个新的数据层面&#xff0c;叠置结果综合了原来两个或多个层面要素所具有的属性。 叠置分析不仅生成了新的空间关系&#xff0c;而且还将输入的多个数据层的属性联系起来产…

随机的乐趣和游戏

1、猜数字游戏 #GuessingGame.py import random the_number random.randint(1, 10) print("计算机已经在1到10之间随机生成了一个数字&#xff0c;") guess int(input("请你猜猜是哪一个数字: ")) while guess ! the_number:if guess > the_number:p…