吴恩达机器学习笔记(十四)——异常检测

1. 问题动机

异常检测问题的具体应用其实在我们的生活中很常见,例如我们的飞机制造工厂新生产了一批飞机,我们需要检测这批飞机中是否存在不合格的飞机,这时我们就会应用异常检测
我们通常的做法是构建一个模型,计算p(x),也就是对x的分布概率建模。我们设定一个阈值ε,当p(xtest)<ε,则判定为异常。当p(xtest) >= ε时就判定为合格。
飞机异常检测的例子如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第1张图片

2. 高斯分布 (正态分布)

假设x∈实数,且x的均值为u,方差为σ2,则用数学符号可以表示为x~N(u,σ2),图像大致如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第2张图片
其中u确定了中心位置,σ则确定了山峰的宽度,高斯分布的概率分布函数如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第3张图片

其中:
吴恩达机器学习笔记(十四)——异常检测_第4张图片

下面展示高斯分布随着参数不同的变化情况,如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第5张图片

3. 算法

假设特征x∈Rn,且各个特征之间相互独立,那么可以得到以下等式:
吴恩达机器学习笔记(十四)——异常检测_第6张图片
接着,整理一下异常检测算法的思路,有下面几步:

  1. 选择一些你认为能够指示出异常的特征

  2. 拟合参数
    吴恩达机器学习笔记(十四)——异常检测_第7张图片

  3. 给出新的样本,计算出错的概率,判断是否发生异常
    吴恩达机器学习笔记(十四)——异常检测_第8张图片

如下面就是一个应用异常检测的例子:
吴恩达机器学习笔记(十四)——异常检测_第9张图片

4. 开发和评估异常检测系统

在我们构建异常检测系统的时候,我们也需要一些方法来评估我们构建系统的好坏。

因此假定我们拥有一些带标签的数据(一些y=0的正常样本,一些y=1的异常样本),我们会将它们划分为训练集、交叉验证集和测试集。
例如下面这个例子,在飞机检测中,我们拥有10000架好的飞机,20架不合格的飞机样本。我们会按照如下来分配数据集:
吴恩达机器学习笔记(十四)——异常检测_第10张图片
下面介绍一下评估异常系统好坏的算法的具体步骤如下:

  1. 利用训练集去构建模型p(x)
  2. 使用交叉验证集或测试集去进行预测,如下图所示:
    吴恩达机器学习笔记(十四)——异常检测_第11张图片
  3. 利用精确率、召回率、F值等指标进行评估系统构建的好坏。
  4. 使用交叉验证集选取最优的阈值ε

5.异常检测和监督学习的区别

监督学习和异常检测问题的主要区别在以下几个方面:

  1. 在异常检测问题里,大部分都是y=0的样本,很少y=1的样本。而监督学习里会存在大量的y=1的样本。
  2. 因为在异常检测问题里,异常样本很少,所以很难通过有效的学习算法去根据特征判断哪些是异常样本。而在监督学习问题里,我们会有大量的样本去学习特征给正负样本带来的影响。

6.选择要使用的功能

对于一些不服从高斯分布的特征,可以对数据进行一些转换,使得它看上去更像高斯分布。如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第12张图片
常用的转换方法有:log(x1+C)、√x1、x11/3 等等

此外,因为我们通常希望正常样本的p(x)比较大,而异常样本的p(x)比较小,这样就方便我们进行监测。
但是,在实际问题中,我们也可能会到的正常样本和异常样本的p(x)都很大的情况。
这时,我们可以通过创造新特征的方法来解决这个问题

下面以一个监测电脑数据的例子进行介绍,如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第13张图片
一般情况下,如果网络流量增加了,那么CPU的负载也会增加,两者是呈一个正相关的趋势的。但是对于x3,x4特征,有可能出现CPU负载很大,但是网络流量很小的情况,因为两者都分别处于正常范围内,所以不会被判断为异常。但是实际上是出现异常了,因此单独的特征无法正确反映情况。
因此,可以尝试构建新特征,如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第14张图片
这样就可以清楚地判断两者之间的关系了。

7.多变量高斯分布

上小节谈到的监测电脑异常的问题,无法判断两个变量之间的关系,进而对于异常产生错误的判断,具体也如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第15张图片
改进的方法是这里采用多元高斯分布(多元正态分布)
具体思想:使用p(x)计算所有特征的概率分布,其中参数u∈Rn,σ∈Rn*n∑指的是协方差矩阵。具体如下图所示:
在这里插入图片描述
多元高斯分布可视化如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第16张图片
吴恩达机器学习笔记(十四)——异常检测_第17张图片
吴恩达机器学习笔记(十四)——异常检测_第18张图片
吴恩达机器学习笔记(十四)——异常检测_第19张图片
吴恩达机器学习笔记(十四)——异常检测_第20张图片

8.使用多变量高斯分布的异常检测

我们需要准备如下构建模型的参数,具体如下图所示:
吴恩达机器学习笔记(十四)——异常检测_第21张图片
具体的算法步骤如下:

  1. 准备拟合模型的参数
    吴恩达机器学习笔记(十四)——异常检测_第22张图片

  2. 引入新的样本,进行异常检测
    吴恩达机器学习笔记(十四)——异常检测_第23张图片

下面介绍一下原始的模型和多变量高斯模型的联系:

  1. 如果多变量高斯模型的协方差矩阵除了对角线之外,全是0。那么多变量高斯模型和原始的模型就是一样的模型。
  2. 由于第一点原因,原始的模型的可视化图一定是轴对称的。而多变量高斯模型还可以是y=x对称。因此原始的模型其实是多变量高斯模型的一种特殊情况。
  3. 原始的模型,协方差矩阵是对角矩阵,暗示各个特征之间是相互独立的。当使用多变量高斯模型的时候,暗示各个特征之间是有联系的。
    吴恩达机器学习笔记(十四)——异常检测_第24张图片

对于原始模型和多变量高斯模型的选择主要遵循以下几个方面:

  1. 原始的模型需要手动建立特征之间的关系,也就是创建新的特征。手动创建的特征,可以使得原始模型运行的更好。
  2. 多变量高斯模型则可以自动捕捉这种不同特征之间的关系。
  3. 原始模型计算成本较低,能够适应更高维的计算。多变量高斯模型要计算逆矩阵,所以计算成本较高。
  4. 对于样本数量m比较小的时候,原始模型也可以计算的很好。但是对于多变量高斯模型,必须使得样本数量m>特征数量n,否则会出现不可逆的情况,比较适合m>=10*n的情况。

注意:如果在使用多变量高斯模型的时候,发现不可逆了。首先检查m是否大于n,其次检查特征中是否有线性相关的特征,去掉冗余的特征。

你可能感兴趣的:(吴恩达机器学习笔记,高斯分布,异常检测,人工智能,吴恩达,机器学习)