4. 异常值检测基础:基于统计的检测(Z-Score、IQR)、基于距离的检测(KNN)、基于密度的检测(LOF)
各位好,我是老蓝。今天咱们聊聊ESG评分数据里最让人头疼的问题——异常值检测。
说实话,我刚开始做ESG数据治理那会儿,踩过不少坑。有一次,一家企业的碳排放数据突然飙升了300%,我差点就当成异常值给剔除了。后来一查,人家是因为收购了一家高耗能工厂,数据本身是真实的。你看,异常值检测这事儿,真不是简单套个公式就能搞定的。
今天我把三种最常用的方法掰开揉碎了讲给你听。每种方法我都会结合ESG场景,说说它的适用场景和坑在哪儿。
4.1 基于统计的检测:Z-Score 和 IQR
这两种方法,说白了就是看数据点离“正常范围”有多远。我个人习惯把它们当作第一道防线,因为计算简单,跑得快。
4.1.1 Z-Score 方法
Z-Score 的核心思想是:一个数据点离均值越远,它就越可能是异常值。公式很简单:
Z = (x - μ) / σ
其中 μ 是均值,σ 是标准差。通常我们取 |Z| > 3 作为异常值的判定标准。
ESG 场景举例:假设你有一家公司的 ESG 综合评分,均值是 65 分,标准差是 10 分。突然冒出来一个 98 分的,Z-Score 就是 (98-65)/10 = 3.3,超过 3 了,大概率是异常值。
4.1.2 IQR 方法
IQR(四分位距法)比 Z-Score 更稳健,因为它不受极端值的影响。它的逻辑是:
- 计算第一四分位数 Q1 和第三四分位数 Q3
- IQR = Q3 - Q1
- 正常范围: [Q1 - 1.5*IQR, Q3 + 1.5*IQR]
- 超出这个范围的就是异常值
我在项目中遇到过这样的情况:某家企业的环境评分突然从 70 分掉到 20 分。用 Z-Score 算,因为整体数据分布偏右,这个 20 分并没有超过 3 个标准差。但用 IQR 一算,它明显低于 Q1 - 1.5*IQR 的下限,被成功揪出来了。
4.2 基于距离的检测:KNN
KNN(K-近邻)异常检测,说白了就是看一个数据点离它的邻居有多远。如果一个点离所有邻居都很远,那它大概率是异常值。
具体做法是:
- 对每个数据点,找到它的 K 个最近邻居
- 计算它到这些邻居的平均距离
- 平均距离越大,越可能是异常值
ESG 场景举例:假设你有 100 家公司的数据,每家都有环境评分、社会评分、治理评分三个维度。用 KNN 检测时,如果某家公司的三个评分组合非常独特——比如环境评分极低但治理评分极高——它在三维空间里就会离其他点很远,KNN 就能把它识别出来。
关键参数:K 值的选择很讲究。K 太小(比如 K=1),容易把局部稀疏区域的正常点误判为异常;K 太大(比如 K=20),又可能把真正的异常点给平滑掉。我个人习惯从 K=5 开始试,然后根据结果调整。
嗯,这里要注意一点:KNN 的计算量比较大。如果你的数据量超过 10 万条,跑一次 KNN 可能要等很久。我建议先用统计方法粗筛一遍,把明显异常的点去掉,再用 KNN 做精细检测。
4.3 基于密度的检测:LOF
LOF(局部异常因子)是我个人最喜欢的方法。它比 KNN 更聪明的地方在于:它考虑了局部密度。
你想想看,有些数据点虽然离邻居远,但如果它所在的区域本身就很稀疏,那它可能不是异常值。LOF 能区分这种情况。
LOF 的核心逻辑是:
- 计算每个点的局部密度
- 比较该点的密度和它邻居的密度
- 如果该点的密度远低于邻居的密度,就是异常值
LOF 值大于 1 表示可能是异常值,大于 1.5 或 2 通常被认为是明显的异常。
ESG 场景举例:我记得有一次处理供应链 ESG 数据,发现一批小型供应商的评分普遍偏低,但分布很集中。如果用 KNN,这些小型供应商可能会被误判为异常值。但用 LOF 一看,它们的局部密度和邻居差不多,LOF 值接近 1,所以不是异常值。真正被揪出来的是一家大型供应商,它的评分突然暴跌,和周围的小型供应商形成了鲜明对比。
4.4 三种方法的对比与选择
说了这么多,到底该用哪种?我整理了一个表格,方便你对照选择:
| 方法 | 适用场景 | 优点 | 缺点 | ESG 典型应用 |
|---|---|---|---|---|
| Z-Score | 数据近似正态分布 | 计算快,解释性强 | 对偏态数据不敏感 | 单一指标(如碳排放强度)的快速筛查 |
| IQR | 数据有长尾或偏态 | 稳健,不受极端值影响 | 只考虑单维度 | ESG 综合评分的初步清洗 |
| KNN | 多维度数据,全局异常 | 直观,容易理解 | 计算量大,对 K 值敏感 | 多维度 ESG 评分的异常检测 |
| LOF | 密度不均匀的数据 | 能识别局部异常 | 参数调优复杂 | 供应链 ESG 数据的精细检测 |
4.5 知识体系总览
为了让你更直观地理解这三种方法的关系和适用场景,我画了一张图:
好了,以上就是异常值检测的三种基础方法。每种方法都有自己的脾气,关键是要理解它们的适用场景。我个人建议你从 IQR 开始上手,因为它简单、稳健,适合大多数 ESG 数据场景。等你熟练了,再尝试 KNN 和 LOF 做更精细的检测。
记住一点:异常值检测不是目的,目的是理解数据背后的业务逻辑。有时候,一个“异常值”可能恰恰是最有价值的信息。