Anomaly Detection
Problem motivation:
首先描述异常检测的例子:飞机发动机异常检测
直观上发现,如果新的发动机在中间,我们很大可能认为是OK的,如果偏离很大,我们就需要更多检测确定是否为正常发动机。
下面进行数学形式上的描述,通过概率密度进行估计,如下图:
对正常的数据进行建模,求Xtest的概率,当处于中心位置时概率比较大,并且大于设定的阈值,我们判定为OK状态,在远离中心状态,概率比较小,小于设定阈值我们判定为anomaly点。
Anomaly detection常见应用:
NG课上提到了三个应用方向,第一个是最开始举例的飞机引擎,然后是欺诈发现,这个在信用卡和购物网站上得到广泛应用。最后一个是产业界应用,我们需要监视一个计算机系统,我们通过正常运行系统的 内存使用、CUP load等建模,当系统某个值不在正常范围即可能是计算机系统中有电脑出现异常状态。
习题:当我们系统建模后,导致把异常状态判断为正常状态,这时需要降低阈值避免误判。
GaussianDistribution:
复习高斯分布一些内容,比较熟悉可以直接跳过。
图型和概率分布函数。
上图均值方差表现在高斯分布图型上的差异。
Parameter estimation:
简单的说就是估计均值和方差,下图中写出的公式其实可以通过极大似然估计进行数学上的求解证明,这里就不详细说(翻开数理统计课本可以找到),求方差公式中可以选择m或者m-1这都无所谓,因为往往数据集很大,这样最后计算结果没什么区别,在机器学习中通常选择m而在统计学中往往选择m-1。选择m还是m-1在理论上有很大区别,但是实际应用上没什么太大区别。
习题:高斯分布密度函数求解
Algorithm
密度函数估计算法:
求P(X)就是密度估计过程。连乘公式需要每一个条件独立,但是如果不是条件独立也能这么计算得到正确结果。
习题:对均值方差估计公式。J下标表示第J个特征
Anomaly detectionalgorithm
1. 选择你认为能够区分是否为anomalous 的例子特征。
2. 拟合参数即均值和方差。
3. 计算给定数据集上的联合概率密度函数,如果小于设定阈值则判定为异常数据。
进行实例描述这个算法:
按照上面所写三步流程就行计算:看左下角图,如果我们计算联合概率值较大图形上反映为高度较高,则判定为normal,如果计算得到高度较低,判定为异常。到这里为止还只是描述了算法执行流程,我们并没有深入描述每一步细节。
Developing andEvaluating an Anomaly Detection System
我们会发现能用一个数值标准去评价一个学习算法是非常重要的,我们可以尝试加入某个feature进行评估,然后去掉该feature再次进行评估,这样得到feature对学习算法的影响。
到现在为止异常检测我们只利用数据并没有数据类标签,是一种无监督学习。如 果我们已经有类标签标记的数据,这样使用异常检测算法就能很好的进行评估!这是很重要的一种思维转换。继续上面提到的飞机发动机例子。
我们推荐使用蓝色标记的划分,但是红色标记的划分也有人在这么操作。
算法效果的评估:
习题:很明显在test集上的accuracy不是好的评估标准,因为我们这里是倾斜类!需要用到Precision 和recall F_score来进行评估。阈值的确定可以通过evaluation metric取值最大确定。当你在设计一个异常检测系统时,关键需要考虑选择何种feature、设定多大的阈值。
Anomaly DetectionVS Supervised Learning
说到这里我们肯定都有困惑,当我们有数据类标签,为什么我们不直接使用监督性学习而使用Anomaly detection,接下来就对两者进行对比。
首先Anomaly detection 在数据集上特点是:很少量的positive 数据,很大量的negative数据,这样我们使用大量的negative数据能够好的拟合求得联合高斯概率密度函数。而supervised learning中 positive negative数据量都大。
其次我们有不同类型的异常数据,但是异常数据量很小,任何算法都很难在小的Anomaly数据集上学习得到Anomaly是什么样子。上面两者对比是你应用Anomaly detection 还是supervise learning 的一些重要区分标准。
Spam是经常提到的一种学习系统,虽然我们有很多类型的Spam,但是每种类型的Spam我们都有比较多的数据,所以Spam问题我们应用的是supervise learning。
其实这两种状态并不是完全分割的,举例说如果我们在交易时有很多为Fraud的,则我们学习问题由Anomaly detection 转变为supervise learning。
习题:直观对两种情况的判断
ChoosingWhat Features to Use
前面说的方法都是假定数据满足高斯分布,也提到了如果分布不是高斯分布,上述方法也是可以使用,只是如果我们对分布进行转换使得近似于高斯分布,那么会得到更好的效果。上图就举例用log等函数进行转换,实现层面octave下面尝试转换就可以得到很好近似高斯。
如何选择feature:
思想类似于supervise learning中的error analysis ,当左边图进行学习时我们得到了错误结果,这时我们需要加入新的特征X2使得那个点与正常数据得到区分!如上图从左到右所示意。
还是回到前面提到的监视数据中心电脑,我们为了分析到底是哪个特征引起Anomaly,通过构造新的feature来进行判断。
习题:Anomaly detection 算法不能很好区分开normal和Anomaly时,我们通常需要增加特征来使得它们得以区分。