摘要:
合集:AI案例-ML-泛金融业
赛题:保险理赔成本预测
主办方:Allstate
主页:https://www.kaggle.com/c/allstate-claims-severity/
AI问题:回归预测问题
数据集:16个特征变量是分类变量,11个特征变量是连续变量。
数据集价值:预测保险理赔成本
解决方案:XGBoost 框架
一、招聘赛题
赛题:保险理赔成本预测
主办方:Allstate
主页:https://www.kaggle.com/c/allstate-claims-severity/
当你遭遇严重车祸而感到绝望时,你最关注的是最重要的事情:家人、朋友和其他亲人。与保险代理人一起处理文件是你最不想花费时间和精力的事情。这就是为什么美国个人保险公司Allstate不断寻求新想法,以改善其为超过1600万户家庭提供的理赔服务。
Allstate目前正在开发自动化方法来预测理赔成本,从而预测理赔的严重程度。在这次招聘挑战中,Kagglers被邀请展示他们的创造力并通过创建一种准确预测理赔严重程度的算法来展示他们的技术能力。有抱负的参赛者将展示出更好地预测理赔严重程度的洞察力,以争取成为Allstate确保无忧客户体验的努力的一部分的机会。
二、数据集内容
文件列表
- train.csv – 训练集
- test.csv – 测试集。你必须为该文件中的id预测损失值。
- sample_submission.csv – 格式正确的示例提交文件
数据结构
此数据集中的每一行代表一个保险理赔。你必须预测“loss”列的值。以“cat”开头的变量是分类变量,而以“cont”开头的变量是连续变量。
字段列表如下:
id
cat1
cat2
..
cat116
cont1
...
cont11
loss
数据引用要求
@misc{allstate-claims-severity,
author = {DanaFerguson and Meg Risdal and NoTrick and Sara R and Sillah and Tim Emmerling and Will Cukierski},
title = {Allstate Claims Severity},
year = {2016},
howpublished = {\url{https://kaggle.com/competitions/allstate-claims-severity}},
note = {Kaggle}
}
三、解决方案样例
源码:XGB-encode.py
XGBoost
XGBoost是一种基于梯度提升决策树(Gradient Boosting Decision Trees)的高效机器学习算法,广泛应用于回归、分类和排序任务。它以其高效性、准确性和可扩展性著称,能够处理大规模数据集并在各种机器学习竞赛中取得优异成绩。
XGBoost是一种基于梯度提升决策树(Gradient Boosting Decision Trees)的高效机器学习算法,广泛应用于回归、分类和排序任务。它以其高效性、准确性和可扩展性著称,能够处理大规模数据集并在各种机器学习竞赛中取得优异成绩。
XGBoost的主要特点
- 速度快:XGBoost通过优化算法和数据结构,以及采用并行计算和分布式训练等技术,能够高效处理大规模数据集,显著提升训练速度和预测性能。
- 准确率高:通过逐步优化损失函数,XGBoost能够构建一个强学习器,提高模型的预测准确度。
- 防止过拟合:XGBoost引入了L1和L2正则化项,对模型的复杂度进行有效约束,使模型更加稳健,泛化能力更强。
- 支持多种损失函数:XGBoost支持多种损失函数,如平方损失、对数损失等,用户还可根据具体问题自定义损失函数,增强了模型的适应性。
- 自动处理缺失值:XGBoost内置了智能的缺失值处理机制,能够在训练过程中自动学习并选择最佳的缺失值处理策略。
- 评估特征重要性:XGBoost可以通过多种方法评估每个特征对模型预测结果的重要性,帮助用户进行有效的特征选择和特征工程。
XGBoost在金融风控、广告推荐、医疗诊断、自然语言处理等众多领域都有出色的表现。例如,在金融风控中,它可以根据用户的信用数据、交易记录等特征,预测用户的违约风险,帮助金融机构做出合理的信贷决策;在广告推荐领域,能够根据用户的浏览历史、兴趣爱好等信息,精准地推荐用户可能感兴趣的广告,提高广告的点击率和转化率;在医疗诊断方面,可依据患者的症状、检查报告等数据,辅助医生进行疾病的诊断和预测,为医疗决策提供有力支持。
安装
XGBoost 2.x
训练
clf = xgb.train(params,
d_train,
10000,
watchlist,
early_stopping_rounds = early_stopping,
obj = fair_obj,
feval=xg_eval_mae)
这段代码使用XGBoost库训练了一个梯度提升树模型,其中包含了自定义的目标函数和评价函数,以及早停机制来防止过拟合。
- clf 是训练后得到的模型对象,通常用于后续的预测任务。
- params: 这是一个字典,包含了训练模型所需的各种参数,例如学习率(learning_rate)、树的深度(max_depth)、子样本比例(subsample)、列采样比例(colsample_bytree)等。这些参数控制着模型的结构和训练过程。
- d_train: 这是一个XGBoost的DMatrix对象,它是XGBoost内部用于高效存储和处理数据的格式。d_train包含了训练数据和对应的标签。
- 10000: 这是num_boost_round参数的值,表示要训练的最大树的数量(即迭代次数)。模型会尝试添加这么多棵树,但可能会因为早停(early stopping)而提前停止。
- watchlist: 这是一个列表,包含了要在训练过程中监控的数据集。通常,我们会在这里放入训练集和验证集,以便在训练过程中观察模型在验证集上的表现。
- early_stopping_rounds = early_stopping: early_stopping 是一个整数,表示如果在连续这么多轮迭代中,验证集上的性能没有提升,那么训练就会提前停止。这是一种防止过拟合的技术。
- obj = fair_obj: fair_obj 是一个自定义的目标函数(objective function),它定义了模型在训练过程中要最小化的损失函数。这个函数需要符合XGBoost的要求,即接受预测值和真实值作为输入,并返回梯度和Hessian矩阵。
- feval = xg_eval_mae: xg_eval_mae 是一个自定义的评价函数(evaluation function),用于在训练过程中评估模型在验证集上的性能。这个函数需要返回一个字符串(评价指标的名称)和一个浮点数(评价指标的值)。在这个例子中,xg_eval_mae 很可能是用来计算平均绝对误差(Mean Absolute Error, MAE)的。
运行
[1520] train-rmse:0.41779 train-mae:970.13257 eval-rmse:0.46986 eval-mae:1118.04273
[1521] train-rmse:0.41776 train-mae:970.03406 eval-rmse:0.46985 eval-mae:1118.03137
[1522] train-rmse:0.41773 train-mae:969.95477 eval-rmse:0.46986 eval-mae:1118.03857
[1523] train-rmse:0.41770 train-mae:969.86090 eval-rmse:0.46985 eval-mae:1118.03320
[1524] train-rmse:0.41765 train-mae:969.74658 eval-rmse:0.46986 eval-mae:1118.05908
[1525] train-rmse:0.41762 train-mae:969.63886 eval-rmse:0.46986 eval-mae:1118.07373
eval-MAE: 1117.841202
...