机器学习笔记——异常检测(anomaly detection)

异常检测

当我们需要让一个系统从许多未标注的数据中学习到某些正常的特征,从而能够诊断出非正常的数据,我们把这个过程叫做异常检测

我们要做的就是对于给定的一组特征值,我们输出一个概率,如果这个概率值小于某个临界值,代表数据异常

算法

我们可以采用高斯函数来拟合这个概率值,对于某个特征,我们计算出它的均值与方差,之后就可以得到一个高斯概率分布,然后我们将所有特征的高斯分布函数相乘作为我们的最终概率

以下是一个二元特征概率输出分布的例子

算法评估

对于异常检测,我们用类似监督学习的例子来对算法进行评估,我们将数据进行异常与非异常的标准,然后将数据集分为训练集、验证集与测试集

我们用训练集来拟合概率函数,再在验证集上求出精准率与召回率,来选择最佳的阈值,最后在测试集上进行算法性能测试

与监督学习对比

那么我们有了标定的数据,为什么我们不采用监督学习来完成这项工作呢,我们下面有这两种算法的对比,其中最重要的原因就是异常的样本太少,监督学习算法无法从样本中学习到异常的特征,因此当异常样本过少的时候我们往往会采用异常检测算法



特征选择

有的时候我们发现特征不满足高斯分布,这个时候我们对特征进行变换,使得特征大致呈现高斯分布的样子会使算法取得更好的效果

多变量高斯分布

让我们观察这样一组数据,我们会发现对于左图左上角蓝色×的数据也有很高的概率值,会被算法判断为正常数据,这个问题的原因就是我们在之前做了一个假设就是各个变量是独立的,因此我们最后的概率是各个特征的概率相乘得到的。因此当各个变量之间有相关关系时算法就不能得到很好的结果

为此我们可以采用多元高斯分布,其中∑为协方差矩阵

我们可以看到当不同特征之间的协方差不为0时,高斯分布可以朝向一个特定方向进行延展

一下是将高斯分布运用到异常检测的过程

独立分布是多元高斯分布的一种特殊情况,也就是协方差矩阵除了主对角线上的元素都是0

当变量之间出现相关关系的时候我们可以人工创造新的变量来消除这种相关关系,而多元高斯分布的好处就是能够自动帮你捕捉这种相关关系。但是我们在实践中仍然是原始模型使用的多,因为多元高斯分布模型通常需要很大的计算量

猜你喜欢

转载自blog.csdn.net/shanwenkang/article/details/85524580