非监督异常点检测算法总结

一、基于密度

1) d(p,o):两点p和o之间的距离;

2) k-distance:第k距离

对于点p的第k距离dk(p)定义如下:

p的第k距离,也就是距离p第k远的点的距离,如图。

3) k-distance neighborhood of p:第k距离邻域

点p的第k距离邻域Nk(p),就是p的第k距离即以内的所有点,包括第k距离。

因此p的第k邻域点的个数 |Nk(p)|≥k。 上图中,p的第k邻域就是圆里面的点,包括边界上的点。

4) reach-distance:可达距离

点o到点p的第k可达距离定义为:

reachdistancek(p,o)=max{k−distance(o),d(p,o)}

也就是,点o到点p的第k可达距离,至少是o的第k距离,或者为o、p间的真实距离。

这也意味着,离点o最近的k个点,o到它们的可达距离被认为相等,且都等于dk(o)。

如图,o1到p的第5可达距离为d(p,o1),o2到p的第5可达距离为d5(o2)。

5) local reachability density:局部可达密度

点p的局部可达密度表示为:

lrdk(p)=1/(∑o∈Nk(p)reach−distk(p,o)|Nk(p)|)

表示点p的第k邻域内所有点到p的可达距离的平均数的倒数。 (其实也就是用平均举例的倒数作为密度)

这个值的含义可以这样理解,首先这代表一个密度,密度越高,我们认为越可能属于同一簇,密度越低,越可能是离群点。如果p和周围邻域点是同一簇,那么可达距离越可能为较小的dk(o),导致可达距离之和较小,密度值较高;如果p和周围邻居点较远,那么可达距离可能都会取较大值d(p,o),导致密度较小,越可能是离群点。

6) local outlier factor:局部离群因子 (score)

点p的局部离群因子表示为:

LOFk(p)=∑o∈Nk(p)lrdk(o)lrdk(p)|Nk(p)|=∑o∈Nk(p)lrdk(o)|Nk(p)|/lrdk(p)

表示点p的邻域点Nk(p)的局部可达密度与点p的局部可达密度之比的平均数。

如果这个比值越接近1,说明p的其邻域点密度差不多,p可能和邻域同属一簇;如果这个比值越小于1,说明p的密度高于其邻域点密度,p为密集点;如果这个比值越大于1,说明p的密度小于其邻域点密度,p越可能是异常点。

主要是通过比较每个点p和其邻域点的密度来判断该点是否为异常点,如果点p的密度越低,越可能被认定是异常点。至于密度,是通过点之间的距离来计算的,点之间距离越远,密度越低,距离越近,密度越高,完全符合我们的理解。而且,因为lof对密度的是通过点的第k邻域来计算,而不是全局计算,因此得名为“局部”异常因子,这样,对于分散度不同的聚类,lof完全可以正确处理,而不会因为数据密度分散情况不同而错误的将正常点判定为异常点。

二、基于矩阵分解

思路:选取特征主成分,将原数据映射到主成分坐标系实现降维。再把降维后的数据映射回原数据的坐标系

主成分:数据差异性大的方向

先计算不同特征的方差,第一个主成分方向就是方差最大的特征的方向,方差从大到小排列取前N,构成N维新坐标系,

根据重构之后的数据和原数据比较,得到误差score作为异常点的评价分数

三、Replicator Neural Network

输入和输出是一样的,都是每条数据的特征值

整个流程相当于把数据先压缩再恢复。

在神经网络传输的时候,中间使用了 tanh 函数和 sigmoid 函数。这个神经网络是训练一个从输入层到输出层的恒等函数(identity mapping),传输的时候从输入层开始压缩数据,然后到了第二个隐藏层的时候开始解压数据。训练的目标就是使得整体的输出误差足够小,整体的误差是由所有的样本误差之和除以样本的个数得到的。

第二层和第四层的激活函数都是tanh

第三层是一个阶梯函数,图像如下

参考资料:

https://zr9558.com/2016/06/23/outlierdetectiontwo/

https://zr9558.com/2016/06/12/replicator-neural-networks/

转载于:https://www.cnblogs.com/bonelee/p/9174744.html

非监督异常点检测算法总结——没有想到矩阵分解和编码解码器也是一种思路...相关推荐

  1. Python机器学习笔记:异常点检测算法——Isolation Forest

    Python机器学习笔记:异常点检测算法--Isolation Forest 参考文章: (1)Python机器学习笔记:异常点检测算法--Isolation Forest (2)https://ww ...

  2. 异常点检测算法(三)Replicator Neural Networks

    异常点检测算法(三)Replicator Neural Networks 异常值检测算法在数据挖掘的诸多领域有着应用场景,例如金融领域,信息传输领域,图像领域等.在研究过程中,有学者给出了异常点的一个 ...

  3. RX异常点检测算法(马氏距离)

    异常检测算法目的在于从影像中将目标信息(异常信息)从影响背景和噪声中分离出来.RX异常检测算法为一种局部目标检测算法,算法的监测窗口包括目标窗口和背景窗口,且后者远大于前者.RX算法假设数据空间白化且 ...

  4. 机器学习:无监督异常检测算法

    文章目录 应用场景 特征值选取 多元正态分布 总感觉不像机器学习算法...像个概率论的高级计算器. 应用场景 异常检测问题指,给定数据集,假定他们都是正常or异常的,当出现一个新样本时,判断该新样本是 ...

  5. 时间序列异常点检测算法(Smoothed z-score algorithm)

    目录 前言 一.原理 二.代码实现 总结 前言 时间序列异常点处理! 一.原理 算法原理:利用滑动窗口对之后的节点值做一个范围预测(利用平均值和方差),如果真实节点不在这个范围,则表明该节点是异常值. ...

  6. 弱监督目标检测算法论文阅读(五)Combinational Class Activation Maps for Weakly Supervised Object Localization

    Abstract 弱监督的对象定位最近吸引了关注,因为它旨在通过使用图像级标签来识别类标签和对象位置.先前的大多数方法都使用与最高激活源相对应的激活图.仅利用一个最高概率类别的激活图通常会偏向有限的区 ...

  7. 弱监督目标检测算法论文阅读(六)Erasing Integrated Learning : A Simple yet Effective Approach for Weakly Supervised

    这是一篇CVPR2020的中山大学的一篇文章,提出了一个新颖的擦除网络. Abstract 弱监督对象定位(WSOL)旨在仅通过图像级别标签之类的弱监督来定位对象.但是,基于分类网络的可用技术的一个长 ...

  8. python时间序列异常值查找_(No.38)时间序列异常点检测算法

    写在前面: 针对一个数值序列,识别出其中的异常波动点.例如: p = [1 1 1.1 1 0.9 1 1 1.1 1 0.9 1 1.1 1 1 0.9 1 1 1.1 1 1 1 1 1.1 0. ...

  9. 弱监督目标检测算法论文阅读(四)Localizing Common Objects Using Common Component Activation Map

    Abstract 在这项工作中,我们提出了一种从一组图像中的新颖对象类别中定位常见对象的方法. 我们使用新的通用组件激活图(CCAM)解决了这个问题,其中我们将特定于类别的激活图(CAM)视为组件,以 ...

最新文章

  1. python中的sys的概念和作用_Python(os和sys)理解
  2. java pdf电子签名_如何使用java在数字签名的pdf中添加空白页?
  3. RHEL/CENTOS 性能优化
  4. python c cmd_在Python cmd模块中处理CTRL-C
  5. win10文件显示后缀名_win10系统,如何去除“此电脑” 里的6个多余文件夹
  6. Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系...
  7. 任务调度-java普通工程通过Timer实现
  8. 计算机做镜像步骤,如何将当前的操作系统做成镜像?
  9. 2013汇总计算 广联达gcl_Revit软件与广联达软件两者的区别?哪个好?
  10. php中throw try,PHP的Try, throw 和 catch简单用法_PHP教程
  11. c#事件的发布-订阅模型_NET Core 3 WPF MVVM框架 Prism系列之事件聚合器
  12. 教大家一个免费复制粘贴百度文库文字的方法
  13. virtualBox虚拟机之间网络互通设置
  14. 增强现实中的光学透射式头盔显示器的标定初步
  15. 怎样去识别是否双线主机服务器的方法
  16. axure 设置背景虚化_axure 设置背景虚化_「PPT素材」 77幅各种墙面砖墙纹理背景...
  17. 深入学习用 Go 编写 HTTP 服务器
  18. 将 Cpar 文件导入 2019 版的 Carsim 后,无法打开 video+plot 是什么问题?
  19. 云速建站:关于企业版的几点说明
  20. Linux下for语句

热门文章

  1. linux 添加动态链接库路径
  2. oracle的后缀名,oracle表空间名字的后缀 :.ora和.dbf有什么不同?
  3. vc的速度有c语言快吗,大家帮看看,怎么回事?Delphi竟比vc++还快
  4. 适合手机运行的服务器系统,一台服务器能维持多久?谈谈服务器的运行寿命
  5. php ios视频文件上传,iOS实现视频和图片的上传思路
  6. java 底层运行_从表面到底层丨Java和JVM的运行原理,现在带给你
  7. h2 迁移到 mysql_[saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
  8. json_decode的结果为null,json_encode的结果为
  9. 入职阿里啦!极客时间kotlin
  10. 【机器学习入门到精通系列】粒子群优化算法