趋近智
静态模式验证和空值检查为数据质量提供了必要的基准,但它们存在一个明显的盲点。一个定义为整数的列在技术上可以满足NOT NULL约束,但同时包含实际上是无用数据的值。例如,温度传感器突然每次读数都输出0,或者用户年龄列中的每个条目都默认为1970。数据类型正确,但信息有误。
为发现这些问题,我们需要整体查看数据集。统计画像建立了数据的预期行为特征。通过将传入批次的统计画像与历史基准进行比较,我们可以识别出标准断言会遗漏的分布、数量和频率异常。
统计画像的根本在于描述性统计。对于连续数值数据,我们使用集中趋势和离散程度来概括分布情况。
在生产管线中,您在摄取阶段为每个数据批次计算这些指标。这些指标是轻量级元数据;计算它们的成本低于后期扫描整个数据集的计算成本。
质量门常用的指标包括:
-1或999错误码)。一旦您从历史数据中建立了一个基准(均值和标准差),就可以使用Z分数评估传入的数据点或批次平均值。Z分数表示一个数据点距离均值有多少个标准差。
在正态分布中,99.7%的数据点落在均值三个标准差 () 的范围内。这使得我们能够构建动态断言逻辑:
这种方法适应数据。像price < 1000这样的严格规则很脆弱;而像price within 3 std devs这样基于Z分数的规则,会随着底层业务指标随时间自然增长或缩小而自动调整。
均值和中位数会掩盖潜在问题。两个数据集可以拥有完全相同的均值,但看起来却截然不同。一个可能是平滑的钟形曲线,而另一个则是双峰的(具有两个峰值)。
为解决此问题,我们使用直方图来可视化和比较数据的概率分布。当参考数据集(训练或历史数据)和当前数据集(生产环境)之间的数据形状发生明显变化时,我们称之为分布漂移。
参考分布与发生漂移的生产批次的比较。‘当前’分布的变化提示存在异常,如果方差也发生变化,简单的均值检查可能会遗漏此类异常。
对于自动化系统,我们不能依赖直方图的目视检查。我们需要一个标量指标来量化两个分布之间的“距离”。数据可靠性工程中一种常用方法是Kullback-Leibler (KL) 散度(也称为相对熵)。
对于离散概率分布(参考)和(新批次),KL散度定义为:
如果和相同,则KL散度为0。随着分布偏离,其值会增加。
实际上,您无需实现原始数学公式。像SciPy这样的库或专业数据质量框架(例如Great Expectations、Evidently AI)提供这些计算。作为工程师,您的职责是设置一个阈值(例如),当新数据看起来与过去有根本性差异时触发警告。
统计画像不限于数值数据。对于分类列(字符串、布尔值、枚举),我们查看频率分布。
分类数据常用的画像检查包括:
status列通常有5个唯一值(active、pending等),但突然变成了50个,严格类型化的逻辑可能通过,但数据很可能已损坏。country列中“US”通常占流量的60%,但在最新批次中降至5%,这表明上游提取逻辑损坏或路由失败。为将此投入实际使用,您通常会在数据摄取后但在转换前,立即在管线中插入一个“画像步骤”。
将统计画像整合到数据管线的工作流程。这会将画像的计算与评估逻辑分离。
画像计算与比较逻辑的分离意义重大。您将画像(包含计数和分布的轻量级JSON对象)与数据分开存储。这使您可以在之后调整敏感度阈值,而无需重新处理庞大的原始数据集。如果您最初将Z分数阈值设置为3,并发现其噪音过多,您可以将比较器调整为4,并立即针对已存储的画像重新运行检查。
通过将严密的模式强制与灵活的统计画像相结合,您可以建立纵深防御策略。模式检查发现损坏的代码;统计检查发现异常情况。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造