基于统计学习的方法做异常检测

1.基础理论
假定正常的数据对象由一个统计模型产生,而不遵守该模型的数据是异常点。

2.参数方法
参数方法假定正常的数据对象被一个以Θ为参数的参数分布产生。该参数分布的概率密度函数f(x,Θ)给出对象x被该分布产生的概率。该值越小,x越可能是异常点。
2.1基于正态分布的一元异常点检测
得到数据后,假设数据服从正态分布,x(i)∼N(μ,σ2) 计算出正态分布的各个参数值:

  • μ = ∑ i = 1 m x ( i ) m {\mu= \frac{\sum_{i=1}^mx^{(i)}}{m}} μ=mi=1mx(i)
  • σ 2 = ∑ i = 1 m ( x ( i ) − μ ) 2 m {\sigma^2 = \frac{\sum_{i=1}^m(x^{(i)}-\mu)^2}{m}} σ2=mi=1m(x(i)μ)2
    求出参数即可得到正态分布的概率密度函数:
  • p ( x ) = 1 2 π σ e x p ( − ( x ( i ) − μ ) 2 2 σ 2 ) p(x)={ \frac1{\sqrt{2\pi}\sigma}exp(-\frac{(x^{(i)}-\mu)^2}{2\sigma^2})} p(x)=2π σ1exp(2σ2(x(i)μ)2)
    如果计算出来的概率低于阈值,就可以认为该数据点为异常点。
    2.1.1阈值设置方法
  • 3sigma原则:阈值为 ( μ − 3 σ , μ + 3 σ ) (\mu-3\sigma,\mu+3\sigma) (μ3σ,μ+3σ),超过范围则为异常点
  • 箱线图可视化:利用数据集的上下四分位数(Q3和Q1)、中点等形成。异常点常被定义为小于Q1-1.5(Q3-Q1)或大于Q3+1.5(Q3-Q1)的那些数据。
    简单的箱线图:
    在这里插入图片描述

2.2多元异常点检测
核心思想是把多元异常点检测转化为一元异常检测,降维问题,例如正态分布,可以先求出每一维度的均值和标准差,对于第 j j j维:
μ j = 1 m ∑ i = 1 m x j ( i ) \mu_j=\frac 1m\sum_{i=1}^m x_j^{(i)} μj=m1i=1mxj(i)

σ j 2 = 1 m ∑ i = 1 m ( x j ( i ) − μ j ) 2 \sigma_j^2=\frac 1m\sum_{i=1}^m (x_j^{(i)}-\mu_j)^2 σj2=m1i=1m(xj(i)μj)2

  • 各个参数相互独立的情况下,计算概率时的概率密度函数为所有维度的乘积:

p ( x ) = ∏ j = 1 n p ( x j ; μ j , σ j 2 ) = ∏ j = 1 n 1 2 π σ j e x p ( − ( x j − μ j ) 2 2 σ j 2 ) p(x)=\prod_{j=1}^n p(x_j;\mu_j,\sigma_j^2)=\prod_{j=1}^n\frac 1{\sqrt{2\pi}\sigma_j}exp(-\frac{(x_j-\mu_j)^2}{2\sigma_j^2}) p(x)=j=1np(xj;μj,σj2)=j=1n2π σj1exp(2σj2(xjμj)2)

  • 多个特征相关,且符合多元高斯分布:
  • μ = 1 m ∑ i = 1 m x ( i ) \mu=\frac{1}{m}\sum^m_{i=1}x^{(i)} μ=m1i=1mx(i)

∑ = 1 m ∑ i = 1 m ( x ( i ) − μ ) ( x ( i ) − μ ) T \sum=\frac{1}{m}\sum^m_{i=1}(x^{(i)}-\mu)(x^{(i)}-\mu)^T =m1i=1m(x(i)μ)(x(i)μ)T

p ( x ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x)=\frac{1}{(2 \pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}} \exp \left(-\frac{1}{2}(x-\mu)^{T} \Sigma^{-1}(x-\mu)\right) p(x)=(2π)2nΣ211exp(21(xμ)TΣ1(xμ))

3.非参数法
通常,非参数方法对数据做较少假定,因而在更多情况下都可以使用。
4.HBOS法
简单来说就是降维,先求每个维度的概率,再合并,降到一维,最终目的是求样本的概率密度*
1.为每个数据维度做出数据直方图。对分类数据统计每个值的频数并计算相对频率。对数值数据根据分布的不同采用以下两种方法:

静态宽度直方图:标准的直方图构建方法,在值范围内使用k个等宽箱。样本落入每个桶的频率(相对数量)作为密度(箱子高度)的估计。时间复杂度: O ( n ) O(n) O(n)

2.动态宽度直方图:首先对所有值进行排序,然后固定数量的 N k \frac{N}{k} kN个连续值装进一个箱里,其中N是总实例数,k是箱个数;直方图中的箱面积表示实例数。因为箱的宽度是由箱中第一个值和最后一个值决定的,所有箱的面积都一样,因此每一个箱的高度都是可计算的。这意味着跨度大的箱的高度低,即密度小,只有一种情况例外,超过k个数相等,此时允许在同一个箱里超过 N k \frac{N}{k} kN值。

时间复杂度: O ( n × l o g ( n ) ) O(n\times log(n)) O(n×log(n))

2.对每个维度都计算了一个独立的直方图,其中每个箱子的高度表示密度的估计。然后为了使得最大高度为1(确保了每个特征与异常值得分的权重相等),对直方图进行归一化处理。最后,每一个实例的HBOS值由以下公式计算:

H B O S ( p ) = − log ⁡ ( P ( p ) ) = ∑ i = 1 d 1 log ⁡ ( P i ( p ) ) H B O S(p)=-\log (P(p))=\sum_{i=1}^{d} \frac{1}{\log \left(P_{i}(p)\right)} HBOS(p)=log(P(p))=i=1dlog(Pi(p))1

推导过程:

假设样本p第 i 个特征的概率密度为 p i ( p ) p_i(p) pi(p) ,则p的概率密度可以计算为: P ( p ) = P 1 ( p ) P 2 ( p ) ⋯ P d ( p ) P(p)=P_{1}(p) P_{2}(p) \cdots P_{d}(p) P(p)=P1(p)P2(p)Pd(p) 两边取对数: log ⁡ ( P ( p ) ) = log ⁡ ( P 1 ( p ) P 2 ( p ) ⋯ P d ( p ) ) = ∑ i = 1 d log ⁡ ( P i ( p ) ) \begin{aligned} \log (P(p)) &=\log \left(P_{1}(p) P_{2}(p) \cdots P_{d}(p)\right) =\sum_{i=1}^{d} \log \left(P_{i}(p)\right) \end{aligned} log(P(p))=log(P1(p)P2(p)Pd(p))=i=1dlog(Pi(p)) 概率密度越大,异常评分越小,为了方便评分,两边乘以“-1”: − log ⁡ ( P ( p ) ) = − 1 ∑ i = 1 d log ⁡ ( P t ( p ) ) = ∑ i = 1 d 1 log ⁡ ( P i ( p ) ) -\log (P(p))=-1 \sum_{i=1}^{d} \log \left(P_{t}(p)\right)=\sum_{i=1}^{d} \frac{1}{\log \left(P_{i}(p)\right)} log(P(p))=1i=1dlog(Pt(p))=i=1dlog(Pi(p))1 最后可得: H B O S ( p ) = − log ⁡ ( P ( p ) ) = ∑ i = 1 d 1 log ⁡ ( P i ( p ) ) H B O S(p)=-\log (P(p))=\sum_{i=1}^{d} \frac{1}{\log \left(P_{i}(p)\right)} HBOS(p)=log(P(p))=i=1dlog(Pi(p))1

案例尝试:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值