Home > MachineLearning > Main text

[CS229] 15: Anomaly Detection


Tag: python, machine learning

15: Anomaly Detection

  1. 异常检测:主要用于非监督学习问题。根据很多样本及其特征,鉴定可能异常的样本,比如产品出厂前进行质量控制测试(QA)。
  2. 对于给定的正常数据集,想知道一个新的数据是不是异常的,即这个测试数据不属于该组数据的几率,比如在某个范围内概率很大(正常样本),范围之外的几率很小(异常样本),这种属于密度估计。
  3. 高斯分布:常见的一个分布,刻画特征的情况:
    • 两个参数:期望和方差
  4. 利用高斯分布进行异常检测:
    • 对于给定数据集,对每一个特征计算高斯分布的期望和方差(知道了每个特征的密度分布函数)
    • 对新数据集,基于所有特征的密度分布,计算属于此数据集的概率
    • 当计算的P小于ε时,为异常。(这个ε怎么定?)
  5. 开发和评估:
    • 异常检测系统,先从带标记的数据选取部分构建训练集,获得概率分布模型;然后用剩下的正样本和异常数据构建交叉检验集和测试集。
    • 测试集:估计每个特征的平均值和方差,构建概率计算函数
    • 检验集:使用不同的ε作为阈值,看模型的效果。主要用来确定模型的效果,具体就是ε值大小。
    • 测试集:用选定的ε阈值,针对测试集,计算异常检验系统的F1值等。
    • 注意1:数据。训练集只有正常样本(label为0),但是为了评估系统性能,需要异常样本(label为1)。所以需要一批label的样本。
    • 注意2:评估。正负样本严重不均衡,不能使用简单的错误率来评估(skewed class),需要用precision、recal、F-measure等度量。
  6. 异常检测 vs 监督学习:
    • 数据量:前者负样本(异常的)很多
    • 数据分布:异常检测的负样本(正常样本)分布很均匀,认为服从高斯分布,但是正样本是各种各样的(不正常的各有各的奇葩之处)
    • 模型训练:鉴于异常样本的数量少,且不均匀,所以不能用于算法学习。所以异常样本:不参与训练,没有参与高斯模型拟合,只是在验证集和测试集中进行模型的评估。
  7. 特征选择(转换):
    • 特征不服从高斯分布,异常检测算法也可以工作
    • 最好转换为高斯分布:比如对数函数变换 =》x=log(x+c)
    • 比如在某一维度时,某个样本对应的概率处于正常和异常的附近,很可能判断错误,可以通过查看其在其他维度(特征)的信息,以确定其是否异常。
  8. 误差分析:
    • 问题:异常的数据有较高的P(x)值,被认为是正常的
    • 只看被错误检测为正常的异常样本,看是否需要增加其他的特征,以检测这部分异常
  9. 多元高斯分布:
    • 一般高斯计算P(x): 分别计算每个特征对应的几率然后将其累乘起来
    • 多元高斯计算P(x): 构建特征的协方差矩阵,用所有的特征一起来计算
    • 问题:一般高斯的判定边界比较大,有时候会把样本中的异常分布判定为正常样本
    • 协方差矩阵对高斯分布的影响:
    • 一般高斯 vs 多元高斯:
  10. 应用多元高斯构建异常检测系统:
    • 原始模型 vs 多元高斯模型:
  11. 以上参考这里的学习笔记

If you link this blog, please refer to this page, thanks!
Post link:https://tsinghua-gongjing.github.io/posts/CS229-15-anomaly-detection.html

Previous: tSNE分析