异常检测简单介绍

异常检测指的是识别与正常数据不同的数据,与预期行为差异大的数据,在很多场景中都要用到异常检测方法。比如说故障检测、医疗日常检测、网络入侵检测、信用卡欺诈检测、工业异常检测、时间序列异常检测、视频异常检测、日志异常检测。

异常检测面临的难点

1、未知性:异常与许多未知性因素有关(具有未知的突发行为)
2、异常的异构性:异常是不规则的,一类异常可能表现出与另一类异常完全不同的特征
3、类别不均衡:异常通常是罕见的,而正常实例通常占数据的绝大部分。
今天主要介绍一下异常检测的一些方法

  1. 基于统计学的方法
    统计学方法对数据的正常性做出假定,它们假定正常的数据对象由一个统计模型产生,而不遵守该模型的数据是异常点

  2. 线性模型
    我们假定异常点是不可被压缩的或不能从低维映射空间有效地被重构的,因此可以利用降维方法对数据进行降维。

  3. 基于邻近度的方法
    这类算法适用于数据点的聚集程度高、离群点较少的情况。同时,因为相似度算法通常需要对每一个数据进行相应计算,这类算法通常计算量大,不适用于数据量大、维度高的数据
    常用的检测方法有

    • 基于集群的检测
      聚类算法是将数据点划分为一个个相对密集的“簇”,而那些不能被归为某个簇的点,则被视为离群点
    • 基于距离的度量
      是一种常见的适用于各种数据域的异常检测算法,它基于最近邻距离来定义异常值。不仅适用于多维数值数据,在其他许多领域,例如分类数据,文本数据,时间序列数据和序列数据等方面也有广泛的应用。
      基于距离的异常检测有这样一个前提假设,即异常点的 近邻距离要远大于正常点
    • 基于密度的度量
      基于密度的算法主要有局部离群因子(LocalOutlierFactor,LOF),以及LOCI、CLOF等基于LOF的改进算法。基于距离的检测适用于各个集群的密度较为均匀的情况。
  4. 集成方法
    集成是提高数据挖掘算法精度的常用方法。集成算法将多个算法或多个基建测器的输出结合起来。基本思想是一些算法在某些子集上表现很好,一些算法在其他子集上表现很好,然后 集成起来使得输出更加鲁棒。
    常见的集成方法有Feature bagging,孤立森林等。

    • 孤立森林
      假设我们用一个随机超平面来切割数据空间,切一次可以生产两个子空间,然后我们继续用随机超平面来切割每个子空间并循环,直到每个子空间只有一个数据。那些具有高密度的簇需要被切很多次才会将其分离,而那些低密度的点很快就被单独分配到一个子空间了。孤立森林认为这些很快被孤立的点就是异常点。
  5. 机器学习
    在有标签的情况下,可以使用树模型进行分类,缺点是异常检测场景下的数据标签是不平衡的,但是利用机器学习可以构造不同特征。

你可能感兴趣的:(机器学习,人工智能)