五种常用的异常值检测方法(均方差、箱形图、DBScan 聚类、孤立森林、Robust Random Cut Forest | 您所在的位置:网站首页 › 什么是异常检测基于异常检测方法 › 五种常用的异常值检测方法(均方差、箱形图、DBScan 聚类、孤立森林、Robust Random Cut Forest |
什么是异常/离群点? 在统计学中,离群点是并不属于特定族群的数据点,是与其它值相距甚远的异常观测。离群点是一种与其它结构良好的数据不同的观测值。 例如,你可以很清楚地看到这个列表中的离群点:[20,24,22,19,29,18,*4300*,30,18] 当观测值是一堆数字且都是一维时,辨别离群点很容易,但如果有数以千计的观测值或数据是多维的,你可能会需要更机智的方法来检测这些离群点。 我们为什么要关注异常值? 检测离群点或异常值是数据挖掘的核心问题之一。数据的爆发和持续增长以及物联网设备的传播,使我们重新思考处理异常的方式以及通过观察这些异常来构建的应用场景。 我们现在可以通过智能手表和手环每几分钟检测一次心率。检测心率数据中的异常可以帮助预测心脏疾病。交通模式中的异常检测可以帮助预测事故。异常检测还可用于识别网络基础设施和服务器间通信的瓶颈。因此,基于异常检测构建的使用场景和解决方案是无限的。 我们需要检测异常的另一个原因是,当为机器学习模型准备数据集时,这一点很重要:检测所有的离群点并解决它们或者第一时间弄清楚为什么会存在这些离群点。 下面,作者将从最简单的方法开始,带领我们探索五种检测异常的常用方法。 方法 1—均方差 在统计学中,如果一个数据分布近似正态,那么大约 68% 的数据值会在均值的一个标准差范围内,大约 95% 会在两个标准差范围内,大约 99.7% 会在三个标准差范围内。 因此,如果你有任何数据点超过标准差的 3 倍,那么这些点很有可能是异常值或离群点。 下面看一些代码。 import numpy as np import matplotlib.pyplot as plt seed(1) anomalies = [] # multiply and add by random numbers to get some real values data = np.random.randn(50000) * 20 + 20 # Function to Detection Outlier on one-dimentional datasets. def find_anomalies(random_data): # Set upper and lower limit to 3 standard deviation random_data_std = std(random_data) random_data_mean = mean(random_data) anomaly_cut_off = random_data_std * 3 lower_limit = random_data_mean - anomaly_cut_off upper_limit = random_data_mean + anomaly_cut_off print(lower_limit) # Generate outliers for outlier in random_data: if outlier > upper_limit or outlier |
CopyRight 2018-2019 实验室设备网 版权所有 |