Anomaly Detection
Problem motivation:
首先描写叙述异常检測的样例:飞机发动机异常检測
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
直观上发现,假设新的发动机在中间,我们非常大可能觉得是OK的。假设偏离非常大。我们就须要很多其它检測确定是否为正常发动机。
以下进行数学形式上的描写叙述,通过概率密度进行预计。例如以下图:
对正常的数据进行建模。求Xtest的概率。当处于中心位置时概率比較大。而且大于设定的阈值,我们判定为OK状态,在远离中心状态。概率比較小,小于设定阈值我们判定为anomaly点。
Anomaly detection常见应用:
NG课上提到了三个应用方向,第一个是最開始举例的飞机引擎。然后是欺诈发现,这个在信用卡和购物站点上得到广泛应用。最后一个是产业界应用,我们须要监视一个计算机系统。我们通过正常执行系统的 内存使用、CUP load等建模。当系统某个值不在正常范围就可以能是计算机系统中有电脑出现异常状态。
习题:当我们系统建模后,导致把异常状态推断为正常状态,这时须要减少阈值避免误判。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
GaussianDistribution:
复习高斯分布一些内容,比較熟悉能够直接跳过。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
图型和概率分布函数。
上图均值方差表如今高斯分布图型上的差异。
Parameter estimation:
简单的说就是预计均值和方差。下图中写出的公式事实上能够通过极大似然预计进行数学上的求解证明。这里就不具体说(翻开数理统计课本能够找到)。求方差公式中能够选择m或者m-1这都无所谓,由于往往数据集非常大。这样最后计算结果没什么差别,在机器学习中通常选择m而在统计学中往往选择m-1。
选择m还是m-1在理论上有非常大差别,可是实际应用上没什么太大差别。
习题:高斯分布密度函数求解
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Algorithm
密度函数预计算法:
求P(X)就是密度预计过程。
连乘公式须要每个条件独立,可是假设不是条件独立也能这么计算得到正确结果。
习题:对均值方差预计公式。
J下标表示第J个特征
Anomaly detectionalgorithm
1. 选择你觉得可以区分是否为anomalous 的样例特征。
2. 拟合參数即均值和方差。
3. 计算给定数据集上的联合概率密度函数。假设小于设定阈值则判定为异常数据。
进行实例描写叙述这个算法:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
依照上面所写三步流程即可计算:看左下角图。假设我们计算联合概率值较大图形上反映为高度较高,则判定为normal,假设计算得到高度较低,判定为异常。
到这里为止还仅仅是描写叙述了算法运行流程。我们并没有深入描写叙述每一步细节。
Developing andEvaluating an Anomaly Detection System
我们会发现能用一个数值标准去评价一个学习算法是很重要的,我们能够尝试增加某个feature进行评估,然后去掉该feature再次进行评估。这样得到feature对学习算法的影响。
到如今为止异常检測我们仅仅利用数据并没有数据类标签,是一种无监督学习。
如果我们已经有类标签标记的数据。这样使用异常检測算法就能非常好的进行评估!这是非常重要的一种思维转换。
继续上面提到的飞机发动机样例。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
我们推荐使用蓝色标记的划分,可是红色标记的划分也有人在这么操作。
算法效果的评估:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
习题:非常明显在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
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
前面说的方法都是假定数据满足高斯分布,也提到了假设分布不是高斯分布,上述方法也是能够使用,仅仅是假设我们对分布进行转换使得近似于高斯分布,那么会得到更好的效果。
上图就举例用log等函数进行转换。实现层面octave以下尝试转换就能够得到非常好近似高斯。
怎样选择feature:
思想类似于supervise learning中的error analysis ,当左边图进行学习时我们得到了错误结果,这时我们须要增加新的特征X2使得那个点与正常数据得到区分!如上图从左到右所看到的意。
还是回到前面提到的监视数据中心电脑,我们为了分析究竟是哪个特征引起Anomaly,通过构造新的feature来进行推断。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
习题:Anomaly detection 算法不能非常好区分开normal和Anomaly时。我们通常须要添加特征来使得它们得以区分。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">