4. 数据准备与特征工程
核保评分模型的上限,往往在数据准备阶段就已经被决定。模型算法只是放大器,脏数据、错标签、缺失值处理不当,会把再先进的算法也拖入“垃圾进、垃圾出”的陷阱。本节围绕核保数据从原始来源到可用特征矩阵的完整链路,讲清四个关键动作:数据来源梳理、数据清洗、缺失值处理、特征衍生与变量筛选。
一、核保数据来源:先分清“谁在什么时候产生什么数据”
核保数据不是单一来源,而是围绕投保、核保、承保、理赔四个环节形成的多源异构数据。按业务时点划分,可分为投保前数据、投保时数据和承保后数据。投保前数据包括客户基本信息、历史保单、渠道行为;投保时数据包括健康告知、体检报告、财务问卷、职业信息;承保后数据包括理赔记录、续期缴费、保全变更。不同来源的数据在核保评分中的角色不同:健康告知是强特征,渠道行为是弱特征,理赔记录则是高价值但滞后的标签来源。
从系统视角看,核保数据通常分布在核心业务系统、影像系统、第三方数据接口、精算数据库和人工核保工作台。数据准备的第一步不是写代码,而是画一张“数据来源—字段—时点—责任人”的清单,明确每个字段的业务含义、采集时点和更新频率。这一步做扎实,后续清洗和衍生才有依据。
二、数据清洗:把“能用的数据”变成“可信的数据”
数据清洗的目标是消除不一致、重复、异常和逻辑矛盾。核保数据常见问题包括:身份证号与年龄不一致、职业代码与职业名称不匹配、体检指标单位混用、同一客户多张保单信息冲突、渠道编码历史变更未映射。清洗流程通常包括:去重、格式标准化、逻辑校验、异常值识别、一致性修复。
以年龄字段为例,若直接使用身份证号计算年龄,需处理闰年、生日未到、身份证15位与18位混用等情况。职业字段则需建立“职业代码—职业类别—风险等级”的映射表,避免同一职业在不同渠道下被归入不同风险等级。异常值识别不能只看统计分布,还要结合业务规则:BMI超过40可能是真实肥胖,也可能是身高单位误填为厘米与米混用。
# 核保数据清洗示例:年龄与BMI逻辑校验
import pandas as pd
def clean_underwriting(df):
# 身份证计算年龄,处理15位与18位
df['age'] = df['id_no'].apply(calc_age_from_id)
# 身高单位统一为米
df['height_m'] = df['height'].apply(lambda x: x/100 if x > 3 else x)
# BMI计算与异常标记
df['bmi'] = df['weight'] / (df['height_m'] ** 2)
df['bmi_flag'] = df['bmi'].apply(lambda x: '异常' if x < 10 or x > 60 else '正常')
# 职业代码映射
df['occ_risk'] = df['occ_code'].map(occ_risk_map)
return df
三、缺失值处理:缺失不是“没有”,而是“有信息”
核保场景中的缺失值具有强烈的业务含义。健康告知未填写,可能意味着客户刻意隐瞒,也可能意味着该问题不适用;体检指标缺失,可能是客户未体检,也可能是体检机构未回传。因此,缺失值处理不能简单用均值填充,而应先做缺失机制分析:完全随机缺失、随机缺失、非随机缺失。对于非随机缺失,建议将“是否缺失”本身作为一个特征保留。
常用处理策略包括:删除缺失率过高的字段、用业务默认值填充、用模型预测填充、将缺失作为独立类别。核保评分中,健康告知类字段建议保留缺失标记,因为“未告知”本身就是风险信号;财务类字段可用分位数填充,但需结合渠道和产品类型分组填充,避免全局均值掩盖群体差异。
| 缺失类型 | 典型字段 | 推荐策略 | 风险提示 |
|---|---|---|---|
| 完全随机缺失 | 体检日期、设备编号 | 删除或均值填充 | 影响样本量,需评估偏差 |
| 随机缺失 | 收入、身高体重 | 分组中位数填充 | 分组过细会导致填充不稳定 |
| 非随机缺失 | 健康告知、既往症 | 保留缺失标记+单独建模 | 缺失本身是强风险信号 |
四、特征衍生与变量筛选:从原始字段到核保评分因子
特征衍生的核心思路是“业务逻辑+统计变换”。业务逻辑衍生包括:年龄分段、BMI分级、职业风险等级、既往症数量、告知异常项计数、保单年度与理赔次数比。统计变换包括:WOE编码、分箱、归一化、交叉特征。核保评分中,WOE编码尤其重要,因为它能将非线性关系转化为线性关系,并天然处理缺失值。
变量筛选通常分三步:第一步,业务初筛,剔除与核保结论无关或上线后不可获取的字段;第二步,统计筛选,用IV值、卡方检验、相关性分析剔除低区分度和高共线性变量;第三步,模型筛选,用LASSO、随机森林重要性或逐步回归确定最终入模变量。核保评分模型偏好可解释性,因此变量数量不宜过多,通常控制在15~30个核心变量。
五、常见误区与复盘要点
- 误区一:用未来数据预测过去。核保评分必须严格按投保时点取数,不能把承保后理赔记录作为入模特征,否则会造成标签泄露,模型离线AUC虚高、上线后失效。
- 误区二:缺失值全部填充为0。健康告知缺失填0,等于告诉模型“客户健康”,与事实相反。应保留缺失标记或单独分箱。
- 误区三:特征越多越好。核保评分强调可解释性,变量过多会导致人工审核员无法理解评分依据,也会增加监控成本。
- 误区四:忽略时间窗口。理赔次数、就诊次数等特征必须明确统计窗口,如“近12个月”“近24个月”,否则不同样本口径不一致。
总结来看,核保数据准备与特征工程是一条从“多源采集”到“可信清洗”再到“业务衍生”和“统计筛选”的链路。链路中每一步都要回答三个问题:这个字段业务上代表什么?技术上如何处理?处理后对核保结论有什么影响?把这三个问题回答清楚,核保评分模型才具备上线和人工分流的基础。