4. 数据收集与理解
在车险风险分层与保费定价项目中,数据是模型的地基。没有对数据来源、字段语义和质量边界的清晰理解,后续的特征工程、风险分层与定价模型都会变成“垃圾进、垃圾出”。本节围绕四个核心问题展开:数据从哪里来、每个字段代表什么、数据是否可信、数据分布是否支持建模假设。
一、核心原理:车险数据的三个来源层次
车险数据通常来自三个层次,理解层次差异有助于判断字段的可靠性与使用边界。
- 承保数据:来自核心业务系统,包括保单号、投保人信息、车辆信息、险种、保额、保费、起保日期等。这类数据字段规范、更新及时,是定价的基础。
- 理赔数据:来自理赔系统,包括报案时间、出险原因、损失金额、赔付金额、责任比例、维修方式等。理赔数据直接反映风险暴露,但存在报案延迟、估损偏差和未决赔案问题。
- 外部数据:包括车辆零整比、车型风险等级、地区交通违法记录、气象与道路数据等。外部数据能补充风险维度,但需要关注合规性、覆盖率和更新频率。
二、字段含义:从业务语义到建模语义
字段理解不能停留在字面翻译,而要建立“业务语义—统计语义—建模语义”的映射。例如“车龄”在业务上是车辆使用年限,在统计上是连续变量,在建模中可能需要分箱为“0-1年、2-5年、6-10年、10年以上”,因为不同区间的风险非线性。
| 字段类别 | 典型字段 | 业务含义 | 建模注意点 |
|---|---|---|---|
| 车辆属性 | 车龄、新车购置价、使用性质、座位数 | 反映车辆价值与使用强度 | 使用性质需区分营业/非营业;价格需考虑折旧 |
| 保单属性 | 险种、保额、免赔额、起保日期 | 反映保障范围与自留风险 | 免赔额与出险频率存在逆向选择 |
| 驾驶人属性 | 年龄、驾龄、性别、历史出险次数 | 反映驾驶行为与经验 | 年龄与驾龄常共线;出险次数需定义观察窗口 |
| 理赔结果 | 赔付金额、出险原因、责任比例 | 反映实际损失强度 | 需区分已决/未决;零赔付案件要单独处理 |
三、数据质量检查:六类高频问题与处理策略
车险数据质量检查建议按以下顺序推进,先解决结构性问题,再处理数值问题。
- 完整性:检查关键字段缺失率。例如车辆识别代号缺失超过5%时,外部数据关联会大面积失败。
- 唯一性:保单号应唯一;若出现重复,需判断是批单、续保还是系统重复推送。
- 一致性:起保日期不应晚于终保日期;赔付金额不应为负;责任比例应在0到1之间。
- 时效性:理赔数据存在报案延迟,建模时需设定观察窗口,避免用未来信息预测过去风险。
- 异常值:赔付金额的极端值可能是真实大案,也可能是录入错误,需结合分位数与业务规则判断。
- 分布偏移:训练集与验证集在地区、车龄、险种上的分布应大致可比,否则模型泛化能力会下降。
四、探索性分析:用分布与关系定位风险信号
探索性分析的目标不是“画很多图”,而是回答三个问题:目标变量长什么样、哪些字段与风险相关、字段之间是否高度共线。车险中最常用的目标变量是出险频率和案均赔付,前者适合用直方图与泊松分布对比,后者适合用对数变换后的分布观察。
# 示例:车险数据质量与分布快速检查
import pandas as pd
import numpy as np
df = pd.read_csv("auto_insurance.csv")
# 1. 缺失率与唯一性
quality = pd.DataFrame({
"missing_rate": df.isnull().mean(),
"nunique": df.nunique()
})
print(quality.sort_values("missing_rate", ascending=False).head(10))
# 2. 关键字段一致性检查
invalid_date = df[df["起保日期"] > df["终保日期"]]
invalid_amount = df[df["赔付金额"] < 0]
print("日期异常:", len(invalid_date), "金额异常:", len(invalid_amount))
# 3. 目标变量分布
df["出险次数"].value_counts().sort_index().plot(kind="bar")
df["赔付金额"].apply(lambda x: np.log1p(x)).hist(bins=50)
在探索性分析中,建议优先关注以下关系:车龄与出险频率是否呈U型、历史出险次数与当前出险是否强相关、不同使用性质下的案均赔付差异是否显著。这些发现会直接指导后续的风险分层变量选择。
五、案例复盘:一次因字段理解偏差导致的定价偏差
某车险项目在建模时直接使用“历史出险次数”作为特征,未区分观察窗口。结果发现该特征在训练集上重要性极高,但上线后区分度骤降。复盘发现:训练集的历史出险次数包含了未来信息,属于数据泄漏。修正方法是严格按保单起保日期划分观察期与表现期,只用观察期内的出险记录预测表现期风险。这个案例说明,字段含义不仅要看业务定义,还要看时间边界。
总结来看,数据收集与理解不是一次性任务,而是贯穿项目始终的持续动作。只有在来源、语义、质量和分布四个维度都建立清晰认知,后续的风险分层与保费定价才有可靠依据。