基本含义
一组数据,判断其中某一个是否异常
Is anomalous?
我们对其分布进行建模,模型为
如果
,那么我们认为这个数据异常
如果
,那么我们认为这个数据正常
异常检测的应用
最常见的应用是欺诈检测,用特征变量表示用户的各个行为,如果ta某一时刻的行为满足 ,那么我们认为用户行为异常,可能被盗号
另一个例子是工业生产领域,例如飞机的引擎是否正常
第三个例子,数据中心,对每台计算机的特征进行量化,建模,如果有一台计算机的 非常小,就说明可能发生异常,可以要求管理员检查
高斯分布
x~
-标准差, -方差, -均值
越大,数据越分散,图像越宽,高度越矮
图像与x轴围成的面积始终是1
参数估计问题
给出一组数据,求出高斯分布的参数
异常检测算法
其中
我们假设 ~ ,每个特征都服从参数不同的正态分布,同时也假设了每个特征变量互相独立
于是
算法步骤
1. 选择一些可能出现与异常有关的特征
2. 计算参数
3. 计算新实例x的概率
异常检测系统的评价
如果有一些带标签的数据,指出哪些样本是正常的,哪些样本是异常的。那么我们在训练集中放入正常的无标签的数据,在交叉验证集合测试集中放入带标签的异常数据,用训练集的数据拟合p(x)。接下来把正常的一些数据也放入交叉验证集和测试集中,然后使用p(x)进行判断。
训练集:验证集:测试集=6:2:2
然后在验证集和测试集中计算p(x),计算准确率,召回率,F1
异常检测 vs 监督学习
异常检测适用的场景:正例非常少,大部分全是反例(错误的数据很少—)。有可能有不同类型的异常,而且未来出现的异常可能从没见过。
监督学习适用的场景:正例和反例都很多。未来出现的数据基本上和以前出现的很相似
如何选择异常检测算法的特征变量
如果数据分布近似高斯分布的话就选这个变量,否则就要进行处理,比如取对数。选择数据的时候不要选特别大或者特别小的。
多元高斯分布
存在这样一种情况:每个特征变量都在高斯分布正常范围内,但是合起来看就不是了,为了在此时也能正确判断异常,需要用到多元高斯分布
在多元高斯分布中,
此时 叫做协方差矩阵
多元高斯分布的概率表达式
如果变量互相独立,那么协方差矩阵非对角元都是0
使用多元高斯分布估计参数
给出数据集
其中
则
使用多元高斯分布异常检测
- 使用上述公式计算参数 和
- 对于一个新的样本实例,计算
- 如果 ,则样本异常
什么时候用多元高斯模型
如果愿意为关联的变量创建新的特征变量,那么用原始模型更好,另外,原始模型的计算量更小。但是,多元高斯模型可以自动分析关联性。如果变量不是那么多,可以用多元高斯模型
多元高斯模型要确保样本数大于特征数
如果发现协方差矩阵不可逆,有可能是m