12.1 异常检测的应用
异常检测最常见的应用是欺诈检测;
如果你有很多用户,每个用户都在从事不同的的活动,你可以对不同的用户活动计算特征变量,然后可以建立一个模型来表示用户表现出各种行为的可能性,用来表示用户行为对应的特征向量。最后可以用建立的模型p(x)来发现网站上行为奇怪的用户,只需要查看哪些用户的p(x)概率小于()
第二类应用就是工业制造方面,比如飞机引擎问题;
第三类应用就是数据中心的计算机监控。
12.2 高斯分布(正态分布)
可以用高斯分布来进行异常检测
什么是参数估计?
假设有一个数据集,其中有m个样本,从,假设它们都是实数。参数估计就是:猜测这些样本来自一个高斯分布的总体,每个样本服从高斯分布(),通过给定的数据集能够估算出和。
,(极大似然估计)
其中可以替换成。
利用高斯分布来构建一个异常检测算法
计算m个数据集在每一个维度上的和,然后根据p(x)得到一个概率,根据概率的大小来定义是否为异常行为。
异常检测算法的步骤
- 选择特征量,它会帮助我们指出那些反常的样本;
- 给出训练集,也就是m个未作标记的样本;
- 给出一个新案例,计算p(x)的值,如果这个概率值很小,就将这一项标为异常
12.3 评估异常检测算法
评估的作用:需要决定是否纳入新的特征,如果分别在纳入该特征和不纳入该特征情况下运行算法,然后算法返回一个数字来告诉你这个特征对算法的影响是好是坏。这样的话,就能更简单地决定是否纳入这个新特征。
12.4 异常检测vs监督学习
在异常检测中,当时我们开始用了一些带有标签的数据,使用了一些例子,这些例子要么正常要么异常。相应地,我们用y=1或者y=0来标记,那么问题来了,我也可以用监督学习来处理这些数据,为什么要用异常检测呢?
在异常检测中,负样本很多,正样本很少(负样本是普通样例,正样本是异常样例) 。而在监督学习中,正样本和负样本的占比都差不多。对异常检测算法的理解:对正常的数据建模,异常的不管,只要不是正常的就是异常的。
异常检测和监督学习的应用
12.5 如何选择特征来实现异常检测
问题1:如果画出的数据直方图不像高斯分布,可以通过调整参数,来让数据更接近高斯分布。
问题2:如何得到异常检测算法的特征?
通过一个误差分析步骤:先完整地训练出一个算法,然后在一组交叉验证集上运行算法,找出哪些预测出错的样本并且尝试能否找到一些其他的特征来帮助学习算法,让那些在交叉验证集中判断出错的样本表现得更好。
12.6 多元高斯分布
两种特征虽然都是显示数据正常,但是特征组合在一块后就异常。
异常检测算法,往往是把附近的数据认为是高频率出现的,表现在图像上类似一个圆形。在一些情况下数据并不是规则分布,单变量的高斯分布不能体现拟合椭圆形状。
因此就引入了多元高斯分布的概念。多变量高斯分布引入了协方差矩阵,通过修改矩阵的值来改变高斯分布的情况。(用于衡量两个变量的总体的误差)
可以理解为每个特征的缩放比例,这样就可以拟合更多的数据分布。
12.7 多元高斯分布的应用
多元高斯分布的公式:
开发一个应用多元高斯分布的异常检测
- 首先利用数据集来拟合模型;
- 当有一个新样本x,需要用多元高斯分布的公式来计算p(x),如果得出的值比小就做异常标记;
传统高斯分布与多元高斯分布的关系:传统的高斯分布实际上是多变量高斯分布的特殊形式,对应矩阵在非对角线上的数为0。非多元高斯分布算法也可以用协方差矩阵表示计算过程,对角协方差矩阵暗示各个特征之间是相互独立的,当应用多元正态分布时,暗示特征之间是非相互独立的。单独高斯模型只是做伸缩变换,而多元可以伸缩和旋转。
如何在单独高斯分布与多元高斯分布之间选择?
传统的模型需要手动构造异常特征的组合,多变量可以自动的捕捉。 不过多变量的计算复杂度高一些。
冗余特征在线性代数中就是线性相关的意思。