提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
十三、异常检测(Density Estimation)
13.1 异常检测
所谓异常检测就是发现与大部分对象不同的对象,其实就是发现离群点,异常检测有时也称偏差检测,异常对象是相对罕见的。
应用:
1.欺诈检测:主要通过检测异常行为来检测是否为盗刷他人信用卡
2.入侵检测:检测入侵计算机系统的行为
3.医疗领域:检测人的健康是否异常
对于异常检测的正式定义:
从x(1)到x(m),我们通常假定这m个样本都是正常的,或者说都不是异常的。然后我们需要一个算法来告诉我们一个新的样本数据x-test是否是异常。
我们给定一个阈值,并认为如下:
此时为异常样本点,反之则为正常样本点。
13.2 高斯分布
高斯分布的公式:
具体图像如下:
参数μ,σ的影响:
13.3 参数估计
假如给定数据集{ x(1),x(2),…x(m)x(1),x(2),…x(m)},已知数据集中样本服从正态分布,即 x(i)∼N(μ,σ2)x(i)∼N(μ,σ2),该如何求出参数 μ,σ2μ,σ2?
可通过一下公式:
对于多特征向量,则推广到每个特征向量:
补充:统计中方差的计算公式中,分母为m-1,对于大训练集而言,并无影响。
13.4 异常检测算法
对于每个样本 x都有x∈Rn,即每个样本都是一个n维向量,可以建立一个概率模型来估计每个样本的密度:
假设 x1∼N(μ1,σ21)x1∼N(μ1,σ12), x2∼N(μ2,σ22)x2∼N(μ2,σ22)…. xm∼N(μm,σ2m)xm∼N(μm,σm2),,这里的假设是独立假设,当然,可能会存在一些条件假设问题,但是对算法的影响不是很大。
算法的具体步骤:
- 选择特征向量
- 拟合 μ,σ2
- 对新样本 x,进行密度计算
将结果与阈值进行比较。
13.5 设计与评估异常检测系统
1.对数据按6:2:2比例进行分配,分别为训练集,交叉验证集,测试集,训练集中全是无标签数据,异常数据在交叉验证集与测试集中按比例进行分配
2. 通过训练集对参数进行拟合
3. 对交叉验证集和测试集中的数据进行测试
4. 由于异常样本的数量非常的少,导致预测十分偏斜,可以通过考察准确率,召回率,F1值来评估模型的效果。
5. 通过交叉验证集来调节参数 ε(得到好的F1值)
补充: 先考虑训练样本(Training
set),将其看成无标签的,这些就是所有正常或者无异常样本的集合。通常来说,我们把这些样本都看成是无异常的,但也有可能一些异常点也被你分到训练集中,这没有关系。接下来,定义交叉验证集(Cross
validation Set)和测试集(Test set),通过这两个集合我们将得到异常检测算法。具体来说,对交叉验证集和测试集,我们将假设我们的交叉验证集和测试集中有一些样本,这些样本都是异常的。
13.6 异常检测与监督学习比较
在异常检测算法中,我们只有一小撮正样本,因此学习算法不可能从这些正样本中学出太多东西 因此取而代之的是我们使用一组大量的负样本,这样样本就能学到更多或者说能从大量的负样本 中学出 p(x)p(x)模型。 另外 ,我们预留一小部分,正样本来评价我们的算法既用于交叉验证集也用于测试集。
具体的区分:
补充: 如果你拥有相同数量的正负样本或者说既有大量的正样本,也有大量的负样本,那么还是倾向于把这些问题当做监督学习 。
13.7 选择合适的特征
当你应用异常检测时对它的效率影响最大的因素之一是,你使用什么特征变量,你选择什么特征变量来输入异常检测算法。
我们可以通过一些转换来事的数据更符合高斯分布。例如取对数,平方,开平方根等。
有时候,我们需要定义一些新的特征变量来帮助异常检测算法更好地检测异常点。
例如下图:
对于绿色的异常点,特征 x1并不能将它区分,所以,设置了另一个特征 x2,重新将样本映,得到右图,可以将绿色的异常点区分出来。
13.8 多元高斯分布
多元高斯分布的概率密度函数:
其中 ∑为n*n维协方差矩阵,| ∑|为矩阵 ∑的行列式。
不同参数对于概率密度函数的影响:
结论如下:
- μ看出控制着图形的位置变化。
- 副对角线控制的是倾斜程度
- 当矩阵 ∑的副对角线都为0时,主对角线上的元素大小控制着概率密度函数俯瞰图的形状大小
13.9 基于多元高斯分布的异常检测算法
算法流程:
多元高斯分布与高斯分布的关系:
当协方差矩阵 ∑∑是对角阵且对角线元为一元高斯分布的估计参数 σ2jσj2时,两个模型是等价的。
区别在于前者能够自动获取特征之间的依赖关系而后者不能(后者假设特征之间是独立的)。
当特征数n很大时,前者计算代价高昂而后者计算速度快。前者适用于m>n(一般要求m>10n)的情况,而后者当m很小时依然适用。
补充:当协方差矩阵不可逆时,考虑一下两种情况:
1.m<n
2.有冗余的特征