15、1问题的动机
以飞机发动机检测为例,每个发动机啊我们检测两个特征量:热度和振动强度。
假设我们现在的训练集数据是正常的(红色),无标签。现在如果要检测一个新的发动机,如果其对应点与整个红色区域相离很近,则认为它是正常的;相距很远,则认为它是不正常的。
给定一个无标签的数据集,我们对x的分布概率建模。当有个新发动机要检测时,我们只需要算出该模型下发动机的概率,如果<
ϵ
\epsilon
ϵ,则认为这个发动机异常;如果>=
ϵ
\epsilon
ϵ,则认为这个发动机正常。
应用场合:
- 网站异常用户检测
- 工业机械检测
- 计算机集群检测
15、2高斯分布
高斯分布的密度函数如下:函数图像主要由均值
μ
\mu
μ和方差
σ
\sigma
σ2决定的。
μ
\mu
μ决定图像的对称轴位置(对称轴就是x=
μ
\mu
μ)
σ
\sigma
σ2决定图像的高矮胖瘦,
σ
\sigma
σ2越大,图像越矮越胖。
给出一组数据集,估计
μ
\mu
μ和
σ
\sigma
σ2的大小,公式如下,其中这些估计都是最大似然估计(其中
σ
\sigma
σ2前面的分母在统计学上一般写为m-1,但因为机器学习的数据集数量足够大,m-1和m的区别不太大)
15、3算法
我们假设各个特征量相互独立,而且他们都符合高斯分布。
算法步骤:
- 首先确定特征量(这些特征量会帮助你认识到反常案例)
- 在给定的训练集上求出 μ \mu μi和 σ \sigma σ2i的值
- 对需要检测的样本算出概率p.
异常检测的例子:
在这里面,xtest(1)的概率>=
ϵ
\epsilon
ϵ,所以是正常的;
而xtest(2)的概率<
ϵ
\epsilon
ϵ,所以是不正常的。
15、4算法评估
这里我们有带标签的样本(y=0表示正常,y=1代表异常)
一般来说我们的样本划分如下:
训练集都是无标签样本(默认y=0,几乎全部都是正常样本)
交叉验证集和测试集都是带标签样本,既有正常样本也有异常样本。
(这里注意交叉验证集和测试集不能是同一批数据)
算法评估:
在训练集以及交叉验证集确定①选择哪些特征量②选择合适的
ϵ
\epsilon
ϵ(使得F1分数最高)
15、5异常检测算法VS监督学习
异常检测算法:少量的正样本(异常),大量的负样本,且由于异常样本太少,无法囊括基本异常类型。
监督学习:拥有大量的正样本和负样本。
各自的应用场景:
15、6特征量的选择
一般我们都会选择符合高斯分布的特征量,如果一个特征量不符合高斯分布,那么我们就要进行一些变换来使得这些特征量符合高斯分布。如下图中对特征量x做取对数操作,得到基本符合高斯分布的图.
我们选择的特征量也就是log(x).
我们的目标是:
选择的特征量能使得正常样本的p(x)很大;异常样本的p(x)很小。
案例:
在左下图中:仅仅选择x1特征量,异常样本很难与正常样本分离开来;
在右下图中:我们再从异常样本和正常样本的差异中找出特征量x2,使得异常样本和正常样本分离开来。
我们可以创造新的特征量(这些特征量必须要有具体的含义):
如下面的x5和x6
15、7多元高斯分布
如果将X1和X2分开单独来看的话,对于左图中的绿叉点看起来是正常的,因为它在X1和X2各自的概率分布图中都显示很正常。但是我们要是整体来看的话,这个绿点很明显就是一个异常点,所以我们必须把这两个因素来综合考虑。
多元概率分布函数如下:
①协方差矩阵发生变化时:
②均值矩阵发生变化
15、8运用多元高斯分布的异常检测
用多元高斯分布进行检测异常的步骤过程:
这里的原始模型其实就是多元高斯分布的特殊情况(协方差除对角线外的位置数据都为0):
关于原始模型和高斯多元函数该如何选择:
①原始模型:必须要手动检测出特征量之间的关系;运算量很小;训练数据很少依旧运行得很好。
②高斯多元模型;可以自动检测出特征量之间得关系;运算量更大;必须要求m远大于n且协方差矩阵可逆(出现冗余特征就会导致协方差矩阵不可逆)。