异常值检测与处理方法 - 数据分析的关键环节
在上一篇文章中,我讨论了异常值的理论概念,并试图回答一个问题:“什么时候应该删除异常值,什么时候应该保留它们?”在本文中,我将重点介绍异常值检测及其不同的处理方法。对于数据科学家来说,在训练机器学习算法进行预测建模之前,找到异常值并将其从数据集中移除是特征工程的重要部分。分类或回归数据集中的异常值可能会导致预测建模性能下降。
异常值检测的重要性
异常值是指与数据集中的其他数据点显著不同的数据点。它们可能是由于测量误差、数据的自然变化或意外发现引起的。异常值的存在可能会对数据分析结果产生重大影响,尤其是在机器学习和统计建模中。因此,识别和处理异常值是数据预处理中的关键步骤。
异常值的类型
异常值主要分为三种类型:
- 全局异常值:在整个数据集中显著不同的数据点,类似于“孤狼”。
- 上下文异常值:依赖于其周围环境的数据点,例如服装店的高销售额。
- 集体异常值:一组一起偏离的数据点,例如一组异常高的值。
异常值检测方法
异常值检测是一种用于在信息集中找到异常或异常数据点的方法。想象一下,你有一群朋友,你们的年龄都差不多,但有一个人比其他人年轻或年长得多。这个人将被视为异常值,因为他与通常的模式不同。在数据中,异常值是与大多数数据显著不同的点,检测它们有助于识别信息中的异常模式或错误。这种方法就像在群体中找到“异类”,帮助我们识别可能需要特别关注或调查的数据点。
异常值处理方法
根据异常值的性质和要解决的问题,有几种处理异常值的方法:
-
修剪(Trimming):将异常值从分析中排除。通过应用此技术,当数据集中存在更多异常值时,数据会变得“瘦”。它的主要优点是速度快。
-
封顶(Capping):在这种称为“异常值检测”的技术中,我们为数据设置上限和下限。例如,如果我们决定一个特定值,任何高于或低于该值的数据点都被视为异常值。数据集中的异常值数量可以为我们提供有关该封顶值的见解。
-
将异常值视为缺失值:通过将异常值视为缺失观测值,可以像处理缺失值一样处理它们。
-
离散化(Discretization):在异常值检测方法中,我们创建组并将异常值分类到特定组中,使它们遵循该组中其他点的相同行为。这种方法通常称为“分箱”。
如何检测异常值?
-
正态分布:使用正态分布的经验关系。落在均值-3标准差或均值+3标准差之外的数据点被视为异常值。
-
偏态分布:使用四分位距(IQR)接近规则。落在Q1 - 1.5 IQR或Q3 + 1.5 IQR之外的数据点被视为异常值。
-
其他分布:使用基于百分位的方法。例如,远离99%百分位和小于1%百分位的数据点被视为异常值。
在Python中检测和移除异常值
Z-score方法
假设:特征呈正态或近似正态分布。
步骤:
1. 导入必要的依赖库。
2. 读取并加载数据集。
3. 绘制特征的分布图。
4. 找到边界值。
5. 找到异常值。
6. 修剪异常值。
7. 对异常值进行封顶处理。
8. 使用“描述”函数查看统计信息。
IQR方法
适用于数据分布偏斜的情况。
步骤:
1. 导入必要的依赖库。
2. 读取并加载数据集。
3. 绘制特征的分布图。
4. 绘制偏斜特征的箱线图。
5. 找到IQR。
6. 找到上限和下限。
7. 找到异常值。
8. 修剪异常值。
9. 比较修剪前后的图。
10. 对异常值进行封顶处理。
11. 比较封顶前后的图。
百分位方法
步骤:
1. 导入必要的依赖库。
2. 读取并加载数据集。
3. 绘制“高度”特征的分布图。
4. 绘制“高度”特征的箱线图。
5. 找到上限和下限。
6. 应用修剪。
7. 比较修剪前后的分布图和箱线图。
8. 应用封顶(Winsorization)。
9. 比较封顶前后的分布图和箱线图。
结论
异常值检测和移除是机器学习模型数据分析的关键步骤,因为如果处理不当,异常值会显著影响模型的准确性。本文讨论的技术,如Z-score和四分位距(IQR),是异常值检测中最常用的方法。使用的技术取决于数据的具体特征,例如分布和变量数量,以及所需的结果。
关键要点
- 异常值可以通过修剪、封顶、离散化或将其视为缺失值来处理。
- 在正态分布中,使用经验关系来检测异常值,而在偏态分布中,使用四分位距(IQR)。对于所有其他分布,使用基于百分位的方法。
- 在Python中,通过导入必要的依赖库、读取和加载数据集、绘制分布图、找到边界值、找到异常值、修剪和封顶来实现Z-score处理。
常见问题解答
-
最流行的异常值检测技术有哪些?
最流行的异常值检测方法包括Z-Score、IQR(四分位距)、马氏距离、DBSCAN(基于密度的噪声应用空间聚类)、局部异常因子(LOF)和一类支持向量机(SVM)。 -
在数据科学项目中,我们可以使用哪些库和图表来检测和移除数据集中的异常值?
可以使用SciPy和NumPy等库来识别异常值。此外,箱线图、散点图和直方图等图表有助于可视化数据及其分布,以识别落在正常范围之外的值。 -
移除异常值有什么优势?
移除异常值的好处是通过减少它们对结果的影响来提高统计模型和机器学习算法的准确性和稳定性。异常值可能会扭曲统计分析并导致结果偏差,因为它们是与其他数据显著不同的极端值。通过消除异常值的影响,可以使结果更加稳健和准确。它还可以通过避免对极端值进行拟合来减少机器学习算法中的过拟合。 -
如何检测异常值?
检测异常值的步骤包括:识别与其余数据显著不同的数据点;使用统计方法(如Z-score、IQR、箱线图)、可视化方法(如散点图、直方图)或其他方法(如领域知识、机器学习中的孤立森林、局部异常因子);考虑异常值的定义、影响和处理方式(移除、封顶、转换)。
希望你喜欢这篇文章!在Python中移除异常值对于准确的数据分析至关重要。通过Z-score和IQR等方法,可以有效识别和移除异常值,从而获得更干净的数据集。
版权声明:
作者:5ifenxi
链接:https://5ifenxi.com/archives/1750.html
来源:爱分析网(5iFenXi.com)
文章版权归作者所有,未经允许请勿转载。