异常检测

异常检测问题:已给出m个样本是正常的,然后对于一个新的样本,要判断新样本是正常还是异常的。
因此就是给定一个无标签的训练集,然后对训练集的某些特征建模,对于新样本的概率输出小于阈值,就认为是异常的(说明这个点出现的概率很低)。

一、使用高斯分布来构建异常检测算法

1、选择一些特征,这些特征能用来帮助我们挑选出异常的样本。然后给出数据集x1x^1x2x^2x3x^3xmx^m
2、对每个特征拟合参数μ1\mu^1μ2\mu^2μ3\mu^3μn\mu^nσ12{\sigma}_1^2σ22{\sigma}_2^2σn2{\sigma}_n^2
【机器学习笔记】异常检测
用这个公式来计算。
3、给定一个新样本x,计算概率p(x)。p(x)是多个特征概率的联乘。
【机器学习笔记】异常检测
如果概率值小于阈值,则说明是异常的。

二、对于有标签的数据集,评估异常检测算法

现有10000个正常样本,20个异常样本。
划分训练集:6000个正常样本(用来求出p(x)函数)
验证集:2000个正常样本,10个异常样本
测试集:2000个正常样本,10个异常样本

1、用训练集拟合函数p(x)。
虽然说训练集是无标签样本,但是我们都假设训练集是全部正常的,也就无所谓有没有标签了。
2、然后用p(x)去预测验证集、测试集的样本,得到相应的结果
【机器学习笔记】异常检测
3、可以用一些评估指标:真阳性、假阳性、真阴性、假阴性,查准率和召回率,F1得分等。

那么如何选择参数ϵ\epsilon:给出一系列参数ϵ\epsilon,然后在交叉验证集上分别计算F1得分,选择那个F1得分最高的。
然后最后在测试集上,来对算法进行评估。

三、异常检测算法 vs 监督学习

使用异常检测算法:
1、正例(y=1)的数量非常少。
2、反例(y=0)的数量非常多。
3、有很多种不同的异常类型。因此对于一般的监督学习,很难学习到异常是什么,因为异常类型太多了。
4、未来出现的异常可能会与现在的异常不一样,是全新的。因此一般的监督学习,只是学习到了现在的异常是什么样的,不能学习到未来的异常是什么样的。

使用监督学习:
1、有很多的正例和反例。
2、有足够多的样本能够学习到各个种类的异常类型。
3、未来出现的新异常不会与现在的异常差别很大。

异常检测算法是通过对负样本的学习,来获知异常是什么样的,而正样本只是用来评估算法。

四、如何选择异常检测算法所需要的特征

1、对于非高斯分布的特征,虽然也能运行异常检测算法,但是效果不好。因此可以先对数据进行处理,使其尽可能近似高斯分布。可以取对数、开根号、三次方根等等,尽可能能改变参数来靠近高斯分布。
【机器学习笔记】异常检测
2、误差分析步骤,来获取异常检测的特征
首先先跑通算法,然后在交叉验证集上运行算法;之后尝试别的特征,看看在交叉验证集上的效果是否更好。
也可以采用一些特征的组合,来变成一个新的特征,可以线性组合、乘除、平方等等。

五、多元高斯分布

通常如果只用一个特征拟合的高斯分布来判断异常,可能会出现不准确的情况。因此会引入多元高斯分布,要考虑多个特征来判断是否异常。

多元高斯分布,此时p(x)的x是一个n维向量,表示有n个特征。
而不是对x1,x2…xn分别建模。此时参数就是μ\mu向量(n维),Σ\Sigma矩阵(n*n的协方差矩阵)。
例如,当只有两个特征时,定义参数为
【机器学习笔记】异常检测
此时的多元高斯分布:
【机器学习笔记】异常检测
高度就是代表p(x),越靠近凸起的部分,说明越可能是正类。反之就是异常的。

如果改变一下参数:
【机器学习笔记】异常检测
可以发现对图像的影响。Σ\Sigma矩阵不一定是单位或者对角矩阵,这里只是举例。
同样的改变μ\mu,可以得到
【机器学习笔记】异常检测

类比于一元的高斯分布,我们可以知道μ\mu改变的是中心位置(最高点的坐标),而Σ\Sigma改变的是凸起程度。

六、多元高斯分布应用于异常检测

1、拟合模型p(x),要求出参数μ\muΣ\Sigma
【机器学习笔记】异常检测
其中,x是n维向量。

2、给一个新样本x,计算p(x)
【机器学习笔记】异常检测
如果p(x)<ϵ\epsilon,则标记为异常的。

七、多元高斯分布 vs 原模型

对于原来的模型,是对每个特征分别拟合出参数μ\muσ\sigma,然后再联乘。
【机器学习笔记】异常检测
而对于多元高斯分布,特征是都放在一个向量里,去拟合出参数μ\muΣ\Sigma矩阵。
【机器学习笔记】异常检测
那么当,Σ\Sigma矩阵是对角矩阵时,
【机器学习笔记】异常检测
并且对角线上的各个元素σ2\sigma^2,刚好对应原来模型各个特征分别拟合得到的σ2\sigma^2,那么此时多元高斯分布和原模型是相同的。

那么何时用原模型,何时用多元高斯分布呢?
原模型:
1、对于多个特征组合成为一个新的特征,这需要手动去创建一个新特征。
例如 x3=x1x2x_3= \frac{x_1}{x_2}
2、计算成本更低,能够适应数量很大的特征。
3、即使训练集样本数量小也能很好运行。

多元高斯分布:
1、对于多个特征之间的联系,会自动捕捉,而不需要手动创建一个新特征。
2、要对Σ\Sigma矩阵求逆,因此当n很大的时候,计算成本很高。
3、必须要m>n,也就是样本数量>特征数量。因此要确保m足够大。
(如果发现Σ\Sigma矩阵是不可逆的,那么可能m没有大于n,也可能是有冗余的特征(有线性相关的关系))

相关文章: