最近数据挖掘课程讲到了异常检测模块,结合吴恩达老师的《machine learning》做了一些笔记,在这里和大家分享。这一节的内容是一些铺垫的知识。
目录:
1、什么是异常检测?
2、异常检测的应用
3、高斯|正态分布
4、参数估计问题
-----------------------------------手动萌萌哒分割线--------------------------------------------
1、什么是异常检测?
举个例子:假设你是一个飞机引擎的制造商,在上产线上需要做一些质量检测,于是你测试了飞机引擎的一些特征变量比如:飞机引擎运转时产生的热量,飞机引擎的震动等。现在如果你生产了m个引擎的话,就有了一个数据集:Dateset:.如果用图表示出来就是这样子的:这里的每一点,这里的每一个叉点都是未标记的例子。
假设现在有一个新的飞机引擎从上产线上生产出来了,新的飞机引擎有一个特征变量集x_test。异常检测就是我们要求出来这个新的飞机引擎是否有某种异常。如果我们在上图中把新的引擎画出来,我们或许可以大概分辨为落在正常点附近的是正常的引擎,而落在正常引擎之外的孤立的引擎认为是异常的或者需要进一步测试以判断是否正常。
更形式化的定义:
我们有一定的数据集:Dateset:,我们假定这m个样本是正常的,然后我们需要得到一个算法来告诉我们:新的样本数据x_test是否是正常的。我们应该怎么做呢?从给定的一个无标签的训练集,我们对特征变量x的分布进行概率建模得到p(x)。得到p(x)之后,我们就可以计算新的飞机引擎的概率p(x_test),如果p(x_test)的值小于阈值σ,代表这个值出现的概率非常低,则标记为异常。否则,就标记为正常。如图3中处于中间圈圈中的概率大,处于圈圈之外的概率小。
图3:异常检测图解
2、异常检测的应用
异常检测的应用十分广泛,比如欺诈检测、工业生产领域、数据中心的计算机监控、网站防盗等。
欺诈检测:如果你的网站有大量的用户,你可以针对不同的用户活动计算特征变量x^(i),然后建立一个模型p(x)来表示用户表现出各种行为的可能性。然后你就可以用它来发现某些表现奇怪的用户(她们的p(x)
工业生产领域:比如上面的例子制造飞机引擎的问题。通过异常检测,可以找到异常的飞机引擎,从而进一步检查处理。
数据中心的计算机监控:如果你管理一个计算机集群(许多计算机),我们可以为每台计算机计算特征变量(比如内存使用量,硬盘访问量,CPU负载等),然后建模特征变量的概率。如果某一台计算机的p(xi)小于给定的阈值,则代表他出现了一些问题,或许即将停机等,我们就需要进一步去处理,这种技术正在被各大数据中心用来检测大量计算机可能发生的异常。
3、高斯|正态分布
正态分布(英语:normal distribution)又名高斯分布(英语:Gaussian distribution),是一个非常常见的连续概率分布。正态分布在统计学上十分重要,经常用在自然和社会科学来代表一个不明的随机变量。
若随机变量X服从一个位置参数为u、尺度参数为σ^2的正态分布,记为:
X的概率密度函数为:
正态分布有2个参数:其数学期望值或期望值u代表位置参数,决定了分布的位置;其方差σ^2代表尺度参数,决定了分布的幅度。正态分布的概率密度函数曲线呈钟形,因此人们又经常称之为钟形曲线(类似于寺庙里的大钟,因此得名)。我们通常所说的标准正态分布是位置参数u=0,尺度参σ^2=1的正态分布(见图4中红色曲线)。
图4:不同的正态分布(红色为标准正态分布)
钟形曲线代表着x取不同的值时的概率,从图中可以看出取u附件的值很大,而x取更远处的概率更小。由于高斯概率密度函数的积分为1(这是概率分布的性质),我们可以看出来,如果σ较小,则对应图像的宽度小,则较高;如果σ较大,则对应图像的宽度大,则较矮。
4、参数估计问题
什么是参数估计问题?
假设我们有一个数据集Dateset:,其中x^i∈R。我们假设这些样本都是来自一个高斯分布的总体,x^i~N(u,σ^2).但是我们并不知道u,σ^2的具体值,我们根据这些数据进行计算来估计出u,σ^2的值。
如何估计呢?我们看一下下图:
这里就是相当于对u和σ^2的极大似然估计。使用两个公式就ok了。u本来代表的就是均值,即xi的中间位置。σ^2是方差,意义也是代表去掉均值的所有样本的差值平方和。那么现在如果给定一组数据,我们就可以根据公式来计算高斯分布了。
下一节,我们开始准备构建异常检测算法,并深入开发与评估异常检测系统。了解多变量高斯分布和使用多变量高斯分布取进行异常检测。
领取专属 10元无门槛券
私享最新 技术干货