Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计
  oAzjjSsAa1NU 2023年11月02日 52 0

原创作者Toby,来源《Allstate美国好事达保险公司理赔预测模型案例》

概述

国好事达保险公司创建于1931年的美国好事达保险公司(Allstate)是美国第二大从事个人险种业务的财险和意外险保险公司, 并跻身于全美最大的15家人寿保险公司的行列。公司的总部设在芝加哥地区。

2018年12月,世界品牌实验室发布《2018世界品牌500强》榜单,美国好事达保险公司排名第486。

好事达 Allstate 致力于改善其理赔服务并发布了一个科研数据集,该数据集将有助于构建可预测理赔严重程度的模型。本案例研究旨在开发用于预测特定保险索赔成本(严重程度)的自动化模型。

Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_美国好事达保险公司


提供给好事达的数据集包含发生在家庭中的事故数据(每一行数据对应一个特定的家庭),目标变量为索赔成本,这是度量的数字。

由于提供给好事达的数据是关于个人信息的,Allstate 在高度匿名化数据(更改特征名称)方面做得很好,并且该数据集的这一方面使得很难理解特征。数据集包含 Allstate 客户的索赔记录。整个数据集是高度匿名的。

下图是数据集截图


Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_保险公司理赔预测模型_02


问题陈述:

训练数据集包含分类和连续特征。目标变量是一个损失(索赔严重程度),它是数字类型的。由于目标变量是数字和损失值,我们可以将此问题视为回归问题。这也是一个有监督的机器学习问题,因为我们有训练数据的目标值。在我看来,这样做将提高整体客户服务,这将有利于公司和索赔人,并有助于保险公司。

我们的任务是预测新家庭的索赔将或可能有多严重,根据给定的特征预测未来的损失。

指标

对于回归模型,我们要使用的指标——平均绝对误差 (MAE)

这是一个简单直接的明显指标,将预测值与实际值进行比较。MAE 不会因为不识别异常值而对我们的模式产生太大影响。MAE 很容易解释,因为它简单易计算。

Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_美国好事达保险公司_03


第1部分:

数据分析与可视化:

1.1 数据集概览:


·训练数据:188318行和132个特征/列以及目标变量。

· 测试数据:129446 行和 132 个特征/列,其中目标特征不存在。

· 除target feature和id feature外,共有130个distinct features。这些特征包含分类和数值数据类型。

· 在 130 个特征中,116 个是分类特征,14 个是数值特征。我们注意到火车数据集中没有缺失值。这表明 Allstate 提供了高度用户友好的预置数据。


1.2 缺失值


Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_Allstate_04

  • 由于训练和测试数据中没有缺失值,我们可以说该数据已经过预处理。如果数据中存在缺失值,我们需要考虑替代方案,例如删除这些行或用平均值填充这些值以处理缺失数据。


fig, (ax1, ax2) = plt.subplots(1,2)

fig.set_size_inches(16,5)
ax1.hist(unique_categories.unique_values, bins=50)
ax1.set_title('Categorical featurs vs Unique values ')
ax1.set_xlabel('Unique values in a feature')
ax1.set_ylabel('Features')


values = unique_categories[unique_categories.unique_values <= 25].unique_values
ax2.set_xlim(1,25)
ax2.hist(values, bins=30)
ax2.set_title('Zooming left part of histogram')
ax2.set_xlabel('Unique values in a feature')
ax2.set_ylabel('Features')
ax2.grid(True)


Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_保险公司理赔预测模型_05

  • 从上图中,我们注意到几乎有 100 个特征,每个特征的唯一值少于 10 个。
  • 有一个特征包含超过 300 个唯一值,我们在上面的代码中也看到了这一点。
  • 尝试绘制缩放后的图像以查看这些分布是如何发生的,我们可以看到只有极少数特征具有更多的唯一值。

1.3 连续特征数据分析部分:

Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_机器学习_06

  • 我们注意到每个连续特征的分布变化很大。每个图中都有很多尖峰。所以在 PDF 中不存在这些连续特征的一致性。
  • Cont2 特征实际上看起来像正态分布,但我们无法谈论该特征是什么,因为它们是匿名的。

1.4 连续特征的复选框图


fig, (ax1, ax2) = plt.subplots(1,2)

fig.set_size_inches(14,5)
ax1.boxplot(train_data['loss'])
ax1.set_ylabel('loss')
ax1.set_title('Box plot of loss feature')


#values = uniq_values_in_categories[uniq_values_in_categories.unique_values <= 25].unique_values
ax2.set_ylim(1,10000)
ax2.boxplot(train_data['loss'])
ax2.set_ylabel('loss')
ax2.set_title('Zoomed version of loss feature')

Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_机器学习_07

Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_保险公司理赔预测模型_08

  • 我们可以看到大多数连续特征的平均值都在 0.5 左右。所有值都在 0 和 1 之间。这表明数据已经标准化。
  • 我们注意到所有连续特征的平均值都在 0.5 左右,这非常好,我们可以说 Allstate 做了预处理然后给出了数据。
  • 所有连续特征都在 [0,1] 范围内,这非常好


1.5 检查连续特征之间的相关性:


Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_保险公司理赔预测模型_09

  • 有几个高度相关的特征。例如,参见 cont 14 和 cont 12——它们的相关值为 0.99,这几乎是它可以获得的最大值。
  • 因此,我们可以删除一些高度相关的特征并训练模型,看看它是否会出现任何性能下降。
  • 另一方面,由于我们不知道任何关于数据或特征名称的具体信息,我们不能盲目地删除特征。它也可能导致更糟糕的模型。
  • 所以处理这些类型的数据有点困难。我们实际上需要在有和没有模型下降的情况下训练模型,并且必须决定什么是正确的做法。
  • Cont11 和 Cont12 非常相关。我正在考虑至少放弃其中一个功能。

1.6 分析目标变量:



Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_机器学习_10

1.7 计算偏度,看看我们如何减少偏度:

Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_保险公司理赔预测模型_11


  • 我们可以看到目标变量存在很大的偏度,这将导致错误的预测。
  • 我们对该目标变量应用了对数转换,并注意到偏度下降了很多。


1.8 特征重要性


我们可以看到最后几个特征,如 Cat62、Cat64、Cat70、Cat22……当您在组合数据以及测试和训练上训练模型时,这些特征的重要性非常低。

Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_机器学习_12


1.9 主成分分析[PCA]:


Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_保险公司理赔预测模型_13

我观察到即使使用 2 个主成分的 模型,我们也无法轻松分离数据。这表示测试数据和训练数据都具有相似的分布。


1.9XGBOOST超参调优

我使用 Gridsearchcv 对 XGBOOST 模型调参

  • 我们调整了 2 个参数并得到 {'max_depth': 10, 'min_child_weight': 1}
  • 我们调整了 2 个参数并得到 {'gamma': 1, 'learning_rate': 0.1}
  • 我们调整了 2 个参数并得到 {'colsample_bytree': 0.6, 'subsample': 0.8}
  • 最终超参数调优结果:{'colsample_bytree': 0.5,'subsample': 0.8,'learning_rate': 0.1,'max_depth': 12,'min_child_weight': 1,'gamma':1}
寻找最好的 n_rounds :
res = xgb.cv(params, xgtrain, num_boost_round=2500, nfold=5,
             stratified=False,early_stopping_rounds=50, 
             verbose_eval=500, show_stdv=True,
             feval=log_xgboost_eval_mae, maximize=False)

best_nrounds = res.shape[0] - 1
cv_mean = res.iloc[-1, 0]
cv_std = res.iloc[-1, 1]
print('Ensemble-CV: {0}+{1}'.format(cv_mean, cv_std))
print('Best n rounds are :',best_nrounds)

Ensemble-CV:0.40487799999999996+0.0002799499955349193
最佳 n 轮是:2418

最不重要 0 特征是 cat24
最不重要 1 特征是 cat60
最不重要 2 特征是 cat46
最不重要 3 特征是 cat69
最不重要 4 特征是 cat34
最不重要 5 特征是 cat47 最不重要
6 特征是 cat70 最
不重要 7 特征是 cat20
最不重要8 个特征是 cat15
最不重要 9 个特征是 cat64
最不重要 10 个特征是 cat62 
********* 
['cat24', 'cat60', 'cat46', 'cat69', 'cat34', 'cat47', 'cat70', 'cat20', 'cat15', 'cat64', 'cat62']


特征重要性在机器学习模型的各个方面都起着重要作用,因为它让我们理解了为什么它会按照它的方式做事。所以拥有一个高度可解释的模型总是好的。

我们可以看到 'cat14'、'cat35'、'cat97'、'cat20'、'cat48'、'cat86'、'cat70'、'cat62'、'cat69'、'cat15'、'cat64'——这些是训练模型的最不重要的特征。


总结:

很多数据集上,集成模型会比普通模型有更好的结果。我们仍然可以通过对模型进行一些更敏感的超参数调整来优化模型。我们可以删除最不重要的特征,也可以尝试做一些特征工程。我们可以尝试集成和深度学习模型以获得更好的分数。


Allstate美国好事达保险公司理赔预测模型案例就为大家介绍到这里,51CTO学院《python金融风控评分卡模型和数据分析微专业课》更多实战案例会定期更新,用于银行培训,大家扫一扫下面二维码,记得收藏课程。

Allstate美国好事达保险公司理赔预测模型案例__企业科研_论文科研_毕业设计_保险公司理赔预测模型_14


版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
oAzjjSsAa1NU