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 分布统计量在模型可解释性中的综合应用

将上述统计量组合使用,可以构建特征分布的完整画像。下图展示了从原始数据到模型解释的统计量应用流程。

分布统计量在模型可解释性中的应用流程 原始特征数据 SQL 聚合:均值、中位数、标准差、分位数 分布特征:偏态、离散度、异常值区间 可解释性输出:特征重要性校准、局部解释、异常检测 关键洞察 均值 vs 中位数 → 偏态判断 标准差 → 特征波动性 IQR → 异常值识别

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 技能,是构建可信、可解释机器学习模型的基础能力。