十异常检测
Posted cold-city
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十异常检测相关的知识,希望对你有一定的参考价值。
1 密度估计
给定数据集 x(1),x(2),..,x(m),我们假使数据集是正常的,我们希望知道新的数据 x(test)是不是异常
的,就是对数据x(test)进行异常检测。
图中红色部分为给定的数据集,绿色部分为测试数据,其中蓝色圈内表示测试数据检测为正常的,且越靠近圈内,数据正常的概率越大。圈外的数据则检测为异常数据。
根据模型,由测试数据的位置得到测试数据正常的概率p(x),这就是密度估计,公式表示如下:
当p(x)小于ε时,数据异常。
异常检测主要用于识别欺骗。如:测服务器测试用户是否为真实用户而不是虚拟用户,根据内存、磁盘、CPU、网络的情况判断计算机是否出错了。
2 高斯分布
如果x符合高斯分布(正态分布):
则其概率密度函数为:
其中可以利用已有数据求出μ和σ2:
不同μ和σ2对应的图像:
μ决定对称轴位置,σ2小图形细长,σ2大图形矮胖。
3 应用高斯分布进行异常检测
对于给定数据集,对每一个特征求出μ和σ2,然后对于新的训练实例,根据模型计算p(x):
对每一个特征求得对应的p(xi),再把p(xi)相乘。
当p(x)<ε,数据判定为异常数据。
4 设计和评价一个异常检测系统
例如:我们有 10000 台正常引擎的数据,有 20 台异常引擎的数据。 我们这样分配数据:
6000 台正常引擎的数据作为训练集
2000 台正常引擎和 10 台异常引擎的数据作为交叉检验集
2000 台正常引擎和 10 台异常引擎的数据作为测试集
具体的评价方法如下:
根据测试集数据,我们估计特征的平均值和方差并构建p(x)函数
对交叉检验集,我们尝试使用不同的ε值作为阀值,并预测数据是否异常,根据 F1 值
或者查准率与查全率的比例来选择 ε选出ε后,针对测试集进行预测,计算异常检验系统的F1值,或者查准率与查全率
之比.
5 异常检测对比监督学习
6 选择特征
异常检测假设特征符合高斯分布,如果数据的分布不是高斯分布,异常检测算法也能够
工作,但是最好还是将数据转换成高斯分布,例如使用对数函数:x=log(x+c)其中c为非负常数,或者x=x^c,c∈(0,1)
异常检测可能出现的问题就是,一些异常的数据其p(x)值非常高,误认为正常数据,这是可以根据被算法错误估计的数据,观察并新增一些特征,使新增特征后能够帮助我们更好的进行异常检测。
上图,一维的特征错误的判断绿色被检测点为正常,新增特征后,被检测为错误特征。
7 多元高斯分布
若两个特征相关,此时用开始的不同特征检测出的p(xi)直接相乘不能很好的检测数据,因为该模型尝试去同时抓住两个特征的偏差,创造了一个比较大的判定边界。
上图粉色的圈为传统的判定边界,此时,左上角的绿色数据被判定为正常数据,因为其对应每一维的特征,都在阈值以内,但是其数据与正常数据的差别较大。
这个时候可以用多元高斯分布,多元高斯分布考虑了特征间的相关性,构建了特征的协方差矩阵。
多元高斯分布:
其中:
其中不同的μ和Σ对应的多元高斯分布图形:
图一:普通的高斯分布
图二:特征1拥有较小的偏差,保持特征2的偏差
图三:特征2具有较大的偏差,保持特征1的偏差
图四:保持原有特征,增加两个特征的正相关性
图五:保持原有特征,增加两个特征的负相关性
多元高斯分布与传统高斯分布比较:
以上是关于十异常检测的主要内容,如果未能解决你的问题,请参考以下文章