异常值检验
还是碰到了异常值处理的问题,然后这里还是写篇blogs汇总一些相关的算法,我尽量全面一些吧, ### 1. 基于统计的方法
(1)修正Z-Score法
- 适用场景:单变量数据,数据分布轻微偏离正态或存在少量异常值干扰时。
- 使用方法:
- 计算数据的中位数(Median)和MAD(Median Absolute Deviation)。
- 使用修正Z-Score公式:$ = $ 。
- 设定阈值(如 |修正Z| > 3),超出视为异常值。
- 计算数据的中位数(Median)和MAD(Median Absolute Deviation)。
- 本质:用中位数和MAD替代均值和标准差,减少异常值对统计量的影响。
- 局限性:仅适用于单变量,对极端偏态分布可能不敏感。
- 优势:比传统Z-Score更稳健,适合处理有污染的数据。
(2)Grubbs检验
- 适用场景:严格正态分布的单变量数据,需检测单个异常值。
- 使用方法:
- 假设数据服从正态分布,计算最大值或最小值的Grubbs统计量。
- 对比临界值表(依赖样本量和显著性水平α),判断是否拒绝原假设(无异常值)。
- 假设数据服从正态分布,计算最大值或最小值的Grubbs统计量。
- 本质:通过假设检验识别单个异常值。
- 局限性:需严格正态性假设,且只能逐个检测。
- 优势:统计学意义明确,适合科研场景。
2. 基于分位数的方法
(1)IQR法(箱线图法)
- 适用场景:任意分布的单变量数据,尤其是偏态分布。
- 使用方法:
- 计算Q1(25%分位数)、Q3(75%分位数)及IQR = Q3 - Q1。
- 设定异常值范围:$ = Q1 - 1.5 , = Q3 + 1.5 $。
- 计算Q1(25%分位数)、Q3(75%分位数)及IQR = Q3 - Q1。
- 本质:通过分位数定义数据的“正常范围”,对尾部数据敏感度低。
- 局限性:可能遗漏多变量组合异常,阈值固定(1.5倍IQR)。
- 优势:简单高效,无需分布假设。
(2)百分位数截断法
- 适用场景:经验分布未知,需快速截断极端值(如金融风控)。
- 使用方法:直接去除前α%和后β%的数据(如α=1%,
β=1%)。
- 本质:基于经验分位数硬截断,依赖领域知识设定阈值。
- 局限性:可能误删正常数据,阈值选择主观。
- 优势:快速直接,适用于高噪声场景。基本上就等于瞎用。
3. 基于距离的方法
(1)马氏距离(Mahalanobis Distance)
- 适用场景:多变量数据,变量间存在相关性(如身高体重组合异常)。
- 使用方法:
- 计算数据协方差矩阵Σ及其逆矩阵。
- 计算每个样本的马氏距离:$ D = $ 。
- 基于χ²分布设定阈值(如置信度95%)。
- 计算数据协方差矩阵Σ及其逆矩阵。
- 本质:考虑变量相关性的广义距离,识别多维空间中的离群点。
- 局限性:依赖协方差矩阵估计,对高维数据不稳定(需样本量>维度)。
- 优势:全面捕捉多变量异常。
(2)K近邻(K-NN)距离法
- 适用场景:非结构化数据或局部异常检测(如图像、文本)。
- 使用方法:
- 计算每个点到其K个最近邻的平均距离。
- 距离超过阈值的点视为异常。
- 计算每个点到其K个最近邻的平均距离。
- 本质:通过局部密度差异识别异常,稀疏区域的点更可能异常。
- 局限性:计算复杂度高,需选择K值。
- 优势:无需分布假设,适合复杂数据结构。
4. 基于密度的方法
(1)局部离群因子(LOF)
- 适用场景:多变量数据,检测局部密度异常的样本(如密集区域中的稀疏点)。
- 使用方法:
- 计算每个点的局部密度(K邻域内点的密度)。
- LOF值 = 该点密度与邻居密度的平均比值,LOF ≫1 则为异常。
- 计算每个点的局部密度(K邻域内点的密度)。
- 本质:通过相对密度判断异常,解决全局方法在局部区域的盲区。
- 局限性:计算复杂度高,对K值敏感。
- 优势:能识别“局部”异常,适合非均匀分布数据。
5. 机器学习方法
(1)孤立森林(Isolation Forest)
- 适用场景:高维数据、非结构化数据(如日志、时间序列)。
- 使用方法:
- 构建多棵随机树,通过随机分割特征空间隔离样本。
- 异常值因路径较短被快速隔离,计算异常分数。
- 构建多棵随机树,通过随机分割特征空间隔离样本。
- 本质:异常值在特征空间中更易被“孤立”。
- 局限性:对局部异常可能不敏感,需调参(树的数量、深度)。
- 优势:线性时间复杂度,适合大规模数据。
(2)DBSCAN聚类
- 适用场景:基于密度的聚类,自动识别噪声点作为异常值。
- 使用方法:
- 设定邻域半径ε和最小样本数min_samples。
- 无法形成核心簇的点标记为噪声(异常值)。
- 设定邻域半径ε和最小样本数min_samples。
- 本质:将低密度区域点视为异常。
- 局限性:对ε和min_samples敏感,高维数据效果差。
- 优势:无需预设异常值比例,适合未知分布数据。
总结:注意事项与方法选择
注意事项
- 避免盲目删除:异常值可能是关键信号(如欺诈、设备故障),需结合业务判断。
- 多变量协同分析:单变量方法可能遗漏组合异常(如身高正常但体重极低)。
- 动态调整阈值:流数据或分布漂移时,需滚动更新统计量(如移动窗口IQR)。
- 可视化验证:箱线图、散点图矩阵、t-SNE降维图辅助决策。
方法选择指南
场景特征 | 推荐方法 |
---|---|
单变量、近似正态分布 | 修正Z-Score、3σ原则 |
单变量、偏态分布 | IQR法、百分位数截断 |
多变量、变量相关 | 马氏距离、LOF |
高维数据、计算效率要求高 | 孤立森林 |
局部异常检测 | LOF、K-NN距离 |
无分布假设、自动化需求 | DBSCAN、百分位数截断 |
核心原则
- 简单优先:单变量数据优先用IQR或Z-Score。
- 领域适配:金融风控用百分位数截断,工业检测用LOF或孤立森林。
- 交叉验证:结合统计检验(如正态性检验)和业务反馈优化阈值。
- 简单场景:IQR(稳健)、Z-Score(正态分布)。
- 复杂场景:LOF(局部异常)、孤立森林(高维数据)。
- 领域结合:根据业务背景选择方法(如百分位数截断用于金融风控)。
- 交叉验证:结合统计检验(如正态性检验)和领域知识优化策略。
当然,具体应用的话还是要看你的这个题目是第几题,时间多少,能拿多少时间来做这个东西。
异常值检验
http://example.com/2025/05/01/数学建模/数据处理/2025-05-01-异常值处理/