第十五章-异常检测算法 深度之眼_吴恩达机器学习作业训练营

目录

一,算法简介

1.1 问题引入

1.2 异常检测VS监督学习

二,异常检测系统

2.1 高斯分布

2.2   算法思路

2.3 具体实现步骤

三,应用细节与系统改进

3.1 特征变换

3.2 多元高斯分布

3.3 误差分析

四,总结


一,算法简介

1.1 问题引入

在实际生活中,我们总会遇到这样一类问题:在一个群体中,找出“不合群”的个体。例如在通讯系统中找出非常规的犯罪用户;在一批出产零件中检测出不合格的零件;在计算中心中,检测出行为异常的计算节点等等。

异常检测(Anomaly detection)算法就是为解决这一类问题而诞生的一种无监督学习算法。具体情况为:假设已有一组“正常”的样本数据集\large \{x^{(1)},x^{(2)},......,x^{(m)}\},现给定新样本,试估计新样本为“正常”样本的概率,并设置一定的阈值\large \varepsilon,当概率大于阈值时判断为“正常”样本,反之判断为“异常”样本。

                                           \large p(x)\left\{\begin{matrix} < \varepsilon & anomaly\\ >= \varepsilon& normal \end{matrix}\right.                           (公式 15.1)

这种用已知样本来估计随机变量概率分布和密度函数的方法叫做密度估计。

图15-1 异常用户检测

例如检测论坛系统中的异常用户,每个样本有登录次数\large x_{1}^{(i)}和论坛发帖数量\large x_{2}^{(i)}两个属性,给定数据集如图15-1,试判断新样本点A为正常样本的概率。  

1.2 异常检测VS监督学习

异常检测虽然是一个无监督学习算法,但是在构建时也会用到带标签的数据,以至于常会感到混淆。两者的区别比较如下:

表15-1 监督学习 VS 异常检测
  监督学习 异常检测
样本类型 各类型样本数量较均衡 拥有大量的“正常”样本,只有极少数“异常”样本
样本集分布 样本集分布与真实情况较为符合 “异常”的情况千奇百怪,甚至不能穷尽,只能囊括“异常“样本的一部分
应用实例 天气预报,用邮件过滤等分类和回归问题 欺诈行为检测等


二,异常检测系统

2.1 高斯分布

图15-2 高斯分布之密度函数

高斯分布是 \large x \sim N(\mu ,\sigma ^{2}) 在统计学中一个非常重要的概率分布模型。其概率密度函数外型是钟形曲线,公式为:

                                      \large p(x,\mu,\sigma ^{2}) = \frac{1}{\sqrt{2 \pi} \sigma }exp( - \frac {(x - \mu)^{2}}{2 \sigma ^2} )     (公式 15.2)

其中参数 \mu为该分布中的数据平均值,也称作位置参数,由图15-2可知改变其值即可改变密度函数的对称中心。在具体使用时,将采用已知样本的均值来估计概率分布的均值,公式为:

                                      \mu = \frac{1}{m} \sum_{i=1}^{m} x^{i}                     (公式 15.3)

而参数\sigma^{2}即为概率分布中的数据方差,也叫做形状参数,由图15-2可知,改变其值会改变密度函数的形状“宽窄”。在具体使用时,将采用已知样本的方差来估计概率分布的方差,公式为:

                                    \sigma^{2} = \frac{1}{m} \sum_{i=1}^{m}( x^{i} - \mu)^2          (公式 15.4)

值得注意的是,只有当前面的系数是\frac{1}{m-1}时,估计处理的方差才是无偏估计。但是具体应用时,一般还是习惯用\frac{1}{m},且效果没有太大区别。

2.2   算法思路

图15-3 高斯分布与阈值

由高斯分布的密度函数可知,其概率密度主要聚集在以平均值μ为中心两侧,越远离平均值μ概率密度越低。这与一般常识相符合,即一个事物大部分情况都比较稳定,或者稍有波动,越偏离常规的情况发生概率越低。

于是可以设想一个阈值\dpi{100} \large \varepsilon,当样本X概率密度p(X)大于或等于\dpi{100} \large \varepsilon时,认为其为正常;反之认为其为异常。由此便找到了一种实现(公式 15.1)的思路:

给定样本数据集\large \{x^{(i)} \epsilon R^{\mathbb{N}} |x^{(1)},x^{(2)},......,x^{(m)}\},针对每一个样本特征均计算其平均值μ和方差\sigma^{2}的值。

               \{\mu_{j} = \frac{1}{m} \sum_{i=1}^{m} x^{(i)}_{j} | \mu_{1}, \mu_{2}, ...\mu_{n} \}                     (公式 15.5)

               \{\sigma^{2}_{j} = \frac{1}{m} \sum_{i=1}^{m}( x^{(i)}_{j} - \mu_{j})^2 | \sigma^{2}_{1}, \sigma^{2}_{2}, ...\sigma^{2}_{n} \}                     (公式 15.6)

于是,可得假设函数为:

                p(x) = \prod _{j=1}^{n}p(x_{j};\mu_{j},\sigma^{2}_{j}) = \prod_{j=1}^{n} \frac {1}{\sqrt{2\pi \sigma^{2}_{j}} }exp( - \frac{(x_{j} - \mu_{j})^{2} }{2 \sigma^{2}_{j} } )   (公式 15.7)

设立阈值\dpi{100} \large \varepsilon,当样本X概率密度p(X)大于或等于\dpi{100} \large \varepsilon时,认为其为正常;反之认为其为异常。

综上所述,即可得到异常检测模型。

2.3 具体实现步骤

  1. 收集一些数据样本,并按一定的比例如6/2/2等,将样本分为训练集/交叉验证集/测试集。其中训练集中的样本全为正常样本,交叉验证集和测试集中均有异常样本。

  2. 按上述算法思路,利用训练集样本构建出假设函数(公式15.7)。

  3. 以第十一章中介绍过的F1值,召回率或精确率评价标准,设立不同的阈值\dpi{100} \large \varepsilon,利用交叉验证集合来选择出最优的\dpi{100} \large \varepsilon

  4. 最后再由测试集来评价训练结果,评价标准依然可选用F1值,召回率或精确率等。

三,应用细节与系统改进

3.1 特征变换

异常检测算法最大的假设即为样本的特征分布满足高斯分布,所以在挑选样本特征时需要满足这一条件。反之效果不明显。

但有些特征虽然本身不满足高斯分布,但可以经过一定的数学变形转换成高斯分布。具体的变换手法众多,如公式(15.6)。

                                        X^{'} = log(X + c) \ ,c >=0      (公式 15.6)

图15-4中的特征即为采用(公式 15.6)变换的例子。

图15-4 x=log(x+C)变换

3.2 多元高斯分布

对于一些样例,各特征的概率均在“合理”区域内,满足p(x) >= ε的标准,但是属于异常特征。发生上述情况的一种可能是不同特征之间存在相关性,这时需要计算出个特征之间的相关性,并将模型改进为多元高斯分布模型。

(暂时没有很好的可视化,所以这部分内容简略介绍一下,以后有空填坑。需要了解的可以自行查阅资料。)

3.3 误差分析

在第十二章中提到过,对于一些误分类的样本,可以进行在重点研究,这称之为误差分析。通过误差分析,可以进一步了解到系统的薄弱点,从而得到一些收获:

  • 发现一些新的特征。

  • 将原特征进一步进行变换。

  • 可以对一些原特征进行组合。

  • 构建联合分布。

  • 等等。

四,总结

本章介绍了异常检测模型,主要内容有:

  1. 介绍了异常检测问题,并将其于监督学习进行了对比。
  2. 介绍了高斯分布的知识,由此引出了异常检测系统的具体设计和实现。
  3. 介绍了一些改进方案。
发布了18 篇原创文章 · 获赞 2 · 访问量 716

猜你喜欢

转载自blog.csdn.net/weixin_41542958/article/details/104462564