机器学习笔记-18

异常检测问题

异常检测虽然主要用于无监督学习问题上,但是和监督学习问题很相似。

异常检测(Anomaly Detection):给定正确样本集{ x ( 1 ) , x ( 2 ) . . . x ( n ) x^{(1)},x^{(2)}...x^{(n)} x(1),x(2)...x(n)},记新样本即要检测的样本为 x t e s t x_{test} xtest。对x进行建模即画出x的概率分布图像p(x),将 x t e s t x_{test} xtest代入 p ( x t e s t ) p(x_{test}) p(xtest),给定阈值 ε \varepsilon ε,如果 p ( x t e s t ) < ε p(x_{test})<\varepsilon p(xtest)<ε则代表着 x t e s t x_{test} xtest在原本样本集中出现的概率很小,标记为异常。如果 p ( x t e s t ) ≥ ε p(x_{test})\ge\varepsilon p(xtest)ε,标记为正常。

在APP中,异常检测通常用于做欺诈检测:通过对正常用户的建模寻找可能存在的非法用户、异常用户进行处理。

在工业上异常检测通常用于检测产品的质量,对符合标准的产品进行建模,对新生产好的产品进行检测查看是否需要进一步测试。

1. 高斯分布

高斯分布也就是正态分布。
参数估计:参数估计就是给定一个数据集估算出 μ 和 σ 2 \mu 和\sigma^2 μσ2的值。

μ = 1 m ∑ i = 1 m x ( i ) \mu =\frac{1}{m}\sum_{i=1}^{m}x^{(i)} μ=m1i=1mx(i)
σ 2 = 1 m ∑ i = 1 m ( x ( i ) − μ ) 2 \sigma ^2=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu )^2 σ2=m1i=1m(x(i)μ)2

通俗来讲 μ \mu μ就是均值, σ 2 \sigma^2 σ2就是方差

2. 用高斯分布推导异常检测算法

在这里插入图片描述
首先选择一些对出现异常问题时反应较大的特征,给出训练集{ x ( 1 ) , x ( 2 ) . . . x ( n ) x^{(1)},x^{(2)}...x^{(n)} x(1),x(2)...x(n)}求出对应的{ μ ( 1 ) , μ ( 2 ) . . . μ ( n ) \mu_{(1)},\mu_{(2)}...\mu_{(n)} μ(1),μ(2)...μ(n)}和{ σ ( 1 ) 2 , σ ( 2 ) 2 . . . σ ( n ) 2 \sigma^2_{(1)},\sigma^2_{(2)}...\sigma^2_{(n)} σ(1)2,σ(2)2...σ(n)2}。将新样本代入求出的正态分布函数中求概率, 如果小于阈值 ε \varepsilon ε就标注为异常。

这里的 x j x_j xj是指 x x x这个新样本在各个方向上的投影值,或者说是 x x x这个特征向量中的各个特征的值。

3. 评估异常检测算法

前面有说过对于算法来讲,我们进行评估的时候往往需要判断很多事情才能得出算法的优劣,所以使用数字指标会方便很多。对于异常检测算法我们同样使用数字指标去评估算法的好坏,具体如下:

将正常样本赋值y=1,异常样本赋值y=0。一共选取10000+40个样本,其中10000个样本是正常的,40个样本是异常的。将10000个样本按照6:2:2的比例分为训练集、验证集和测试集,40个样本按照1:1的比例放导验证集和测试集中。至此训练集中包含6000个正常样本,验证集中包含2000个正常样本和20个异常样本,测试集中包含2000个正常样本和20个异常样本。

虽然给正常样本异常样本赋值y但是这本质上还是无监督问题不是监督问题。

用训练集中的6000个正常样本进行异常检测算法求出 μ 、 σ 2 \mu、\sigma^2 μσ2后,得到p(x)。求出验证集和测试集中的样本的p(x)判断y值并与真正结果相比较,计算查准率和召回率得出F值,判断异常检测算法的好坏。
在这里插入图片描述
也可以使用之前的模型选择方法定义阈值 ε \varepsilon ε,求出p(x)后使用不同的 ε \varepsilon ε在验证集上进行检验,选取F值最高的 ε \varepsilon ε在测试集上进行检验。

4. 异常检测算法和监督学习算法的取舍

相信会有一些人觉得上面的异常检测算法很像监督学习的方法,也会疑惑为什么不直接用监督学习的算法进行异常检测,现在对二者进行取舍:
在这里插入图片描述
当出现👆偏斜类问题时,选择异常检测算法。
在这里插入图片描述
当出现异常有很多类型而且未来可能出现没出现过的异常时,选择异常检测算法。
二者实际应用对比:
在这里插入图片描述
5. 如何选择异常检测算法的特征

通常使用误差分析确定一场算法的特征,和之前监督学习算法的误差分析很像。

先完整的训练出一个算法,在一组验证集上运行算法,找出预测出错的样本提取共同特征改善算法。
特征矫正(非官方叫法):当我们选取完特征后,在选取样本时最好查看他的图像是否能够满足正太分布。
输入一个特征 x x x的一组值,画出图像(octave中hist函数),如果图像和正态分布很像就不用调整,如果不像就调整一下使其像正态分布。

调整手段:取对数等数学变形。

如:初始图象如下图的集合
在这里插入图片描述
经过①处理后变成了下图
在这里插入图片描述
经过②处理后变成了下图

在这里插入图片描述

在这里插入图片描述
6. 多元高斯分布
多元高斯分布和高斯分布的不同是多元高斯分布并不分别对每个特征进行高斯建模,而是一次性将所有特征值建模成一个高斯函数。
在这里插入图片描述
Σ \Sigma Σ就是PCA中的协方差矩阵。

det(A) %求矩阵A的行列式的octave代码

在这里插入图片描述
👆是多元高斯分布的表达式,接下来会用多元高斯分布构建异常检测算法。
在这里插入图片描述
👆参数估计。
在这里插入图片描述
👆将新的样本代入p(x)进行检验,如果小于阈值就标注异常。

实际上,最开始的模型在这里插入图片描述
就是当 Σ \Sigma Σ矩阵主对角线是方差、非主对角线元素都是0时的多元高斯分布模型。

那么如何在两个模型之间选择呢?
在这里插入图片描述

原始模型被使用的更多一些,但多元高斯模型在捕捉不同特征之间关系方面更加灵活。如果想要使用原始模型去对特征之间的关系进行综合比较需要创建一个新特征如两个原本特征的比值等等,但是多元高斯模型可以自动捕捉这些关系;原始模型的计算成本较低,能够使用大规模运算,多元高斯模型的运算代价就比较大,当数据量较大时可能成本会很高;对于训练集较小的情况下原始模型也可以很好的运行,但是多元高斯模型需要样本数量>特征数量才可以,不然 Σ \Sigma Σ不可逆不能运行。

吴恩达老师的选择方法:
当样本数量 ≥ \ge 特征数量的十倍时,选用多元高斯模型;其余选用原始模型。

Σ \Sigma Σ不可逆时,一方面是样本数量小于特征数量,再就是特征线性相关(即存在冗余特征)。

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

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

相关文章

eNSP-抓包解析HTTP、FTP、DNS协议

一、环境搭建 1.http服务器搭建 2.FTP服务器搭建 3.DNS服务器搭建 二、抓包 三、http协议 1.HTTP协议&#xff0c;建立在FTP协议之上 2.http请求 3.http响应 请求响应报文参考&#xff1a;https://it-chengzi.blog.csdn.net/article/details/113809803 4.浏览器开发者工具抓包…

002-ChatGLM4接入Langchain

智谱AI GLM-4 新一代基座大模型GLM-4,整体性能相比GLM3全面提升60%,逼近GPT-4;支持更长上下文;更强的多模态;支持更快推理速度,更多并发,大大降低推理成本;同时GLM-4增强了智能体能力。 基础能力(英文):GLM-4 在 MMLU、GSM8K、MATH、BBH、HellaSwag、HumanEval等…

ubuntu搭建jupyter_notebook服务器

环境&#xff1a;ubuntu 22.04 目录 环境&#xff1a;ubuntu 22.04 一、创建一个anaconda用户 创建用户condaUser 为用户condaUser设置密码 开放opt文件夹的权限 登录condaUser用户 二、安装anaconda 下载anaconda 安装anaconda 三、添加环境变量 四、anaconda换源 …

【Unity Shader入门精要 第4章】数学基础(二)

1. Unity中的坐标空间 1.1 五个坐标空间 模型空间 模型自身的3D坐标系空间&#xff0c;左手坐标系是一个相对空间&#xff0c;坐标轴指向随模型旋转变化当物体有父节点时&#xff0c;Transform组件中各属性的值表示的即为该物体在其父物体的模型空间中的值当模型顶点传入顶点…

ARP防火墙能够为网络安全贡献什么样的力量

ARP防火墙&#xff08;Address Resolution Protocol Firewall&#xff09;作为网络安全的一环&#xff0c;起到保护网络免受ARP欺骗攻击的关键作用。今天德迅云安全给您介绍ARP防火墙的相关方面&#xff0c;帮助您深入了解和认识这一关键的安全措施。 网络安全对于现代社会的信…

「 网络安全常用术语解读 」SBOM主流格式CycloneDX详解

CycloneDX是软件供应链的现代标准。CycloneDX物料清单&#xff08;BOM&#xff09;可以表示软件、硬件、服务和其他类型资产的全栈库存。该规范由OWASP基金会发起并领导&#xff0c;由Ecma International标准化&#xff0c;并得到全球信息安全界的支持&#xff0c;如今CycloneD…

Java——认识异常

目录 一.异常的概念与体系结构 1.异常的概念 1.1算术异常 1.2数组越界异常 1.3空指针异常 2.异常的体系结构 3.异常的分类 3.1编译时异常 3.2运行时异常 二.异常的处理 1.防御式编程 1.1LBYL 1.2EAFP&#xff08;核心&#xff09; 2.异常的抛出 3.异常的捕获 3…

使用 ORPO 微调 Llama 3

原文地址&#xff1a;https://towardsdatascience.com/fine-tune-llama-3-with-orpo-56cfab2f9ada 更便宜、更快的统一微调技术 2024 年 4 月 19 日 ORPO 是一种新的令人兴奋的微调技术&#xff0c;它将传统的监督微调和偏好校准阶段合并为一个过程。这减少了训练所需的计算…

【深度学习】第二门课 改善深层神经网络 Week 2 3 优化算法、超参数调试和BN及其框架

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;深度学习 &#x1f4ac;总结&#xff1a;希望你看完之后&#xff0c;能对…

python实现验证码-图片类型

1 utils.py import randomdef get_random_code():code for i in range(5):# 随机生成大写字母upper_char chr(random.randint(65, 90))lower_char chr(random.randint(97, 122))num_char str(random.randint(0, 9))res random.choice([upper_char, lower_char, num_char]…

软件应用开发安全设计指南

1.1 应用系统架构安全设计要求 设计时要充分考虑到系统架构的稳固性、可维护性和可扩展性&#xff0c;以确保系统在面对各种安全威胁时能够稳定运行。 在设计系统架构时&#xff0c;要充分考虑各种安全威胁&#xff0c;如DDoS攻击、SQL注入、跨站脚本攻击&#xff08;XSS&…

如何使用 Node.js 开发一个文件上传功能?

在 Node.js 中实现文件上传功能可以通过多种方式完成&#xff0c;但其中最常用的方法之一是使用 Express 框架和 Multer 中间件。Express 是一个流行的 Node.js Web 框架&#xff0c;而 Multer 是一个用于处理文件上传的中间件。 步骤 1: 准备工作 首先&#xff0c;确保你已经…

《Fundamentals of Power Electronics》——升压隔离型变换器、SEPIC隔离型变换器

以下是升压型隔离变换器的相关知识点&#xff1a; 升压型隔离变换器可以通过互换降压型隔离变换器的电源与负载的位置得到。升压型隔离变换器有许多种结构&#xff0c;此处简短的讨论两种情况。这些转换器主要使用在高压电源和低谐波整流器中。 图6.36所示是一种全桥型电路结…

企业定制AI智能名片商城小程序:重塑营销场景,引领数字化营销新纪元

在数字化时代的浪潮中&#xff0c;多企业AI智能名片商城小程序以其独特的魅力和创新的功能&#xff0c;为消费者带来了前所未有的购物体验。它不仅是一个汇聚各类商品的购物平台&#xff0c;更是一个充满活力和创造力的社群生态。通过强化社群互动、鼓励用户生成内容以及引入积…

uniapp 文字转语音(文字播报、语音合成)、震动提示插件 Ba-TTS

简介&#xff08;下载地址&#xff09; Ba-TTS 是一款uniapp语音合成&#xff08;tts&#xff09;插件&#xff0c;支持文本转语音&#xff08;无服务费&#xff09;&#xff0c;支持震动提示。 支持语音合成&#xff0c;文本转语音支持震动&#xff08;可自定义任意震动效果…

一对一WebRTC视频通话系列(二)——websocket和join信令实现

本系列博客主要记录WebRtc实现过程中的一些重点&#xff0c;代码全部进行了注释&#xff0c;便于理解WebRTC整体实现。 一对一WebRTC视频通话系列往期博客&#xff1a; 一对一WebRTC视频通话系列&#xff08;一&#xff09;—— 创建页面并显示摄像头画面 websocket和join信令…

Go实战训练之Web Server 与路由树

Server & 路由树 Server Web 核心 对于一个 Web 框架&#xff0c;至少要提供三个抽象&#xff1a; Server&#xff1a;代表服务器的抽象Context&#xff1a;表示上下文的抽象路由树 Server 从特性上来说&#xff0c;至少要提供三部分功能&#xff1a; 生命周期控制&…

堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41),framework修改,去除第三方app的倒计时页面

文章目录 堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41)&#xff0c;framework修改&#xff0c;去除第三方app的倒计时页面1.打印异常堆栈2.去除第三方app的倒计时页面3.模拟点击事件跳过首页进入主页 堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41)&#x…

领域驱动设计(DDD)笔记(三)后端工程架构

文章链接 领域驱动设计(DDD)笔记(一)基本概念-CSDN博客领域驱动设计(DDD)笔记(二)代码组织原则-CSDN博客领域驱动设计(DDD)笔记(三)后端工程架构-CSDN博客前导 领域驱动设计(Domain Driven Design,简称DDD)是业内主导的业务工程理论。它在各中权威人士被广泛讨论…

华为云耀云服务器开放端口

博客主页&#xff1a;花果山~程序猿-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一.华为云控制台开放端口 寻找到安全组信息 2. 添加开放的端口信息 3. 检查是否成…