异常点/离群点检测算法

发布时间:2018-07-24 14:45,

浏览次数:456

sklearn中关于异常检测的方法主要有两种:

1)、novelty detection:当训练数据中没有离群点,我们的目标是用训练好的模型去检测另外新发现的样本;

2)、outlier detection:当训练数据中包含离群点,模型训练时要匹配训练数据的中心样本,忽视训练样本中的其它异常点;

sklearn提供了一些机器学习方法,可用于奇异(Novelty )点或异常(Outlier)点检测,包括OneClassSVM、Isolation

Forest、Local Outlier Factor (LOF) 等。其中OneClassSVM可用于Novelty

Detection,而后两者可用于Outlier Detection。

参考

http://scikit-learn.org/stable/modules/outlier_detection.html#outlier-detection

一、OneClassSVM

http://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html#sklearn.svm.OneClassSVM

1、严格地讲,OneClassSVM不是一种outlier detection方法,而是一种novelty

detection方法:它的训练集不应该掺杂异常点,因为模型可能会去匹配这些异常点。

但在数据维度很高,或者对相关数据分布没有任何假设的情况下,OneClassSVM也可以作为一种很好的outlier detection方法。

2、其实在分类问题中,当两类样本及其不平衡时,也可以将个数比例极小的那部分当做异常点来处理,从另外一种角度来完成分类任务

二、IsolationForest

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.IsolationForest.html#sklearn.ensemble.IsolationForest

孤立森林(Isolation

Forest)是另外一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划分点(值)时都是随机的,而不是根据信息增益或者基尼指数来选择。在建树过程中,如果一些样本很快就到达了叶子节点(即叶子到根的距离d很短),那么就被认为很有可能是异常点。因为那些路径d比较短的样本,都是因为距离主要的样本点分布中心比较远的。也就是说,可以通过计算样本在所有树中的平均路径长度来寻找异常点。

三、Local Outlier Factor(LOF)

http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.LocalOutlierFactor.html#sklearn.neighbors.LocalOutlierFactor

https://github.com/wangyibo360/pylof

基于密度或距离的方法,适用于二维或高维坐标体系内异常点的判别,例如二维平面坐标或经纬度空间坐标下异常点识别

主要是通过比较每个点p和其邻域点的密度来判断该点是否为异常点,如果点p的密度越低,越可能被认定是异常点。至于密度,是通过点之间的距离来计算的,点之间距离越远,密度越低,距离越近,密度越高。

LOF通过计算一个数值score来反映一个样本的异常程度。这个数值的大致意思是:一个样本点周围的样本点所处位置的平均密度比上该样本点所在位置的密度。比值越大于1,则该点所在位置的密度越小于其周围样本所在位置的密度,这个点就越有可能是异常点。

四、基于高斯分布的方法

如果一个对象不服从该分布,则认为他是一个异常。有单元高斯分布和多元高斯分布

参考https://blog.csdn.net/u013082989/article/details/53911514

https://blog.csdn.net/u012328159/article/details/51462942

https://github.com/lawlite19/MachineLearning_Python/blob/master/AnomalyDetection/AnomalyDetection.py

在上、下α分位点之外的值认为是异常值,

五、如何设计选择features

异常检测算法其实就是对符合高斯分布的数据建模,如果样本不是很符合高斯分布,算法也可以很好的运行,但是如果把样本转换成高斯分布,算法的效果会更好。有时候我们会遇到样本不符合高斯分布的情况,而且偏的有点远,因此这时通常来讲我们需要对数据进行转换,让其符合高斯分布,一般可以通过对数转(log(x))进行转换。例如:

有时候我们还需要根据实际应用情况设计新的特征变量来帮助异常检测算法更好的检测离群点。

python离群点检测例子_异常点/离群点检测算法相关推荐

  1. python微信群管理开禁言_怎么设置群管理员-微信群最需要的,是禁言功能

    微信是人们沟通的重要方式.几乎每个人都加了很多微信群,有亲友群.同学群.同事群.兴趣群.小区群等.每个微信群里少则几十人,多则四五百人.每个群里都会有很多人发信息,有时候还是语音和视频的信息,所以,无 ...

  2. 钉钉群机器人关键词自动回复_企业微信群机器人怎么用?企业微信群机器人有什么功能?...

    使用企业微信办公时,我们可以在群聊中添加群机器人,自动推送消息,回答客户提问,那么企业微信群机器人怎么添加呢? 因为企业微信内部群机器人和外部群机器人的添加方式有一点区别,下面我们分开来讲述. 内部群 ...

  3. hough变换检测圆周_【视觉】视觉检测人应该了解的缺陷检测方法

    本文参考并摘引:李少波, 杨静, 王铮, 朱书德, 杨观赐. 缺陷检测技术的发展与应用研究综述. 自动化学报, 2020, 46(11): 2319−2336. doi: 10.16383/j.aas ...

  4. 安全检测报告_沙河办理厂房安全检测报告-全国认可

    沙河办理厂房安全检测报告-全国认可1.在施工场地周边的厂房,为了判别其在施工前后的安全性.判断受损程度.分析受损原因,在施工前后需要对厂房进行安全性鉴定:2.临时性厂房需要延长使用期的时候,需要对厂房 ...

  5. python大数据运维库_大数据集群运维(10)Pycharm下安装模块

    方法一:使用Pycharm的终端安装 一.网络爬虫 1.安装requests包 作用:简洁且简单的处理HTTP请求的第三方库 pip install requests 2.安装scrapy包 作用:快 ...

  6. 离群点检测方法_干货 :时间序列异常检测

    异常检测(Anomaly detection)是目前时序数据分析最成熟的应用之一,定义是从正常的时间序列中识别不正常的事件或行为的过程.有效的异常检测被广泛用于现实世界的很多领域,例如量化交易,网络安 ...

  7. vbs获取群聊当前内容_通过VBS脚本批量检测服务器状态 - 易本地工作室-Ebend SoftwareNetwork Studio - 群发,采集,管理类软件定制开发服务【易本地工作室】...

    脚本名称:通过VBS脚本批量检测服务器状态 脚本语言:VBS 原创作者:易本地工作室 艾云超 官方网站:易本地工作室 授权状态:免费 功能说明:通过VBS脚本批量检测服务器状态,是否可以访问,可以自定 ...

  8. python中关于命名的例子_利用Python批量重命名文件(给非技术人员的Python实例参考)...

    Python是一门"优雅"的计算机语言,而且就算10岁的小朋友也能学会,我一直向我身边的同学朋友同事推荐,不管他会不会编程. 这一回我需要完成的任务是把"照片" ...

  9. python提高办公效率的例子_怎样的办公室设计更利于提高工作效率

    面对社会经济的快速发展以及行业之间的竞争激烈,很多公司一直都在追求不断提高工作人员的工作效率.其实,通过科学的办公室设计也能起到提高人们工作效率的作用.今天小编便就这个话题跟大家聊一聊,看看什么样的办 ...

最新文章

  1. 3.6-fdisk命令
  2. requirejs 加载其它js
  3. RangeAssignor(范围分区)
  4. Java 的这 100 个坑,我发誓不会再踩了
  5. java url no protocol_httpurlconnection 新人使用遇到错误java.net.MalformedURLException: no protocol...
  6. 前端vscode常用插件
  7. Knative 初体验:Serving Hello World
  8. Win7系统打印机删除不掉的解决方法
  9. mysql显示表的所有列车_MySQL中查看当前数据库的所有表
  10. 什么叫小米粒吸尘机器人_2020年,吸尘器推荐选购,家用吸尘器什么牌子好?扫地机器人推荐,吸尘器选购避坑指南!...
  11. js能调用c语言吗,如何从Javascript调用Object-C?
  12. pythonios脚本语言-iOS开发Swift篇—(一)简单介绍
  13. app 常见网络性能
  14. 入门到精通!珍藏资源!VAE变分自编码器
  15. iOS开发系列--Objective-C之协议、代码块、分类
  16. 开源数据库系统之SQLite3.2.0、FireBird2.0 Alpha-1等
  17. 解决android SDK不能更新,appium测试混合app无法返回webview问题
  18. c语言吃豆豆游戏,高手帮我改下我的吃豆豆游戏吧
  19. STC单片机开发板介绍以及使用(51单片机介绍)
  20. Java编程练习:100以内的质数的输出

热门文章

  1. mysql 中存储引擎是什么意思_mysql常用的存储引擎是什么
  2. php 一致性hash,【转载】memcache分布式 [一致性hash算法] 的php实现
  3. 安卓连接linux软件,利用 Telnet 无线控制安卓手机 无需 Root
  4. 集合框架源码分析四(Collections类详细分析)
  5. 详细介绍Java和C++区别
  6. 产品经理入门——PM
  7. php蜘蛛池搭建教程,【小旋风教程】万能蜘蛛池x4安装教程 _ 惠州SEO
  8. oj上c语言编译错误,名字的漂亮度(华为OJ)C语言版本(提示格式错误,但是编译器没有报错,知道的网友提个意见)...
  9. Java设计模式(二):观察者设计模式
  10. Nginx中worker connections问题的解决方法