简介
本文主要分享参加精准社保天池大赛的经验。“精准社保”的赛题为“基本医疗保险医疗服务智能监控”,由参赛队完成数据算法模型的开发设计,实现对各类医疗保险基金欺诈违规行为的准确识别,以进一步丰富现行医保智能监控的医保规则和医学规则,提高医保智能监控的针对性和有效性。违规行为举例如下:
- 为了获得不当利益,部分人员从各种途径收集医疗保险参保人员的社保卡,通过社保卡到医院进行虚假诊疗,套取医保基金。
- 在门诊特殊疾病的诊疗中,部分人员通过编造病历、诊疗过程,套取医保基金。 在本次比赛中,将上述两种违规人员统称为涉嫌造假人员。选手需要基于给定的训练集数据得到模型,然后使用模型判定测试集中的人员是否为涉嫌造假人员
主要采用精确度、召回率和F1值作为评估指标。具体计算公式如下:
其中,PredictionSet为算法预测的涉嫌造假人员集合,ReferenceSet为真实答案的涉嫌造假人员集合。以F1作为最终的唯一评测标准。
核心思路
核心思路包括数据预处理,特征工程,模型设计与调优。
数据预处理

首先我们对医疗费用记录和费用明细表进行了统计分析,发现只有2016年7月到12月存在费用记录数据,有效数据为6个月。同时我们对表中缺失的费用金额字段和重要的费用明细字段进行填充,利用不同金额之间的关系进行填充(如上图所示)。并通过这些金额关系理清报销金额之间的业务关系,方便我们设计金额之间的比例特征。
通过对费用明细表字段与金额进行分析,发现三目项目分别对应药品类,检查类,诊疗类,手术类,床位类,医用材料类,挂号和输血类,其中药品类和诊疗类占比最高。同时我们对疾病中文字段进行切分处理,变成比较规范的疾病名称。
特征工程

结合对数据以及欺诈业务的理解,主要设计了五部分特征:费用基础特征, 明细基础特征,疾病特征,药品特征以及医院特征。其中基础特征使用滑窗法进行提取(具体理由见上图),其中窗口大小设定为7d,15d,30d,60d,通过编写Map-Reduce程序实现,其他特征主要使用sql进行提取。下面简要说明各部分特征的设计逻辑和组成部分。
- 费用基础特征:
- 就诊频次
- 就诊不同医院个数
- 各费用的汇总统计量,包括最大值,最小值,均值
- 相关费用的比例统计量,包括最大值,最小值,均值
费用基础特征描述人员不同费用的报销情况和报销比例等报销情况。费用比例特征可以体现费用表在总体中异常的费用情况。
- 三目明细基础特征:
- 报销单数
- 总的药品数量和金额
- 药品类报销次数,金额以及比例
- 检查类报销次数,金额以及比例
- 诊疗类报销次数,金额以及比例
- 手术类报销次数,金额以及比例
- 床位类报销次数,金额以及比例
- 医用材料类报销次数,金额以及比例
- 挂号类报销次数,金额以及比例
- 输血类报销次数,金额以及比例
-
疾病特征

选出出现次数较多的12种疾病,采用one-hot编码方式,从而描述社保人员的就诊疾病情况。
-
药品特征

选出出现次数最多的24种药品,计算每个社保用户每个药品的取药金额的总和。描述社保人员购买药品情况。
-
医院特征

我们根据医院欺诈率对医院ID进行排序处理,然后对所有的医院进行分箱,设计医院欺诈等级特征,用来描述社保人员看病医院偏好。
模型设计
设计出了特征之后,我们共训练了GBDT,XGBOOST和LR三种模型,其中GBDT模型效果最好。为了提升建模的效果以及降低模型的复杂度,我们决定根据模型输出的特征重要性得分进行特征选择,通过选择不同个数的特征数进行对比实验,最终选取了top150特征,对样本进行重新训练。
模型调优
模型最终选择了PS-SMART二分类算法,在模型调优方法,我们主要从三个方向出发。一是用五折交叉验证方法对模型参数进行调优; 二是调整GBDT算法中的L1,L2正则化参数,用来防止过拟合;三是选择最优的阈值,来平衡precision和recall值,因为在正负样本极不均匀的二分类问题中,更看重recall值。同时我们尝试了xgboost和gbdt模型进行融合的方法,效果与单个gbdt模型在多个划分集上面效果持平或者稍差一点,我们分析可能的原因一方面是二者学习到的模型差异性比较小,另一方面没有挑选到最佳阈值。
比赛经验总结和思考
总结
- 数据分析,理解业务对特征设计很重要
- 利用特征重要性进行特征选择可以有效简化模型
- 欺诈社保人员存在单次报销金额过高或者拆单导致报销单过多等欺诈行为
思考
- 明细缺失字段明显,实际可以加强这方面的数据治理
- 加入报销人员属性等第三方数据对建模可能会有帮助
- 尝试建立黑白名单,潜在医保欺诈模式规则化
- 未来用RNN等神经网络对事件进行预测可能是一种新的方向