【20211125】【机器/深度学习】异常检测算法——高斯分布模型(从标准高斯分布到多元高斯分布)

        该问题源于工作中的某项需求,需要在日常数据中捕获异常状态,高斯分布派上用场喽~

        以检测手机的质量是否达标为例,因为不合格样本是极少数,所以如下的检测模型也能达到很高的准确率,但显然是不负责任且不合理的。

def predict(data):
    return 1

        这是因为数据严重偏斜导致的,使用监督学习都会面临这样的问题——负样本个数太少,监督学习没法学到足够的知识。所以引出问题:能否从极度偏斜的数据中学习出一个有效的检测模型呢?这就是基于统计的异常检测算法。这一类方法一般假设给定的数据集服从一个随机分布模型,将与模型不一致的样本视为异常样本。其中最常用的两种分布模型是一元高斯模型和多元高斯模型。

        (参考:异常检测(2)——基于几率统计的异常检测(1))

        (参考:异常检测(3)——基于几率统计的异常检测(2))


一、标准高斯分布(标准正态分布)

        概率密度函数为:

【20211125】【机器/深度学习】异常检测算法——高斯分布模型(从标准高斯分布到多元高斯分布)_第1张图片

         f(x) ~ N(0, 1),表示该分布均值为 0,方差为 1。注意:概率密度和为1!

二、一元高斯分布的一般形式

        概率密度函数为:

【20211125】【机器/深度学习】异常检测算法——高斯分布模型(从标准高斯分布到多元高斯分布)_第2张图片

         f(x) ~ N(mu, sigma^2),表示该分布均值为 mu,方差为 sigma^2。概率密度函数曲线的对称轴为 mu,sigma 代表曲线的高低胖瘦。sigma 越大,曲线越矮越胖;sigma 越小,曲线越高越瘦。

三、多元高斯分布

        独立多元高斯分布基于各个维度特征之间是相互独立的,且都服从正态分布。由联合概率公式:

        推导过程略去  (参考:多元高斯分布(The Multivariate normal distribution)) ,多元高斯分布的概率密度函数为:

        其中, mu 为各个维度特征的均值组成的向量,Sigma 为变量 X 的协方差矩阵。若变量相互独立,则主对角线是各个维度特征的方差,其余都为 0。

        公式推导及参数对 PDF 曲线的影响参考:机器学习| 多元高斯分布(Multivariate Gaussian Distribution)

四、基于高斯分布的异常检测

1. 一元高斯分布异常检测和多元高斯分布异常检测的思路近乎一致,步骤如下:

        (1) 参数估计 / 参数拟合;

                一元高斯分布估计参数:mu、sigma(均值和方差)

                多元高斯分布估计参数:muSigma(均值向量、协方差矩阵)

        (2) 将样本逐个代入由(1)计算出来的参数得到的概率密度函数公式,计算每个样本的概率;

        (3) 将计算得到的每个样本的概率与事先设置好的概率阈值 epsilon 相比,如果 pi < epsilon,表示该样本是异常样本。(这点我的理解是,通过数据集拟合到的概率密度函数,如果样本属于占比大的正常数据时,计算出来的概率是大的,表示该样本属于该分布;反之,如果计算得到的概率小,表示该样本有较大概率不属于该样本,也就是异常数据)

        注意:使用多元高斯分布必须满足样本数量远大于特征数量,否则协方差矩阵不可逆!协方差矩阵不可逆的两个原因:不满足样本数量远大于特征数量、存在冗余特征。

2. 一元/独立多元高斯分布异常检测和多元高斯分布异常检测的异同点

【20211125】【机器/深度学习】异常检测算法——高斯分布模型(从标准高斯分布到多元高斯分布)_第3张图片

        从上图可以看出,如果选用独立的两个特征 x1 和 x2 进行模型构建并检测异常,无法检测到右边两个曲线中的异常点,但如果使用组合特征 (x1, x2) 构建模型是能够检测到的(左图)。也就是说,多元高斯分布可以自动捕捉特征之间的相关性,它也会捕获组合异常的情况~

        (1) 相同点:实现原理相同。

        (2) 不同点:

                a. 独立多元高斯分布可能需要手动构建特征,来捕获躲在正常样本中的异常样本;而多元高斯分布可以自动捕捉这种异常,而不需要手动构建特征;

                b. 独立多元高斯分布计算量小,数据量大小都适用;多元高斯分布比较适合于数据量小的样本。

        (参考:机器学习-【9】异常检测(高斯分布模型)【手抄笔记】)

        (参考:异常检测: 应用多元高斯分布进行异常检测)

        (参考:[吴恩达机器学习笔记]15非监督学习异常检测7-8使用多元高斯分布进行异常检测)

3. 异常检测算法和监督学习算法的不同点 

        (1) 异常检测算法:异常检测算法用于仅有少量异常样本的数据集,这也就导致了模型可能较难从异常样本中学习到多种异常情况;

        (2) 监督学习算法:拥有大量的正负样本,能够让模型学到很多种异常情况。

        (参考:机器学习-【9】异常检测(高斯分布模型)【手抄笔记】)

你可能感兴趣的:(机器/深度学习,python,开发语言,后端)