Anomaly detection system——异常检测系统简介与设计

“异常检测系统”常常应用于制造业中,同时对于生活在互联网时代的我们而言,异常检测同样发挥着巨大的作用,例如进行异常用户检测,防止网络诈骗等行为等。
一个成熟的异常检测系统能够基于输入的属性值对“产品”进行性质判断,为后期进行更进一步的处理提供参考。那么如何构建异常检测系统呢?将对基本异常检测系统进行介绍。
本篇文章没有涉及太多数学理论,但一点必要的统计理论是必要的(太晦涩的知识,笔者也不懂的hh)

1 异常检测系统的实现原理

异常检测系统的实现原理,用“人听得懂的话”说出来其实非常地直观:当已经提前知道什么是无异常状态时,面对新的样本时通过状态的对比,如果有较大的偏差则认为有异常,否则为无异常。

那么难点在于:如何确定无异常状态?
这里自然就要用到机器学习了,通过大量的无异常样本总结出特征与期望,如此划定了一个“无异常范围”就能够轻松地进行判断了。具体实现特征总结的方法有很多,本篇文章介绍一种最为基本的方法:Gaussion Distribution高斯分布法。

基于Gaussion Distribution的异常检测模型

对数理统计有一定了解的同学一定都十分了解高斯分布了,高斯分布还有另一个更常用的名称:正态分布,二维图像呈现出一个……咳咳形状是吧,也是典型的径向基函数。有了高斯分布我们就可以进行异常检测模型的设计了。这里先明确各符号的意义:

x ∈ R n : 样 本 集 , 属 性 数 量 n x \in \R^n:样本集,属性数量n xRn:,n
m : 样 本 数 量 m:样本数量 m:
x ( i ) : 第 i 个 样 本 x^{(i)}:第i个样本 x(i):i
x j ( i ) : 第 i 个 样 本 的 第 j 个 属 性 值 x^{(i)}_j:第i个样本的第j个属性值 xj(i):ij

基于高斯分布的模型即有假设:各样本属性都分布服从高斯分布,如 x j x_j xj服从 N   ( μ j , σ j 2 ) N~(\mu_j,\sigma_j^2) N (μj,σj2),其他依次类推。如由两个属性定义的高斯分布所示:
二维高斯
明确了以上的概念,接下来就可以从样本集中计算出各属性分布的 μ \mu μ以及 σ \sigma σ的值,计算方法即为数理统计中的“由样本估计参数”:
μ j = 1 m ∑ i m x j ( i ) \mu_j=\frac{1}{m}\sum_i^mx_j^{(i)} μj=m1imxj(i)
σ j 2 = 1 m ∑ ( x j ( i ) − μ j ) 2 \sigma_j^2=\frac{1}{m}\sum(x_j^{(i)}-\mu_j)^2 σj2=m1(xj(i)μj)2
(这里可能大家有一点疑问:我们学过的无偏估计除的是m-1,这里是m,实际上在真实开发中,由于样本量很大,这个差别会很小,所以用m也是可以的)
得到: p j ( x j ( i ) ) = 1 2 π σ e x p ( − ( x j ( i ) − μ j ) 2 2 σ 2 ) p_j(x^{(i)}_j)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x^{(i)}_j-\mu_j)^2}{2\sigma^2}) pj(xj(i))=2π σ1exp(2σ2(xj(i)μj)2)
计算完分布后我们需要一个统一的“分值”来判断是否在预期内,则定义:
P ( x ( i ) ) = Π j n p j ( x j ( i ) ) P(x^{(i)})=\Pi^n_jp_j(x^{(i)}_j) P(x(i))=Πjnpj(xj(i))
作为评价标准,即:
i f P ( x ( i ) ) < κ , t h e n → x ∈ A n o m a l y ifP(x^{(i)})<\kappa, then\rightarrow x \in Anomaly ifP(x(i))<κ,thenxAnomaly
而对于 κ \kappa κ值的选择稍后进行讲解。以上即为异常监测系统的原理部分,更加深入的内容,请各位自行进行检索。

2 具体实现步骤

  • 数据集
    最开始,也是最为重要的步骤之一,收集数据。对于不同的任务,数据收集方式不同,假设有一个“计算机是否处于异常状态”的项目,那么需要收集的数据则可能是:机器工作温度,机器内存使用状况,机器效率,机器是否异常等。根据需求进行收集。需要注意的是,数据收集时很可能出现的状况是:大部分样本都处于正常状态,只有少数处于异常状态。这是一个样本不均衡问题,但对于异常检测系统而言这样的数据是合理的,具体稍后进行解释。

  • 选择模型并计算得到模型的参数
    上一小节中还有一个遗留的小问题,如何选择 κ \kappa κ,这对与机器学习而言不是很大的问题,可以采用试错的方式进行甄别:即代入多个值选择效果最好的模型参数即可。如何评价效果好坏?请继续看下去.

  • 划分数据集
    这里可以部分解释为什么样本不均衡对于异常检测系统是需要的:由于在训练模型时我们需要得到的是正常样本的特征,因此train set的样本是正常样本或者是无标签,假设为正常的样本。而对于样本数据集的划分,强烈推荐划分为train_set(60%), validation_set(20%), test_set(20%),各数据集的功能在这里我不过多介绍,如果有疑问大家可以留言或者去搜索其他的文章进行解答。其实在日常的使用中,可以看到一些人在进行数据集划分操作时经常出现不正规的处理,如validation_set与test_set是同样本,这样其是test_set就很难起到其作用了。还需要注意的是,在validation_set以及test_set中要保留一部分Anomaly的样本,用于判断模型的准确程度。

  • 选择评价标准
    如何选择一个快速直观的评价标准,对于提升模型构建的效率是至关重要的。需要注意的是,由于样本集本身的不均衡,我们不能简单地选择准确率作为模型的评价标准,推荐选择一下的评价标准:
    评价标准
    其中第二项为P:查准率,R:查全率;F_1 score为P,R调和平均值,兼顾了查全与查准。

  • 模型择优
    有了以上的评价标准,则可以开始进行模型的评价与择优,选择不同的 κ \kappa κ值,得到不同模型的评价指标,选择最优模型作为最终输出即可。

  • 可以使用啦!

3 小节

以上即为本篇文章的全部内容,希望有帮到各位一点。如有不足的地方,各位可以在评论中指出,感谢各位。
仔细想想,其实异常检测系统已经在我们日常的生活中发挥了很大作用,且还有很大的可拓展空间。

转载请注明出处,感谢!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值