task1的学习分为两部分
1.了解异常检测相关的基本概念。
2.学习异常检测的基本方法。
1.异常检测的基本概念
什么是异常检测?
按字面意思理解:异常检测就是识别与正常数据不同的数据,与预期行为差异大的数据。异常也被称为异常值、新奇、噪音、偏差和异常。如果是给定了带有正常值和异常值标签的数据,异常检测就相当于有监督学习的分类问题。
在一般的预测问题中,模型通常是对整体样本数据结构的一种表达方式,这种表达方式通常抓住的是样本的一般性质,不符合一般性质的点,我们称其为异常点,如果算法对异常点敏感,那么生成的模型并不能对整体样本有一个较好的表达(过拟合),预测就会不准确。虽然很多时候我们没那么喜欢这些“异常数据”,但在某些方面检测这些异常点有重要的意义,如疾病预测(健康人的身体指标往往是相似的,出现异常,则他的身体情况在某些方面肯定发生了改变)此外异常检测也可以应用到识别信用卡欺诈,工业生产异常,网络侵入等等少数的事件。
异常检测虽然是机器学习中一个比较小的分支,但他在各种人工智能落地应用如计算机视觉,数据挖掘,NLP当中都有着很重要的作用。
1.1异常的类别
点异常:少数实例异常。如病人和健康人的身体指标。(理解为一群蓝精灵当中混入了一只哆啦a梦)
条件异常:上下文异常,即在特定情况下个体实例是异常的,在其他情境下都是正常的。例如:特定情境下的快速信用卡交易。(此类异常多为时间序列中的异常,零下的温度在冬天是正常的,但是当他出现在夏天的气温时序数据中时就成了一个异常值)
群体异常:在群体集合中个体实例出现异常的情况,而个体实例可能是正常的。在入侵或者欺诈检测等应用中,离群点对应于多个数据点的序列,而不是单个数据点。例如社交网络中虚拟账号形成的集合作为群体异常子集,但子集中的个体节点可能与真实账号一样正常。
1.2异常检测任务分类
有监督学习:训练集正反例都有标签。(有监督学习:预测基于数据中已有的模式)
无监督学习:训练集无标签(无监督学习:发现数据中的隐藏模式,我们事先并不知道我们要找的模式是什么,需要依靠算法来发现)
半监督学习:训练集中只有正例,异常实例不参与训练。从给定的正常 训练数据集构建一个表示正常行为的模型,然后测试学习模型生成测试实例的可能性。
检测方法除以上机器学习外还可以用概率的知识,给出总体的分布来推断样本性质,统计则从样本出发来验证总体分布的假设。所以概率统计模型需要我们去验证模型假设的正确性,比如概率分布是否正确,参数的设置是否合理。
1.3异常值的判定
异常值的判定规则主要采用以下两种方式:
1.区间判定
给出一个阈值区间,实际观测落在区间之外则判定为异常。
2.二分判定
二分判定的前提是数据包含人工标注。异常值标注为1,正常值标注为0,通过机器学习方法给出观测为异常的概率。
1.4异常检测应用
故障检测:主要是监控系统,在故障发生时可以识别,并且准确指出故障的种类及出现的位置,主要应用领域包括银行欺诈,移动蜂窝数据网络故障,保险欺诈,医疗欺诈。
医疗日常检测:在许多医疗应用中,数据是从各种设备收集的,如核磁成像扫描,正电子发射断层扫描,心电图时间序列。这些数据中的异常模式通常反应疾病状况。
诈骗检测:信用卡交易
网络侵入检测:恶意活动,收集到的数据可能会显示异常行为,对此类活动的识别即为入侵检测
视屏异常检测:视频中异常行为检测是计算机视觉领域中的一个重要问题,用摄像头捕获到目标区域视频信息,算法需要自动检测出视频中不符合常规模式的行为(违反交通规则,打架斗殴,违法偷窃等)。
时间序列异常检测:时间序列是指某一个指标按照时间的统计或者观测而成的数列。比如,在运维的领域中,某主机每秒的CPU使用率、某业务每分钟的请求数量等,都可以形成一条时间序列。从正常的时间序列中识别不正常的事件或行为。
日志异常检测:
工业异常检测:
1.5异常检测的难点
1.数据量少,异常样本很少,有时候依赖于人工标签,属于样本不平衡问题。
2.噪音。异常和噪音有时很难进行区分。
1.4异常检测的优缺点
优点:能够检测新的入侵或从未发送的入侵;对操作系统的依赖性较小;可检测出属于滥用权限型的入侵。
缺点:报警率高,行为模型建立困难。
2.异常检测方法简介
异常检测
输入数据的特性
① 输入的数据包括:对象,点,记录,向量,事件等
② 属性的特点决定用异常检测的方法
③ 输入的数据可以彼此之间有关系
2.1基础方法
2.1.1基于统计学的方法
又可以分为参数化方法和非参数方法。
(1)参数方法基于假设:正常的数据都是由一个参数为·的分布产生的,概率函数 f(x,·)统计假设检验:
H0:假设数据由估计的分布产生(参数为·) 若是拒绝则这个假设为异常。
它可以基于高斯模型基于高斯分布的变形的算法 :Rosner test、 Dixon test、Slippage Detection test,
可以基于回归模型:基本回归分为两步:1、利用数据训练回归模型 2、利用残差,表示数据的异常程度
基于混合参数模型:分为两类:1、为异常和正常的数据作不同的参数分布模型 2、只为正常的数据作混合参数模型
(2)非参数方法
①基于直方图
利用直方图对正常数据画像
②基于核函数
③基于密度估计技术
2.1.2线性模型
主成分分析
它的应用场景是对数据集进行降维。
2.1.3基于邻近度的方法(数据点聚集度高,离群点较少)
1.基于集群
聚类算法是将数据点划分为一个个相对密集的簇,那些不能被归于某个簇的点则被视作离群点。聚类的主要目的通常是为了寻找成簇的数据.
2.基于距离(k近邻算法)。
获得一条数据的异常得分(计算到K个近邻的总的距离,利用距离小于d的近邻的数量)
提高效率—剪枝(线性)/抽样(o(mn))
3.基于密度(LOF)
以一条数据为中心,寻找能包含k个近邻的最小超平面,求其密度 (K/V) ,若是正常则与其临近点的密度相似,异常则比其最近临近点还会低
基于聚类和最近邻的区别:
聚类:利用数据所属的簇来评价数据
最近邻:用其局部的近邻来分析数据
2.2集成方法
集成方法将多个算法和基检测器的输出结合起来,提高算法精度。
2.2.1feature bagging
与bagging法类似,对象是feature
bagging是一种集成学习算法,是bootstrap aggregating的缩写,有些地方会叫做套袋法,袋装法,自助聚合。
2.2.2孤立森林
孤立森林基于决策二叉树,它的的基本原则是,离群值很少,而且远离其他观测值。为了构建树(训练),该算法从特征空间随机抽取一个特征,并在最大值和最小值之间随机选择一个分割值。这是为训练集的所有观察值而制定的。为了建造森林,一棵树的集合是使森林里的所有树木都平均。然后,对于预测,它将观察值与“节点”中拆分值对比,该节点将有两个子节点,然后进行另一个随机比较。一个实例的算法所产生的“splittings”的数量被命名为:“路径长度”。直观上来说,那些具有高密度的簇需要多次分割,而低密度的点很快会被孤立,这些点被认为是异常点。
本文章源自Datawhale开源课程