问题动机
异常检测问题主要应用在非监督学习问题。
识别异常的样本。
异常检测采取的方法:
给定训练集,对数据建模即 p(x) ,也就是对样本的分布概率建模。
如果新样本带入算法得到的结果低于给定阈值,即为异常。
异常检测算法的应用:
欺诈检测:对不同的用户活动,计算特征变量 x(i) ,然后可以建立一个模型来表示用户表现出各种行为的可能性,用来表示用户行为对应的特征向量出现的概率。
工业生产领域。
数据中心的计算机监控。
高斯分布
高斯分布也称为正态分布。
改变参数:
在机器学习中,人们习惯使用1/m,尽管不是1/(m-1),但是只要数据集够多就区别不大,可以忽略。
算法
样本的概率值等于各特征量的概率值相乘,即使特征量之间的独立假设不成立,算法也能正常运行。
异常检测算法步骤:
①选择特征
②计算参数
③计算新样本为异常出错的概率值 p(x),如果 p(x) < ε(阈值),则样本异常,反之,正常。(意思大概是,我判断这个样本为异常,我判断出错的概率很小,该样本就为异常)
案例:
开发和评估异常检测系统
实数评估的重要性:它是当你为某个应用开发一个学习算法时,你需要进行一系列的选择,比如选择使用什么特征等等。如果你有某种方法通过返回一个实数来评估你的算法,那么对这些选择做出决定往往会容易的多。
比如你需要决定,现在有一个新的特征,该不该纳入这个特征?
如果你分别在纳入该特征和不纳入该特征运行算法,通过返回一个实数告诉你这个特征是好是坏,那么这样你就能简单选择是否纳入该特征。
尽管异常检测是一个非监督学习问题,但是数据中带有是否异常的标签,这就是我们认为的能够评估异常检测算法的标准方法。
训练样本是无标签的正常的,交叉验证集和测试集有标签用来评估。
将样本集分类,不推荐交叉验证集和测试集一样(就是不推荐下图最后一种分配方式)。
推导和评估算法:
①用训练集拟合模型 p(x)
②在交叉验证集和测试集中进行预测
③因为异常检测问题中,大多数是正常的,只要少数异常;所以该问题属于偏斜类问题,用查全率,召回率,F1-score评估算法。
④也可以用上述评估方法选择 ε 。
异常检测.VS.监督学习
异常检测算法:
当异常样本很少正常样本很多。
异常样本很少,并且异常情况在改变。
监督学习:
异常样本和正常样本都很多。
异常检测运用场景:
网络销售的欺诈行为,产品制造等。
监督学习运用场景:
垃圾邮件识别,天气预测等。
选择要使用的功能
有些数据看起来不像高斯分布,我们会对数据进行一些处理(开方,log等),使得它像高斯分布。
如果数据不是高斯分布,也可以正常运行;但是进行数据转换后,使其像高斯分布效果更好。
如何得到异常检测算法的特征?
在训练完成的算法上用交叉验证集,找到预测出错的样本,通过出错样本尝试创建一个新的特征,使得异常点在正常点之外的范围。
监控数据中心的计算机的例子:
多变量高斯分布
根据之前的算法,下面的例子中,异常的点也会被检测为正常。
改良后,多元高斯分布:
不对单个特征分布建模,对整体建模,所以参数 u 变成 n 维向量,参数 Σ 为 n*n 的矩阵(协方差矩阵)。
多元高斯分布可以根据数据的相关性建模。
Σ 衡量的是方差或者说是特征量的变化量,所以多元高斯图的形状随 Σ 的改变而改变。
以 2 维为例:
改变对角线的值:
改变非对角线的值:
u 改变中心的位置:
使用多变量高斯分布的异常检测
估计参数 u 和参数 Σ :
算法步骤:
①根据数据集拟合模型,求出 u 和 Σ 。
②预测新样本
原始的高斯分布模型是多元高斯分布模型的一种特殊情况,也就是说原始模型之中,Σ除了对角线之外,其他的元素都为0,所以原始模型的高斯分布图是关于 X 轴,Y 轴对称的,也就是说是多变量高斯分布的特例。
对比:
原始高斯分布模型:
①使用更加频繁。
②在特征之间相关性较高的情况下需要创建新特征。
③适用于规模巨大的 n(特征量)。
④训练集较小也能运行。
多元高斯分布模型:
①能自动捕捉不同特征之间的关系。
②由于要计算逆矩阵,所以在 n 较小的情况下,计算速度快。
③必须保证 m > n(多元高斯分布模型合理使用原则,m >= 10n )。
④Σ 不可逆的两种情况:第一种是不满足 m > n,第二种是有冗余特征(冗余特征:线性相关)。