shap 解释理赔时效模型特征

前言

一、分析背景

二、数据概览

三、数据建模

四、 shap 

        1.  特征输出

        2.  正负影响

        3.  PDP 部分依赖图

        4.  单个特征与目标变量之间的关系,取1000个样本观察对目标值的影响

        5.  单样本解析

        6.  LIME局部可解释模型不可知解释

总结


前言

       本人是在保险公司从事车险反欺诈工作,对数据分析和挖掘比较感兴趣,最近在学习到shap时,觉得它对模型特征的解释非常不错,就用它试了试自己弄的理赔时效模型,并简单写下自己对这种事后解释方法的理解,不足之处,还望海涵。


一、分析背景

随着费改的进行,保险公司的保费相比以前有显著下降,承保环节的压力也越来越大,车险理赔在保险公司的竞争中的作用越发重要,理赔做得好,客户满意度就会提高,则续保率也会提高,对公司的发展有着正面作用,而理赔时效作为车险理赔环节中的重要一环,有着很重要的作用,理赔时效过长也会导致客户的投诉及流失,同时理赔时效过长也会导致公司未决案件的积累,未决案件估损金额的偏差也会影响公司的经营策略,所以基于上述目的,对案件理赔时效进行建模预测,通过归因分析对模型特征进行解释,找出原因,提高客户满意度,减少客户流失,减少长期未决案件。

二、数据概览

本案例选取的是半年纯车物数据(共44450条),不含人伤数据,结合工作经验经过特征选取及处理后 ,部分展示如上,出于公司数据保密性,原始数据就不予展示,其中预测目标变量从样本平衡考虑,选择了以7天为界做二分类处理。

三、数据建模

模型选用XGBOOST, 用了以下函数,由于本案例主要是对模型进行解释,所以没有对模型预测结果做过多的调参、数据降维等的处理。

import pandas as pd
import numpy as np
from xgboost import XGBClassifier,plot_importance
from sklearn.metrics import accuracy_score, auc, roc_curve,classification_report
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

AUC:0.8

四、 shap 

1.  特征输出

shap.summary_plot(shap_values, X, plot_type="bar")

a.支付金额特征重要性最高,这个与xgboost自带的feature importance输出的最重要特征一致,但其他特征顺序有区别。

b.与feature importance相比,SHAP value最大的优势是SHAP能对于反映出每一个样本中的特征的影响力,而且还表现出影响的正负性。 

2.  正负影响

shap.summary_plot(shap_values, X)

shap值随着支付金额的增加而增大,两者具有较强的正向线性关系,因此较大的支付金额必然导致较长的理赔周期。

3.  PDP 部分依赖图

shap.dependence_plot('支付金额', shap_values, X, interaction_index='支付金额')

 

 上图可以大致看出当支付金额增加时,目标变量趋于稳定,即超过7天

4.  单个特征与目标变量之间的关系,取1000个样本观察对目标值的影响

shap.force_plot(explainer.expected_value, shap_values[0:1000], X[0:1000], plot_cmap="DrDb", feature_names=x[0])

从上图看出当支付金额>9843时,将Y值由基准值-0.54提高到1.45,并趋于稳定 ,就是说支付金额超过1万,大概率支付周期会大于7天。

5.  单样本解析

shap.force_plot(explainer.expected_value, shap_values[48,:],X.iloc[48,:],x[0],matplotlib=True)

取第48个样本特征分析:

使用性质及是否公司车的正向影响(红色部分长度)大于支付金额及是否存在物损的负向影响(蓝色部分长度)。

特征解释为:交强险、支付2000、营业货车、无物损,结合理赔经验判断可能是多车事故,所以预测周期大概率会大于7天,对比原始数据,该样本结案周期为13天。

6.  LIME局部可解释模型不可知解释

explainer = LimeTabularExplainer(x_test.values, feature_names = col,class_names = class_names, mode = 'classification')
explaination = explainer.explain_instance(x_test.iloc[1],model.predict_proba)
explaination.show_in_notebook(show_table = True, show_all = False)

通过预测样本的第一个样本分析,模型预测91%概率支付周期小于7天,再看特征情况,该样本不存在物损、支付金额1350及险种是商业险、事故责任是全责、车型是家庭自用车、被保人非公司车辆,结合理赔经验可以判断是小擦挂单车事故,应该是修理厂报案小事故,所以周期大概率不会超过7天 

总结

1.注意将xgboost升级到最新版,老版本在用LIME时会出现列名不匹配,不升级解决起来很麻烦。

2.shap在显示正负关系图时,是参考数据大小来的,所以在原始数据分类变量转化为数值变量时,尽量将想要的结果分为1,不想要的分为0。

3.shap还可以显示不同特征之间的影响,本案例没有展示,有兴趣的可以自己研究下。

4.在分析数据时,可以结合shap的特征重要性,对原始数据下的该特征进行分组聚合,结合powerbi等可视化软件,一目了然的找出问题点并给出建议。

5.本人结合了本案例模型的特征,对原始数据进行了专项分析,有机会再分享吧。 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值