文章目录
前言
本文章为天池“数据挖掘实战 - 异常检测”学习赛的Task01-学习日志,旨在对数据挖掘比赛有初步了解,了解异常检测的定义、类别、任务分类、运用场景、处理过程的难点及常用检测方法。
学习链接:添加链接描述
一、概论学习思维导图
二、异常检测简介
1.定义
异常检测(anomaly detection):是用来对不符合预期模式或数据集中其他项目的项目、事件或观测值的识别,通常用于结构缺陷、医疗问题、文本错误等问题。其中异常也被称为离群值、新奇、偏差和例外。
来源:维基百科
2.异常类别
点异常:也称全局异常,即某个点与全集数据中的大多数不同,该点构成单点异常;
条件异常:也称上下文异常,多用于时间序列数据中,该异常需要结合环境与前后时间比较存在较大差异,才成为条件异常点,如某地一天气温-8℃,而前后的气温都在-1-3℃的范围内;
群体异常:由多个对象组合构成的,即单看个体不一定存在异常,但是多个个体同时出现构成异常。如:小区虫蚁搬家为常事,大规模动物搬迁可能是地震前兆。
参考学习网址:添加链接描述
3.任务分类
有监督:需要将数据集标记为“正”或“反”;
无监督:无标签,通过寻找与其他数据最不匹配的实例来检测出未标记测试数据的异常;
半监督:根据一个给定的正常训练数据集创建一个表示正常行为的模型,然后检测由学习模型生成的测试实例的可能性,如设置字段字符数并设置为正常。
4.运用场景
*故障检测:主要是监控系统,在故障发生时可以识别,并且准确指出故障的种类以及出现位置。主要应用领域包括银行欺诈、移动蜂窝网络故障、保险欺诈、医疗欺诈。
*医疗日常检测:在许多医疗应用中,数据是从各种设备收集的,如磁共振成像(MRI)扫描、正电子发射断层扫描(PET)扫描或心电图(ECG)时间序列。这些数据中的异常模式通常反映疾病状况。
*网络入侵检测:在许多计算机系统中,都会收集有关操作系统调用、网络流量或其他用户操作的不同类型的数据。由于恶意活动,此数据可能显示异常行为。对此类活动的识别称为入侵检测。
*欺诈检测:信用卡欺诈越来越普遍,因为信用卡号码等敏感信息更容易被泄露。在许多情况下,未经授权使用信用卡可能表现出不同的模式,例如从特定地点疯狂购买或进行非常大的交易。这种模式可用于检测信用卡交易数据中的异常值。
*工业异常检测
*时间序列异常检测
*视频异常检测
*日志异常检测
5.处理难点
*存在噪音和异常点混杂在一起的情况,难以区分。
*数据量过少,样本不平衡,依赖人工标签
*多种欺诈数据混合,难以区分不同欺诈类型。
学习来源:添加链接描述
三、异常检测方法
1.基础方法
1.1. 基于统计学的方法
思想是:学习一个拟合给定数据集的生成模型,然后识别该模型低概率区域中的对象,把它们作为异常点。
例如:生成的学习分布为正态分布,超过3倍标准差的为异常值。
1.2. 线性模型
典型的例如主成分分析,通过降维,将数据映射到低维空间,从而缓解高维灾难。
1.3. 基于邻近度的方法
该方法适合聚集程度高、离散点较少的数据,缺点为计算量大,不适合数据量大、纬度高的数据。基于相似度检测分为以下三类:
*基于集群(簇)的检测,如DBSCAN等聚类算法:
聚类算法将数据点划分为不同的簇,不能被划分的为异常点,对分簇个数和方法要求高;
缺点:数据集之间的通用性较差;常是为了寻找成簇的数据,而将异常值和噪声一同作为无价值的数据而忽略或丢弃,在专门的异常点检测中使用较少
*基于距离的度量,如k近邻算法:
k近邻算法的基本思路是对每一个点,计算其与最近k个相邻点的距离,通过距离的大小来判断它是否为离群点,因此对K的取值和适度要求高。
*基于密度的度量,如LOF(局部离群因子)算法:
局部离群因子算法-度量局部密度偏差,认为密度低于周围领域的为异常点
2.集成方法
集成是将多个算法或多个基检测器的输出结合起来,各算法在不同子集下表现较好,从而有较好鲁棒性。
2.1. 孤立森林
操作方法:用随机超平面切割数据空间,再用随机超平面切割产生的新子空间,如此重复操作,直至每个子空间只有一个点。
原理:高密度的簇需要被切很多次才会将其分离,而那些低密度的点很快就被单独分配到一个子空间了。孤立森林认为这些很快被孤立的点就是异常点。
切割示例图如下:
2.1. 机器学习
有标签的情况下,可以使用树模型(gbdt,xgboost等)进行分类,缺点是异常检测场景下数据标签是不均衡的,但是利用机器学习算法的好处是可以构造不同特征。
GBDT:全称是 Gradient Boosting Decision Tree,梯度提升树,其是在Gradient Boost框架下的模型,使用的是CART数中的回归树;
XGBoost:全称是 eXtremeGradient Boosting,主要解决有监督学习的问题。