【机器学习】10分钟掌握异常检测
异常检测(也称为离群点检测)是检测异常实例的任务,异常实例与常规实例非常不同。这些实例称为异常或离群值,而正常实例称为内部值。
异常检测可用于多种应用,例如:
① 欺诈识别
② 检测制造中的缺陷产品
③ 数据清理——在训练另一个模型之前从数据集中去除异常值。
你可能已经注意到,一些不平衡分类的问题也经常使用异常检测算法来解决。例如,垃圾邮件检测任务可以被认为是一个分类任务(垃圾邮件比普通电子邮件少得多),但是我们可以用异常检测的方法实现这个任务。
一个相关的任务是奇异值检测(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 或用于连续高维数据的孤立森林
- 如果可以假设数据是由多个高斯分布的混合生成的,可以试试高斯混合模型
文章转载自公众号:机器学习算法与Python实战
- 分享
- 举报
-
浏览量:1792次2023-04-20 15:08:11
-
浏览量:4606次2021-07-22 10:46:17
-
浏览量:6887次2021-02-02 17:45:32
-
浏览量:1374次2019-10-10 10:16:48
-
浏览量:2307次2019-10-14 10:38:11
-
浏览量:1890次2021-12-30 13:59:32
-
浏览量:3687次2022-11-14 17:33:44
-
浏览量:1965次2018-01-20 17:08:47
-
浏览量:9819次2021-02-23 14:31:42
-
浏览量:3210次2022-03-21 09:00:28
-
浏览量:4718次2021-04-01 15:39:46
-
浏览量:4830次2021-02-01 17:23:10
-
浏览量:174次2023-08-16 18:28:43
-
浏览量:1918次2022-12-08 11:08:13
-
浏览量:123次2023-08-23 08:46:26
-
浏览量:524次2023-12-21 10:45:56
-
浏览量:1277次2023-02-09 14:08:35
-
浏览量:2975次2020-02-25 18:18:11
-
浏览量:7071次2021-05-11 17:04:57
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
outman
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明