机器学习入门之异常检测

本文介绍了异常检测的基本概念,重点探讨了如何使用高斯分布进行异常检测,包括单变量和多元高斯分布,并分析了与有监督学习的区别。在特征选择时,通过转换将非高斯分布数据转化为高斯分布,以便更好地识别异常样本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本文为吴恩达机器学习课程的笔记系列第七篇,主要学习异常检测算法。

异常检测(Anomaly Detection)

异常检测属于非监督问题。异常检测是机器学习算法的一个常见应用,是对不匹配预期模式或数据集中其他项目的项目、事件或观测值的识别。简单来说,当正样本比较多时,通过对正样本的学习,机器学会正样本的特征,从而对异常样本有了识别能力。

异常检测的核心就在于找到一个概率模型,帮助我们知道一个样本落入正常样本中的概率,从而帮助我们区分正常和异常样本。

高斯分布

高斯分布模型是异常检测中常用的概率模型。其概率密度函数如下:

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

其中:

  • μ = 1 m ∑ i = 1 m x ( i ) \mu=\dfrac{1}{m}\sum\limits_{i=1}^{m}x^{(i)} μ=m1i=1mx(i)
  • σ 2 = 1 m ∑ i = 1 m ( x j ( i ) − μ j ) 2 \sigma^2=\dfrac{1}{m}\sum\limits_{i=1}^{m}(x^{(i)}_j-\mu_j)^2 σ2=m1i=1m(xj(i)μj)2

应用到异常检测算法,对于 m m m 个样本的数据集,针对每一个特征,进行参数估计:

  • μ j = 1 m ∑ i = 1 m x j ( i ) \mu_j=\dfrac{1}{m}\sum\limits_{i=1}^{m}x^{(i)}_j μj=m1i=1mxj(i)
  • σ j 2 = 1 m ∑ i = 1 m ( x ( i ) − μ ) 2 \sigma^2_j=\dfrac{1}{m}\sum\limits_{i=1}^{m}(x^{(i)}-\mu)^2 σj2=m1i=1m(x(i)μ)2

假设每个样本有 n n n个特征,即 x i x_i xi 变成一个 n n n 维的向量 [ x i ( 1 ) x i ( 2 ) ⋮ x i ( n ) ] \begin{bmatrix}x_i^{(1)}\\x_i^{(2)}\\ \vdots \\x_i^{(n)}\end{bmatrix} xi(1)xi(2)xi(n)

对于一个训练实例,有:

p ( x ) = ∏ j = 1 n ( x j , μ , σ 2 ) = ∏ j = 1 n 1 2 π σ e x p ( − ( x − μ ) 2 2 σ 2 ) p(x)=\prod\limits_{j=1}^{n}(x_j,\mu,\sigma^2)=\prod\limits_{j=1}^{n}\dfrac{1}{\sqrt{2\pi}\sigma}exp(-\dfrac{(x-\mu)^2}{2\sigma^2}) p(x)=j=1n(xj,μ,σ2)=j=1n2π σ1exp(2σ2(xμ)2)

如何判断样本是否异常?

我们选择一个 ϵ \epsilon ϵ,将 p ( x ) = ϵ p(x)=\epsilon p(x)=ϵ 作为我们的判定边界,当 p ( x ) > ϵ p(x)>\epsilon p(x)>ϵ 时预测数据为正常数据,否则为异常。

异常检测与有监督学习对比

异常检测 有监督学习
数据非常偏斜,非常少量的正向类(异常数据 y = 1 y=1 y=1 ), 大量的负向类( y = 0 y=0 y=0 数据分布均匀,同时有大量的正向类和负向类
异常的类型不一,很难根据对现有的异常数据(即正样本)来训练算法。 有足够多的正样本,可以根据对正样本的拟合来知道正样本的形态,从而预测新来的样本是否是正样本。
未来遇到的异常可能与已掌握的异常、非常的不同。 未来遇到的正向类实例可能与训练集中的非常近似。
例如: 欺诈行为检测 生产(例如飞机引擎)检测数据中心的计算机运行状况 例如:邮件过滤器 天气预报 肿瘤分类

特征选择

我们使用异常检测算法时,是假设数据集特征符合高斯分布的。但有时候数据集可能像下图左边一样,这时直接用异常检测算法也是可以得出结果,但一般我们可以对数据进行一些转换如取对数操作,将其转换为高斯分布。

在这里插入图片描述

误差分析

有时候,我们可能发现某个异常样本的 p ( x ) p(x) p(x) 值高于 ϵ \epsilon ϵ,我们对此进行分析,观察是哪些异常数据被预测为正常。下面以监测机房中的服务器异常为例:

假设我们选取如下特征:

x 1 = 网 络 流 量 ; x 2 = C P U 负 载 x_1=网络流量;x_2=CPU负载 x1=x2=CPU

当出现一个异常:CPU负载很高,而网络流量很低,服务器卡死,无法通信。如下图:

在这里插入图片描述

此时的 p ( x ) p(x) p(x) 值也会很高,为了识别这一异常状况,我们可以构建新的特征: x 3 = C P U 负 载 网 络 流 量 x_3=\dfrac{CPU负载}{网络流量} x3=CPU ,当上述异常发生时,这个特征便会变得很大,有利于我们识别出来。

多元高斯分布

一般的高斯模型因为是同时累乘每个特征的偏差,所以会创造出一个较大的判定边界。

模型定义:

p ( x , μ , Σ )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值