Advertisement

斯坦福机器学习笔记九

阅读量:

异常检测

基于给定的数据集 {{\text{x}}^{1}}, {{\text{x}}^{2}}, \ldots, {{\text{x}}^{\mathcal{m}}} } ,假设所给的数据集遵循常规分布 ,我们希望评估测试样本 {{\text{x}}_{\mathcal{test}}} } 是否属于异常数据点 。其不属于该正常数据分布的概率即为我们感兴趣的统计量 。通过计算测试样本的位置概率密度 p({x}) ,我们可以确定其归属 。尽管传统上这类算法被应用于无监督学习场景中 ,但从另一个角度而言,在监督学习框架下也能够实现类似的性能

这里写图片描述

根据图表所示,在蓝色区域内的数据点具有较高的归属概率;位于中心区域的数据样本具有显著的高概率值;当距离中心区域稍远时,这些数据的概率会有所降低;对于更远处的数据样本而言,其归属概率将更为微弱;这种方法通常被称作密度估计技术或密度估计法。

我们采用了基于高斯分布的异常检测算法来构建我们的模型;针对提供的数据集 D ,我们需要计算其每个特征的均值 \mu 和方差 \sigma^2 的估计值。

记,

mean_j = (1/m)∑_{i=1}^mx^{(i)}


σ_j^2 = (1/m)∑_{i=1}^m(x_j^{(i)} - mean_j)^2

根据求得的平均值和方差的估计值,可以得到一个模型:

该概率密度函数\mathcal p(\bm x)可表示为各变量及其对应均值与方差乘积的形式:

p(\bm x) = \prod_{j=1}^n p(x_j, \mu_j, {\sigma_j}^2) = \prod_{j=1}^n \frac {1} {\sqrt {2π {\sigma_j}^2}} e^{-{(x_j - μ_j)^2}/({2 {\sigma_j}^2})}

其中每个因子都遵循正态分布模型。

密度估计的表达式如下:

这里写图片描述

模型p(x)表示该组数据出现的概率。为了便于区分正常与异常情况, 我们选择了一个阈值 ε, 并将其设为判别标准。具体而言, 当计算得到的p值大于 ε时, 则判断该组的数据属于正常类别;反之, 则归类为此处的数据异常情况。

1、异常检测算法的实现

首先需要获取的是标注数据。将标注数据按照类别划分成正类与反类两类数据,并且在数量上呈现明显的差距(即正类数据远超反类数据的数量)。在具体操作中,选择60%的比例对全部的正类数据进行训练集划分;同时将20%的比例用于构建交叉验证集合,并将50%的比例用于测试集合划分

基于训练集数据, 我们计算得出各特征的均值 \mu_1, \mu_2, \ldots, \mu_n 和方差 \sigma_1^2, \sigma_2^2, \ldots, \sigma_n^2 并构建概率密度函数 p(x).

对于交叉验证集而言,在不同设置下采用ε值作为判别标准,并对数据进行异常性预测;因为数据分布存在偏移趋势,在这种情况下需综合考量查准率与召回率的平衡关系,并引入F1分数这一评估指标;最终确定最优的阈值参数设置。

选定 ε 值后,在测试阶段对测试数据集进行预测运算,并计算异常检测系统的性能指标值或查准率与召回率的比率作为评估依据。

2、异常检测算法与监督学习的比较

这里写图片描述

当正常样本的数量极少时,在应用机器学习模型之前应当考虑采用基于统计的学习方法,并将这些异常样本分配至交叉验证集与测试集中使用。如果出现多种类型的异常情况,则建议优先选择基于统计的学习方法进行建模分析。在监督学习场景中要求正常与异常样本数量均衡且充足,在这种情况下模型才能达到较高的准确率和召回率水平。对于那些未来可能出现的故障情况与其训练数据高度相似的情况,则应当选用监督学习方法进行建模分析以提高诊断效率和准确性

3、特征向量的选择

该异常检测算法基于研究对象的数据服从高斯分布的前提。若观测到的数据明显偏离正态分布特征,则通常会尝试将其转换为符合高斯分布的形式。常用的方法包括对数变换:x = log(x + c),此外还可能采用平方根或其他合适的转换方式。

这里写图片描述

常见问题在于一些异常数据可能表现出较高的p(x)值并被误认为是正常情况。当出现这种情况时, 我们可以使用误差分析方法, 对那些被算法误判为正常但实际上是异常数据进行详细分析, 从而发现一些其他可能的特征变量组合, 以便改进算法使其实验指标得到提升

4、异常检测使用多元高斯分布

采用多个高斯密度相乘的形式将会表现出下图所示的问题:即红色标记的数据被视为正常情况;而绿色标记的数据则被认为是异常情况;其中粉线表示通过多高斯乘积得到的标准异常临界值;这将导致将这些异常数据归类到正常区间内;蓝线则是基于多元高斯分布得到的标准异常界限;通过以下方法可以避免上述问题的存在。

这里写图片描述

在单变量高斯分布模型中(一般情况下),为了求取概率密度函数值p(x), 我们会逐一计算每个特征的概率密度值并进行相乘运算以获得整体的概率密度函数值;而在多元高斯分布模型中,则需要构建所有特征之间的协方差矩阵,并通过综合考虑所有特征的相关性来计算整体的概率密度函数值

具体步骤如下:

首先计算特征的平均值 μ 和协方差矩阵 \text{ }\!\!\Xi\!\!\text{ }

\boldsymbol{\Sigma} = \frac{1}{n}\sum_{t=1}^{n}\left(\mathbf{x}_j^{(t)} - \boldsymbol{\mu}_j\right)\left(\mathbf{x}_j^{(t)} - \boldsymbol{\mu}_j\right)^T = \frac{1}{n}\left(\mathbf{X} - \boldsymbol{\mu}\right)^T\left(\mathbf{X} - \boldsymbol{\mu}\right)

然后计算多元高斯分布的p(x):

概率密度函数\ p(\ x)\ 定义为\frac{1}{(2π){\frac{n}{2}}| Σ|{\frac{1}{2}}}\exp(-½(\ x−μ)^T Σ^{-1}(\ x−μ))$。

如果 p(x)<ε 则认为是异常数据。

通过调整协方差矩阵与均值参数的变化范围与数值大小关系等高线形态进行优化。具体而言,在主对角元素数值变化时会影响等高线呈现圆形还是椭圆形状态;而当次对角元素数值发生变化时则会影响到等高线的方向性特征,在此情况下绝对值得大小会直接影响其形态特征的具体表现形式。同时通过对均值向量进行调节可实现分布中心位置的变化

这里写图片描述

单变量高斯分布模型属于多元高斯分布模型的一种分支类别,在异常检测算法中存在显著差异:它们在概率密度计算方式上有所区别,并且对数据维度的敏感度不同。

这里写图片描述

如果训练集规模适中,并且没有过多复杂的特征,则适合于使用多元高斯分布模型。

全部评论 (0)

还没有任何评论哟~