4. 数据探索与分布分析:用 SQL 计算均值、中位数、标准差、分位数等统计量
在模型可解释性中,理解特征变量的分布是第一步。分布统计量能够揭示数据的集中趋势、离散程度和偏态特征,帮助数据科学家识别异常值、数据倾斜以及潜在的模型偏差。SQL 作为数据查询的核心语言,提供了丰富的聚合函数来高效计算这些统计量。本章将系统讲解如何用 SQL 计算均值、中位数、标准差、分位数等关键分布指标,并探讨它们在模型可解释性中的具体应用。
4.1 集中趋势统计量:均值与中位数
集中趋势描述了数据分布的中心位置。均值(Mean)对异常值敏感,而中位数(Median)则具有稳健性。在模型解释中,比较特征均值与中位数的差异可以快速判断数据是否偏态分布。
| 统计量 | SQL 实现方式 | 对异常值敏感度 | 模型可解释性用途 |
|---|---|---|---|
| 均值 (Mean) | AVG(column) |
高 | 评估特征整体水平,用于 SHAP 基准值计算 |
| 中位数 (Median) | PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY column) |
低 | 反映典型用户/样本特征,用于分箱与分段解释 |
实践要点: 当均值显著大于中位数时,数据呈右偏分布(长尾在右侧),这在收入、点击量等特征中常见。在模型解释时,应优先使用中位数作为“典型值”的参考基准。
-- 计算特征 "loan_amount" 的均值与中位数
SELECT
AVG(loan_amount) AS mean_loan_amount,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY loan_amount) AS median_loan_amount
FROM loan_applications;
4.2 离散程度统计量:标准差与方差
离散程度衡量数据的波动性。标准差(Standard Deviation)是方差的平方根,与原始数据单位一致,更便于解释。在模型可解释性中,标准差用于评估特征的重要性稳定性以及预测置信区间。
- 方差 (Variance):
VAR_POP(column)或VAR_SAMP(column),分别对应总体方差和样本方差。 - 标准差 (StdDev):
STDDEV_POP(column)或STDDEV_SAMP(column)。 - 应用场景: 在特征重要性排序中,标准差较大的特征往往对模型输出的波动贡献更大,是解释模型不稳定性的关键线索。
-- 计算特征 "age" 的总体标准差与样本标准差
SELECT
STDDEV_POP(age) AS population_stddev,
STDDEV_SAMP(age) AS sample_stddev,
VAR_POP(age) AS population_variance
FROM customer_data;
模型解释提示: 如果某个特征的标准差接近 0,说明该特征在数据集中几乎为常数,对模型预测的贡献极小,在 SHAP 或 LIME 解释中可视为低重要性特征。
4.3 分位数与四分位距 (IQR)
分位数(Quantile)将数据划分为等份区间,常用的有四分位数(Q1、Q2、Q3)和百分位数。四分位距(IQR = Q3 - Q1)是衡量数据中间 50% 分布宽度的稳健统计量,不受极端值影响。
| 分位数 | SQL 函数 | 含义 | 在可解释性中的作用 |
|---|---|---|---|
| Q1 (25%) | PERCENTILE_CONT(0.25) ... |
下四分位数 | 定义特征的低值区间,用于局部解释 |
| Q2 (50%) | PERCENTILE_CONT(0.5) ... |
中位数 | 典型值基准 |
| Q3 (75%) | PERCENTILE_CONT(0.75) ... |
上四分位数 | 定义特征的高值区间,用于异常检测 |
| IQR | Q3 - Q1 |
四分位距 | 识别离群点(< Q1 - 1.5*IQR 或 > Q3 + 1.5*IQR) |
-- 计算特征 "income" 的四分位数及 IQR
WITH quartiles AS (
SELECT
PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY income) AS q1,
PERCENTILE_CONT(0.50) WITHIN GROUP (ORDER BY income) AS q2,
PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY income) AS q3
FROM customer_data
)
SELECT
q1, q2, q3,
(q3 - q1) AS iqr,
(q1 - 1.5 * (q3 - q1)) AS lower_fence,
(q3 + 1.5 * (q3 - q1)) AS upper_fence
FROM quartiles;
4.4 分布统计量在模型可解释性中的综合应用
将上述统计量组合使用,可以构建特征分布的完整画像。下图展示了从原始数据到模型解释的统计量应用流程。
4.5 分组分布分析:按类别计算统计量
在模型解释中,经常需要比较不同分组的特征分布。例如,比较“违约用户”与“正常用户”的收入分布差异。使用 SQL 的 GROUP BY 子句可以高效实现分组统计。
-- 按贷款状态分组计算收入分布统计量
SELECT
loan_status,
COUNT(*) AS sample_count,
AVG(income) AS mean_income,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY income) AS median_income,
STDDEV_SAMP(income) AS stddev_income,
PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY income) AS q1_income,
PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY income) AS q3_income
FROM loan_data
GROUP BY loan_status
ORDER BY loan_status;
注意: 当分组样本量较小时(如少于 30 条),标准差和分位数的统计意义会下降。在模型解释报告中,建议同时输出样本量
COUNT(*),以便评估统计量的可靠性。
4.6 分布统计量在 SHAP 与 LIME 中的角色
分布统计量不仅是数据探索的工具,更是模型可解释性方法的基础输入:
- SHAP 基准值: SHAP 值中的基准值(base value)通常等于目标变量的均值。理解特征均值有助于解释 SHAP 力图。
- LIME 局部采样: LIME 在生成局部解释时,会基于特征的标准差和分位数进行扰动采样。标准差决定了采样范围。
- 偏态校正: 对于高度偏态的特征,模型解释时建议使用对数变换或分箱,而分位数统计量是确定分箱边界的直接依据。
-- 计算特征分布统计量,为 SHAP 解释提供上下文
SELECT
'feature_importance_context' AS context,
AVG(target) AS mean_target, -- SHAP 基准值
STDDEV_SAMP(feature_x) AS feature_x_std,
PERCENTILE_CONT(0.05) WITHIN GROUP (ORDER BY feature_x) AS p5,
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY feature_x) AS p95
FROM model_training_data;
4.7 本章小结
通过 SQL 计算均值、中位数、标准差和分位数,数据科学家能够快速建立对特征分布的量化认知。这些统计量在模型可解释性中扮演着多重角色:从识别数据偏态、检测异常值,到为 SHAP 和 LIME 提供基准参数。掌握这些 SQL 技能,是构建可信、可解释机器学习模型的基础能力。