Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >10分钟掌握异常检测

10分钟掌握异常检测

作者头像
deephub
发布于 2021-10-09 08:15:52
发布于 2021-10-09 08:15:52
6450
举报
文章被收录于专栏:DeepHub IMBADeepHub IMBA

点击上方“Deephub Imba”,关注公众号,好文章不错过 !

异常检测(也称为离群点检测)是检测异常实例的任务,异常实例与常规实例非常不同。这些实例称为异常或离群值,而正常实例称为内部值。

异常检测可用于多种应用,例如:

  1. 欺诈识别
  2. 检测制造中的缺陷产品
  3. 数据清理——在训练另一个模型之前从数据集中去除异常值。

你可能已经注意到,一些不平衡分类的问题也经常使用异常检测算法来解决。例如,垃圾邮件检测任务可以被认为是一个分类任务(垃圾邮件比普通电子邮件少得多),但是我们可以用异常检测的方法实现这个任务。

一个相关的任务是奇异值检测(Novelty Detection)。它与异常检测的不同之处在于,假设该算法是在干净的数据集(没有异常值)上训练的。它被广泛应用于在线学习中,当需要识别一个新实例是否是一个离群值时。

另一个相关任务是密度估计。它是估计数据集生成的随机过程的概率密度函数的任务。密度估计通常用于异常检测(位于低密度区域的实例很可能是异常)和数据分析。通常使用基于密度(高斯混合模型或 DBSCAN)的聚类算法来解决。

统计方法

检测离群值最简单的方法是尝试统计方法,这是很久以前开发出来的。其中最流行的一种方法被称为离群值检测Tukey方法(或四分位数距离IQR) 。

它的本质是计算百分位数和四分位数之间的范围。位于Q1-1.5 * IQR之前和Q3 + 1.5 * IQR之后的数据点被认为是异常值。下面你可以看到一个使用人的身高数据集的例子。高度低于54.95英寸(139厘米)和高于77.75英寸(197厘米)被认为是异常值。

这种和其他统计方法(用于检测异常值的 z-score 方法等)通常用于数据清理。

聚类和降维算法

另一种简单、直观且通常有效的异常检测方法是使用一些聚类算法(如高斯混合模型和 DBSCAN)来解决密度估计任务。那么,任何位于低密度区域的实例都可以被认为是异常,我们只需要设置一些密度阈值。

此外,可以使用任何具有 inverse_transform() 方法的降维算法。这是因为异常的重建误差总是比正常实例的重建误差大得多。

孤立森林和 SVM

一些监督学习算法也可用于异常检测,其中最流行的两种是孤立森林和 SVM。这些算法更适合奇异值检测,但通常也适用于异常检测。

孤立森林算法构建了一个随机森林,其中每个决策树都是随机生长的。每走一步,这片森林就会隔离越来越多的点,直到所有点都变得孤立。由于异常位于远离通常数据点的位置,因此它们通常比正常实例以更少的步骤被孤立。该算法对于高维数据表现良好,但需要比 SVM 更大的数据集。

SVM(在我们的例子中是一类 SVM)也广泛用于异常检测。内核化 SVM 可以构建一个有效的“限制超平面”,它将正常点与异常点分开。像任何 SVM 修改一样,它可以很好地处理高维或稀疏数据,但仅适用于中小型数据集。

局部异常因子

局部异常值因子 (LOF) 算法基于异常位于低密度区域的假设。它不只是设置密度阈值(就像我们可以用 DBSCAN 做的那样),而是将某个点的密度与其最近邻居的 k 的密度进行比较。如果这个特定点的密度比它的邻点低得多(这意味着它离它们很远),它被认为是一个异常。

该算法既可用于异常检测,也可用于奇异值检测。由于其计算简单且质量好,会被经常使用。

最小协方差行列式

最小协方差行列式(MCD 或其修改型 Fast-MCD)可用于异常值检测,尤其是在数据清理的时候。它假设内点是从单个高斯分布中生成的,而离群点不是从这个分布中生成的。由于许多数据具有正态分布(或可以简化为正态分布),因此该算法通常表现良好。在 sklearn 中EllipticEnvelope类就是它的实现。

如何选择异常检测算法?

如果你需要清理数据集,你应该首先尝试经典的统计方法,比如 Tukey Method for Outlier Detection。如果知道数据分布是高斯分布 则可以使用Fast-MCD,。

如果你做异常检测不是为了数据清理,首先试试简单快速的LOF。如果它不能很好地工作(或者如果你出于某种原因需要分离超平面)——根据你的任务和数据集尝试其他算法:

  • 用于稀疏高维数据的单类SVM 或用于连续高维数据的孤立森林
  • 如果可以假设数据是由多个高斯分布的混合生成的,可以试试高斯混合模型

作者:Dmytro Nikolaiev

喜欢就关注一下吧:

点个 在看 你最好看!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LocalOnlyHotspot学习总结(二)
前几天学习了LocalOnlyHotspot相关内容,做了总结LocalOnlyHotspot学习总结,还有一些问题没有搞明白,最后搞清楚了,在这里记录一下。
用户7557625
2020/07/15
1.4K0
WiFiAp探究实录--功能实现与源码分析
Android虐我千百遍,我待Android如初恋。 ——————编辑于2017-08-02——————— wifi热点说的是wifiAp相关,所以如果源码开发的话,这个WifiAp算是一个搜索代码的关键字,含义是Wifi Access point,wifi接入点。所以下文中的wifi热点统一用WifiAp代替 wifiAp打开方式:设置->更多->移动网络共享->便携式wlan热点。 wifiAp打开条件:任何情况下均可。只是有内网外网之分。造成内外网之分的影响条件有sim卡和wifi
fanfan
2018/01/24
4.3K0
Android P中Wifi相关的状态机关联图
源码路径:http://androidxref.com/9.0.0_r3/xref/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java
用户7557625
2020/07/15
9430
Android P中Wifi相关的状态机关联图
Android 11 WiFi扫描流程梳理
上一篇我们梳理了WiFi的开启流程,Android11 WiFi开启流程,在最后我们说到ActiveModeWarden中注册了ClientListener监听器。我们接着这个逻辑继续梳理一下打开WiFi以后的扫描流程。
用户7557625
2021/07/21
4.6K0
Android 11 WiFi开启流程
从刚接触WiFi时跟过wifi的开启流程,当时还是android9。到了Android11代码架构有了不小的改动,在这里重新梳理一遍,便于在工作中更快速的跟踪代码。
用户7557625
2021/07/19
5.3K0
Android9.0 Wifi开启流程
摘要:Android9.0里wifi的框架做了一些变动,包括wifi开启流程,前面与8.0差不多,到了WifiServiceImpl后面就有了很大变动,网上大都是总结的8.0的流程,然而Android10.0都出来了,所以这里我把9.0里Wifi开启流程梳理一遍。
用户7557625
2020/07/15
1.5K0
Android11 WiFi连接流程梳理
一、可以看到点击连接以后,如果config不为null,则先保存网络,再进行连接,所以即使连接失败,此网络依然在已保存网络列表里。 packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java
用户7557625
2021/09/14
4K0
Android11 WiFi连接流程梳理
Android开启热点后作为路由器,获取AP端IP地址
最近在做类似面对面通信,需要一台手机作为AP端开启热点,另一台手机作为STA端连接热点,然后AP端告诉STA端它的IP地址,进行socket通信。 手机在联网时,就会被分配一个IP地址,它在开启热点时,它本身作为一个“路由器”也会生成一个IP地址,我们需要的就是后面这个IP地址,目前论坛上关于手机IP地址的帖子都是获取手机被分配的IP地址。我在解决这个问题时参考了蓝牙的配置IP地址,函数是configureBtIface(),在/frameworks/base/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java里。可以看到它也是先获取然后配置,参考这个,我写了获取热点IP地址的函数。
用户7557625
2020/07/15
3.2K0
Android 10.0热点为Enhanced Open模式时不允许WiFI和热点同时开启代码流程梳理
WLAN Enhanced Open :WiFi增强开放,这个功能就是当手机开启热点时,Securty的一个选项,与WPA2/WPA3同级,Enhanced Open就是不设置密码,但是增强了安全性。
用户7557625
2020/07/15
3.3K0
Handler消息处理机制详解
Handler封装了消息的发送,也负责接收消。通过post方法和sendMessage发送消息。内部会跟Looper关联。
用户7557625
2020/07/15
5380
Android自动连接指定的wifi,免密码或指定密码
遇到一个这样的要求:“不进行扫描操作,怎么对指定的免密码WIFI进行连接(之前没有连接过)”,于是动手写了一个Demo,如图所示未连接成功时的状态,第一个编辑框让用户输入SSID,第二个编辑框输入密码,密码可以根据实例情况输入,也可以不输入密码,因为有些Wifi免密码。这里的免密码不是指可以破解wifi密码。注意图片中手机顶部的wifi图标,是没有的,说明此时并没有打开手机的wifi。在手机上运行状态如下所示:
张果
2022/05/09
2.3K0
Android自动连接指定的wifi,免密码或指定密码
Android8.1的WIFI扫描后连接过程和配置IP地址
frameworks/base/wifi/java/android/net/wifi/WifiManager.java 在service中开启扫描。
用户7557625
2020/07/15
1.6K0
LocalOnlyHotspot学习总结
前言:最近项目用到了LocalOnlyHotspot,做Wifi半年了也是第一次接触,在这里把最近俩周的学习内容做个总结。
用户7557625
2020/07/15
1.7K1
Android P WiFi扫描流程详解
2、WifiTracker–>WifiManager WifiTracker 广播监听到WifiManager.WIFI_STATE_CHANGED_ACTION ,执行updateWifiState,确认WIFi开启以后,执行Scanner的resume函数。开启wifiManager.StartScan
用户7557625
2020/07/15
2.1K0
Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志
Tethering技术在移动平台上已经运用的越来越广泛了。它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi。USB或是Bluetooth等方式连接到此移动设备。在Android中能够将Wifi设为AP模式作为WLAN接入点。从而与其它设备共享Android的互联网连接。Android成为接入点后。就无法通过WLAN连接使用Android的应用程序訪问互联网,但能够通过其它方式如以太网或移动网络訪问互联网。
全栈程序员站长
2022/07/05
1.2K0
[Android][Framework]设置默认WiFi配置
点击Wifi热点配置选项,会弹出一个对话框,WifiApDialog.java。这个对话框会在onCreate的时候填入一些默认内容:
wOw
2020/01/20
2.7K0
WIFI 简单的连接及常用密码破解
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129092.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/28
1.7K0
Android WIFI使用简述
  随着Android版本的更新,目前最新的版本是Android 13,并且已经有部分国产手机更新了此版本,对于Android开发者来说,变化其实不那么大,而对于本文章来说就有一些变化。
晨曦_LLW
2023/02/26
3.3K0
Android WIFI使用简述
Android中WiFi的RX与TX获取流程以及配置
Android中的RX与TX,即WiFI的传输速率与接收速率,是在WifiConfigController里添加的,可以看到,只有它们的值不为0时,才会显示。
用户7557625
2020/07/15
2.4K0
Android开发中Wi-Fi处理
wps(wifi protected setup):是为了进一步增强wpa热点及简化连接过程的技术,不属于加密类型。
码客说
2019/10/22
4.4K0
相关推荐
LocalOnlyHotspot学习总结(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档