异常检测-ML


一、定义

Anomaly detection(异常检测)是指在数据集中识别与正常行为模式或预期模式显著不同的数据点或模式的过程。这些异常点可能代表了系统中的错误、故障、欺诈行为、安全漏洞或者其他罕见但具有重要意义的事件。

例如,在网络流量监测中,正常情况下流量的大小、频率和流向等都有一定的规律。如果突然出现大量的数据传输到一个异常的外部服务器,这就可能是数据泄露的异常行为;在工业生产中,机器正常运转时的温度、振动频率等参数在一个合理的范围内波动,当这些参数出现明显偏离正常范围的情况时,可能意味着机器出现故障。

二、应用场景

  1. 金融领域
  2. 信用卡欺诈检测:银行会记录每一笔信用卡交易的信息,包括交易时间、地点、金额等。正常的信用卡使用有一定的消费模式,如消费地点通常集中在用户常出没的地区,消费金额也在一定的合理范围内。当出现一笔在国外的高额度消费,而持卡人近期没有出国计划时,这可能是欺诈行为。通过异常检测算法可以快速标记这类可疑交易,银行可以进一步核实交易的真实性,从而减少用户的损失。
  3. 金融市场异常波动监测:股票市场价格的波动通常有一定的规律,受到宏观经济数据、公司业绩等因素的影响。如果某只股票的价格在短时间内出现大幅异常波动,可能是内幕交易或者市场操纵等异常情况。金融机构可以利用异常检测来监测市场动态,维护金融市场的稳定。
  4. 工业领域
  5. 设备故障预测:以风力发电为例,风力发电机有许多关键部件,如叶片、齿轮箱和发电机。这些部件在正常运行时会产生各种运行数据,如温度、转速、振动等。通过对这些数据进行实时监测,一旦发现某个部件的数据出现异常,比如发电机温度突然升高超过正常范围,就可以及时预警设备故障,安排维修人员进行检查和维修,避免设备进一步损坏,减少停机时间,提高发电效率。
  6. 网络安全
  7. 入侵检测:在计算机网络中,正常的网络活动包括合法用户的登录、数据访问等。异常检测系统可以监控网络流量和用户行为,当检测到有非法的IP地址尝试多次登录系统、或者有用户进行异常的文件访问操作(如访问权限之外的敏感文件)时,就可以判定为可能的入侵行为,发出警报并采取相应的安全措施,如阻断连接、限制访问权限等。

三、常用的检测方法

  1. 基于统计的方法
  2. 这种方法假设数据符合某种统计分布(如正态分布)。首先通过对正常数据进行统计分析,确定数据的均值、方差等统计参数。然后根据这些参数设定一个合理的阈值范围。例如,如果数据服从正态分布,通常可以认为在均值加减几个标准差范围内的数据是正常的,超出这个范围的数据点则被视为异常。
  3. 优点是简单易懂,计算成本相对较低。缺点是对数据的分布假设比较严格,如果数据不满足假设的分布,检测效果可能会很差。而且对于复杂的数据模式,很难准确地确定合适的统计参数和阈值。
  4. 基于距离的方法
  5. 计算每个数据点与其他数据点或者数据中心(如聚类中心)的距离。在正常数据集中,数据点之间的距离通常比较接近,而异常数据点会与其他数据点距离较远。例如,在一个二维数据空间中,通过计算每个点到其最近邻点的距离,如果某个点的距离明显大于其他点的距离,就可以将其判定为异常点。
  6. 这种方法的优点是不需要对数据的分布进行假设,能够处理各种类型的数据。缺点是对于高维数据,计算距离的成本会很高,并且数据的密度差异可能会导致误判。例如,在数据密度不均匀的情况下,低密度区域的正常数据点可能会被误判为异常。
  7. 机器学习方法
  8. 孤立森林(Isolation Forest):这是一种基于决策树的异常检测算法。它通过构建多个随机决策树来隔离数据点。正常数据点通常需要更多的划分才能被隔离,而异常数据点由于与正常数据点的差异较大,往往可以在较少的划分中就被隔离出来。例如,在一个包含大量正常用户登录时间和少量异常登录时间(如黑客尝试登录)的数据集中,异常登录时间会在孤立森林的树结构中更容易被划分到叶子节点,从而被识别出来。
  9. One - Class SVM(支持向量机):它主要用于对单类数据(正常数据)进行建模,找到一个能够包围正常数据的边界。位于边界之外的数据点被判定为异常。例如,在对正常的网络数据包大小进行建模时,One - Class SVM可以确定一个正常数据包大小的范围,超出这个范围的数据包就被视为异常。这种方法的优点是能够有效处理复杂的数据分布,缺点是对参数比较敏感,并且在训练数据不具有代表性时,检测效果可能不理想。