4. 数据质量评估:缺失值、异常值、重复值、不一致性检测方法与量化指标
在保险精算建模中,数据质量直接决定坏样本归因的准确性。本章系统阐述四大数据质量维度的检测方法与量化指标,帮助精算师在数据预处理阶段快速定位并量化数据缺陷。
核心原则:数据质量评估不是一次性动作,而是贯穿数据清洗全周期的迭代过程。建议在每次数据变更后重新执行本流程。
4.1 缺失值检测与量化
缺失值是精算数据中最常见的问题,可能源于理赔系统未录入、字段映射失败或历史数据迁移遗漏。
4.1.1 检测方法
- 逐字段统计法:对每个字段计算缺失比例,适用于结构化表格数据。
- 矩阵可视化法:使用缺失值矩阵(如
missingno库的矩阵图)观察缺失模式。 - 关联缺失分析:计算字段间缺失的共现概率,识别系统性缺失。
4.1.2 量化指标
| 指标名称 | 公式/定义 | 精算应用场景 |
|---|---|---|
| 缺失率 (Missing Rate) | 缺失数 / 总记录数 × 100% | 评估字段可用性,阈值通常设为 5%~20% |
| 完全缺失率 (Complete Case Rate) | 无缺失记录数 / 总记录数 × 100% | 判断能否直接使用完整样本建模 |
| 缺失共现系数 | 两字段同时缺失的记录数 / 总记录数 | 发现关联缺失组,如“手术费用”与“住院天数”同时缺失 |
精算提示:对于理赔金额类字段,缺失率超过 10% 时应优先追溯业务系统原因,而非直接插补。插补可能掩盖赔付率异常。
4.2 异常值检测与量化
异常值在精算数据中可能代表欺诈理赔、录入错误或真实极端风险。需区分“业务异常”与“统计异常”。
4.2.1 检测方法
- Z-Score 法:适用于近似正态分布字段,阈值通常设为 |Z| > 3。
- IQR 四分位距法:适用于偏态分布,异常定义为 Q1 - 1.5×IQR 以下或 Q3 + 1.5×IQR 以上。
- 孤立森林 (Isolation Forest):适用于高维数据,通过随机分割快速隔离异常点。
- 业务规则法:如“理赔金额 > 保额 120%”直接标记为异常。
4.2.2 量化指标
| 指标名称 | 定义 | 精算阈值参考 |
|---|---|---|
| 异常值比例 | 异常记录数 / 总记录数 × 100% | 通常 < 5%,超过 10% 需检查检测方法 |
| 异常值影响度 | 异常值总和 / 字段总值 × 100% | 用于评估对赔付率的影响 |
| 异常值稳定性指数 | 相邻两个评估周期异常比例的差异 | 差异 > 2% 提示业务规则可能变化 |
注意:不要机械删除异常值。在车险理赔数据中,高额赔付异常值可能代表真实重大事故,删除会导致赔付率低估。
4.3 重复值检测与量化
重复值在保险数据中常见于同一理赔多次录入、保单续期重复记录或数据合并时的重复行。
4.3.1 检测方法
- 完全匹配法:所有字段完全相同的记录视为重复。
- 关键字段匹配法:基于保单号、身份证号、理赔申请号等唯一标识符去重。
- 模糊匹配法:使用编辑距离或 Jaccard 相似度,适用于姓名、地址等文本字段。
4.3.2 量化指标
| 指标名称 | 定义 | 精算影响 |
|---|---|---|
| 重复率 | 重复记录数 / 总记录数 × 100% | 高重复率导致统计量偏差 |
| 重复组数 | 唯一重复组的数量 | 反映重复问题的分散程度 |
| 最大重复次数 | 单个记录重复出现的最大次数 | 极端重复可能指向系统 bug |
# 重复值检测示例代码(Python)
import pandas as pd
def detect_duplicates(df, key_cols=['policy_id', 'claim_id']):
# 完全重复检测
full_dup = df.duplicated(keep=False)
# 关键字段重复检测
key_dup = df.duplicated(subset=key_cols, keep='first')
# 量化指标
report = {
'total_records': len(df),
'full_duplicate_count': full_dup.sum(),
'full_duplicate_rate': round(full_dup.sum() / len(df) * 100, 2),
'key_duplicate_count': key_dup.sum(),
'key_duplicate_rate': round(key_dup.sum() / len(df) * 100, 2)
}
return report
4.4 不一致性检测与量化
不一致性指数据内部逻辑矛盾,如“出险日期 > 理赔结案日期”、“性别=男 且 诊断=妊娠”等。
4.4.1 检测方法
- 逻辑规则引擎:预定义业务规则(如日期先后、金额范围、字段依赖关系)。
- 跨表一致性校验:对比保单表与理赔表的客户 ID、产品代码等关联字段。
- 分布一致性检验:使用 KS 检验或卡方检验比较同字段在不同时间段或不同分组的分布。
4.4.2 量化指标
| 指标名称 | 定义 | 精算示例 |
|---|---|---|
| 逻辑矛盾率 | 违反业务规则的记录数 / 总记录数 × 100% | 出险日期 > 报案日期的记录占比 |
| 跨表匹配率 | 成功匹配的记录数 / 应匹配记录数 × 100% | 理赔表与保单表的保单号匹配率 |
| 分布漂移指数 (PSI) | ∑(实际占比 - 预期占比) × ln(实际占比/预期占比) | PSI > 0.25 提示数据分布发生显著变化 |
4.5 综合质量评分与报告
将四个维度的量化指标汇总为综合质量评分,便于管理层快速了解数据健康度。
4.5.1 评分公式
综合质量评分 = 100 - (缺失率权重 × 缺失率 + 异常率权重 × 异常率 + 重复率权重 × 重复率 + 不一致率权重 × 不一致率)
权重建议(精算场景):
- 缺失率权重:0.35(影响建模最广)
- 异常率权重:0.30(影响模型稳定性)
- 重复率权重:0.15(影响统计量)
- 不一致率权重:0.20(影响逻辑正确性)
4.5.2 质量等级划分
| 评分区间 | 等级 | 处理建议 |
|---|---|---|
| 90~100 | 优秀 | 可直接用于建模,仅需常规清洗 |
| 75~89 | 良好 | 需针对性处理主要问题字段 |
| 60~74 | 一般 | 建议深度清洗后再建模 |
| < 60 | 差 | 需回溯业务系统,不建议直接使用 |
最佳实践:每次数据质量评估后,生成标准化的
data_quality_report.json 文件,包含每个字段的四维指标和综合评分,纳入数据血缘管理。