样本均衡诊断

所属分类:特征工程

这个方法是做什么的

看一个分类目标变量的各个类别是不是差得太悬殊。它给出每个类别的频数、占比与占比的 Wilson 95% 置信区间,以及与"各类等概率"这个基准相比的期望频数和实际减期望的差额;再用卡方拟合优度检验正式回答"分布是否偏离均等",并对每个类别做调整标准化残差的事后检验,附 Bonferroni 与 Holm 两套校正后的 p(判定以 Holm 为准)。

真正用来判断"严不严重"的是第四张卡那组不随样本量放大的指标:不平衡比 IR(最大类 ÷ 最小类,分级为 <1.5 基本均衡、1.5~3 轻度、3~10 中度、≥10 重度)、Cohen's w 与 Cramér's V 及其 95% 置信区间、香农熵与归一化熵(均衡度)、Gini 不纯度。第一张卡还替后续建模核对了两条:卡方近似要求各类期望频数不小于 5,分层 K 折要求最小类不少于 10 例。它只诊断,不做任何重采样,也不修改你的数据。

需要准备什么数据

  • 放入[定类]分类目标变量:不限

数据要求

  • 数据表至少 10 行。
  • 单列缺失率不超过 50%。
  • 「放入[定类]分类目标变量」的类别数需在 2~50 之间。

以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。

什么时候用它

  • 建分类模型之前,先看清标签有多偏
  • 手上模型的准确率很漂亮,想确认是不是被多数类撑起来的
  • 需要一个可写进论文的不平衡程度描述(IR、均衡度、Cohen's w 及其区间)
  • 判断少数类的样本量够不够做分层交叉验证

前提是目标变量为分类变量、类别数在 2 到 50 之间,且数据表至少 10 行——8 行的表在入口就被挡下:"当前数据表共 8 行,少于样本均衡诊断所需的至少 10 行"。取值超过 50 个的多半是连续变量或 ID 列,诊断没有意义。第一张卡另会核对"有效样本量 ≥ 5"与卡方近似所需的期望频数条件。

什么时候不要用它

  • 目标变量是连续的:连续变量不存在"类别不平衡",要看分布形态用「描述性统计」,要看偏离正态多少用「正态性分析」。
  • 这一列取值上百个,或本来就是编号、ID:不构成分类问题,只想看各取值出现多少次用「频数分析」。
  • 你要看的是两个分类变量之间的关系:本模块只看一个变量自己的构成,交叉构成用「列联(交叉)分析」,是否独立用「卡方检验」。
  • 你要比的不是"均等"而是某个理论比例(如 3:1、按人口普查构成):本模块的卡方拟合优度写死了等概率基准,自定义期望比例用「卡方拟合优度检验」;只有两个类别时用「二项式检验」。
  • 你关心的是模型在不平衡下表现如何:诊断不建模,先用「随机森林分类」这类分类模块建模,再用「ROC曲线分析」看阈值无关的判别力。

容易误读的地方

  • 类别不平衡时准确率是误导性指标,报告已经把参照物算给你了。 全部预测成多数类的那个"无脑基线",准确率就等于多数类占比——示例里是 89.00%。一个准确率 90% 的模型在这份数据上几乎什么也没学到。任何准确率都必须与这个基线对比才有意义,评估应改看召回率、F1、PR-AUC 这些对少数类敏感的指标。这也是本模块把多数类占比单列出来的原因。
  • 卡方显著不等于需要处理。 那个检验回答的只是"分布是否偏离等概率",大样本下 51:49 也会显著;反过来样本很小时,IR = 5 的严重不平衡也可能检不出来。是否严重到影响建模,看的是效应量——IR、Cohen's w、归一化熵,它们不随样本量放大。报告的表注把这件事写死了:判定以效应量为准,不以 p 值为准。
  • IR 之外还要看少数类的绝对例数,后者往往更要命。 IR = 8 且少数类有 2200 例,和 IR = 8 但少数类只有 22 例(示例那种),建模难度完全不是一回事:前者信息充足,后者随便一折交叉验证就可能分不到几个正例。第一张卡专门核对"最小类 ≥ 10",那是十折分层交叉验证的实践下限,不是统计学意义上的充分条件。
  • 不平衡本身不是数据错误,重采样也不是默认动作。 违约率 11%、罕见病发病率 0.3%,这些就是总体的真实先验。重采样会改变类别先验,从而让模型输出的预测概率整体失真——如果你关心的是"这个客户违约的概率是多少"而不是"贴哪个标签",通常不该重采样,改用类权重或调整决策阈值更合适;真做了重采样,输出概率需要另做校准。
  • 本模块不动数据,重采样只能在训练折内做。 它只统计分布。如果你之后要用 SMOTE 或欠采样,必须在训练/验证划分之后、只在训练折上做——在划分之前对全量数据重采样,合成出来的少数类样本会同时出现在训练与验证两侧,这是典型的数据泄漏,评估结果会虚高。
  • 归一化熵是"相对最大熵的比例",不能按直觉读。 示例里 89:11 的分布,均衡度算出来是 0.4999,看着像"一半均衡",实际上已经是中度不平衡了。它的定义是 H/ln k,只在 1 表示完全均衡、0 表示全部集中于一类这两端有干净含义,中间的数值需要对照 IR 一起看。
p 值不是效应量
概念图1 p 值不是效应量
同一个差异,只把样本量从 20 加到 2000:效应量 Cohen's d 始终是 0.30,p 却从 0.35 掉到小于 0.001。p 变小说明「证据变足」,不说明「差异变大」——差多少要看效应量与它的置信区间。

报告里有什么

  1. 输出结果一:数据概览与前提检验
  2. 输出结果二:类别分布与均等性检验
  3. 输出结果三:类别分布可视化
  4. 输出结果四:不平衡效应量与逐类别事后检验
  5. 输出结果五:结论与处理建议
「是否违约」类别分布
图1 「是否违约」类别分布
暖色柱为少数类、冷色柱为多数类;柱高为该类别频数,灰色虚线为等概率下的期望频数 100.00。可用右上角切换器切到「表格」「饼图」「横向条形图」查看同一份数据。

在线统计分析平台 · 233 种分析方法 · AI 智能解读

在线使用
使用教程