基于机器学习的车险索赔频率预测

2019-05-11 07:47曾宇哲吴嫒博郑宏远罗来娟
统计与信息论坛 2019年5期
关键词:车险广义线性

曾宇哲,吴嫒博,郑宏远,罗来娟

(中国人民大学 统计学院,北京 100872)

一、引言

目前,国内车险业务占非寿险保费的70%左右,随着商车费率市场化的推进,保险公司拥有更多的自主定价权,行业竞争日益加剧。同时,车联网的发展以及“互联网+”和大数据等新兴技术进入保险领域,保险公司可以用来定价的数据维度越来越丰富,数据量越来越大。大数据时代,数据的高维性和复杂性对统计研究者提出了新的挑战,而针对新问题传统的预测技术难以对其进行充分的刻画,故需寻求更为有效的预测工具[1-2]。

当前,全球已进入数字经济的时代,新的技术和数据的发展对精算定价方法提出了新的要求。随着存储资源和计算资源成本的大幅下降和性能的大幅提升,各类数字技术如物联网、云技术使得数据的采集、存储、分析和共享变得愈加可行且易于进行[2]。互联网行业广泛使用的机器学习和数据挖掘方法开始引起了精算界的关注,也已被尝试性地应用于车险费率的定价之中。

目前,国内已经有一些将机器学习应用于车险领域的研究成果。有学者将神经网络与车险索赔频率预测结合起来,发现神经网络模型的预测效果通常要优于常用的广义线性模型;戴之遥探索了Boosting方法在车险定价中的应用场景,提出机器学习与数据挖掘方法的效果明显优于传统广义线性模型,机器学习方法可以处理变量间存在交互效应、非线性关系结构、存在缺失值和异常值的数据,对原始数据预处理的要求比较低[3];孟生旺等人将支持向量机、神经网络和集成学习等机器学习算法应用于汽车保险的损失预测,建立了索赔发生概率的预测模型和累积赔款的预测模型,并与传统广义线性模型中的Logistic回归模型和伽马回归模型进行了比较,发现机器学习算法的优点是不依赖于分布假设,在一定程度上可以提高保险损失预测的精度,而缺陷是比较耗时、建模过程中的人为干预较多,并对使用者提出了更高的要求,且输出结果的可解释性不及广义线性模型[4];在此基础上,孟生旺和黄一凡又比较了Logistic回归与机器学习方法在出险概率预测中的效果,并且认为XGboost方法对于出险概率的预测能力更优[5]。

在国外,Guelman介绍了梯度提升算法,认为梯度提升算法在处理车险数据的多分类变量、自变量相关和非线性特征等特点上更有优势,对于数据的缺失和非清洁有较好的抗干扰效果,并通过对某车险数据的拟合和预测得出梯度提升算法效果优于广义线性模型,同时用相对重要性和偏相关性进行了变量重要性排序[6];Yang等探索了如何将广义线性模型与梯度提升方法结合起来,提出了TDboost模型并且完善了对应的程序包和支持文件,其主要思想是将广义线性模型中常用的Tweedie分布作为提升算法的弱学习器,再用梯度提升算法估计参数,在车险赔付预测中取得了较好的效果[7];Sakthivel和Rajitha探索了人工神经网络在车险中的应用,通过数据验证得出神经网络模型比零膨胀泊松模型和零膨胀Hurdle模型更优、神经网络模型比贝叶斯信度模型更优的结论[8-9];Lee等在某车险数据上应用了一种改良提升算法的Delta提升机,并将结果与传统的梯度提升算法加以比较,发现预测误差的差距较小,而且没有显著的改善,同时在某车险数据集上测试了广义线性模型(GLM)、广义可加模型(GAM)、梯度提升机(GBM)、Delta提升机(DBM)和分类回归树(CART),并且比较了不同模型的效果[10]。

综上所述,以上作者的成果都是基于某一特定的数据集,因部分成果比较的方法较少,较难支持机器学习优于广义线性模型的结论。因此,本文收集了7个不同的数据集,应用目前比较流行的5种机器学习方法,包括支持向量机(SVM)、随机森林(Random Forest)、人工神经网络(ANN)、深度神经网络(DNN)、梯度提升(XGboost),与广义线性模型(GLM)进行比较。

二、模型介绍

此部分简要介绍6种算法模型,包括广义线性模型和5种机器学习算法。理论上,这6种算法都有非常丰富的内涵和很多改进算法,而本文主要从工程应用角度出发,通过一些常用的开源程序来进行计算比较,因此不再详细解释这些算法的数学模型,仅给出其基本思想、程序来源和主要参数。

(一) 广义线性模型(GLM)

目前,广义线性模型已被普遍用于车险定价,其优点是应用简便,有很多统计软件可供使用,而且可对参数估计结果进行直观解释,但模型需要事先确定因变量和解释变量之间的函数关系,函数形式比较有限,实务中通常采取对数连接函数;广义线性模型不能自动识别解释变量之间的交互作用,这也使得建模过程比较耗时;如果分布假设有误,基于AIC选择的最优模型,其拟合值的误差平方和可能并不是最小的。

本文使用R中的gamlss包进行广义线性模型拟合,建立线性回归、泊松回归、负二项回归、零膨胀泊松回归、零膨胀负二项和泊松逆高斯模型;建立模型后,剔除不显著的协变量,重新建模;然后比较各个最终模型的最小信息准则(AIC),再选取AIC最小的模型作为最优的广义线性模型。

(二)支持向量机(SVM)

SVM算法在解决高维特征的分类问题和回归问题很有效,即使在特征维度大于样本数时依然有很好的效果,特别是当样本量不是海量数据的时候,SVM分类准确率高,泛化能力强。同时,SVM有大量的核函数可以使用,从而可以很灵活地解决各种非线性的分类回归问题。但是,SVM也有一定缺点:在样本量非常大、核函数映射维度非常高时,计算量过大,不太适合使用;非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数;SVM对缺失数据敏感[11]。

本文使用Python软件sklearn包中的SVR函数对车险索赔频率进行预测,其中涉及到两个重要的参数C与gamma。

1.惩罚参数(C)是对误差的宽容度,用于平衡模型复杂度和损失,默认为1.0。C越大,说明越不能容忍出现误差,这种情况容易导致过拟合;C越小,说明越能容忍出现误差,这种情况容易导致欠拟合。因此,参数C太大或太小都是不恰当的,一般可通过N折交叉验证方式确定参数C。

2.gamma是选择RBF函数(径向基核函数)作为kernel后该函数自带的一个参数,隐含地决定了数据映射到新的特征空间后的分布。gamma值越大,支持向量越少;gamma值越小,支持向量越多。支持向量的个数会影响训练与预测的速度。

(三)随机森林(Random Forest)

20世纪80年代Breiman等发明了分类树的算法,通过反复二分数据进行分类或回归[12]。2001年Breiman把分类树组合成随机森林,即在变量的使用和数据的使用上进行随机化,生成很多分类树,再汇总分类树的结果[13]。随机森林在运算量没有显著提高的前提下提高了预测精度。

本文使用Python软件sklearn包中的Random Forest Regressor函数对车险索赔频率进行预测,其中涉及比较重要的参数包括最大特征数、子树的数量以及叶子节点最少样本数。

1.最大特征数(max_features)。随机森林允许单个决策树使用特征的最大数量,默认是“None”,意味着划分时考虑所有的特征数。增加max_features 一般能提高模型的性能,因为在每个节点上有更多的选择可以考虑,这同时也降低了单棵树的多样性,进而有可能导致错误率增大,而且max_features过大会降低算法的速度。一般来说,如果样本特征数不多,比如小于50,默认选择“None”即可。

2.子树的数量(n_estimators)。在利用最大投票数或平均值预测之前,需要建立子树的数量。较多的子树可以让模型有更好的性能,但同时让代码变慢。在处理器能够承受的情况下,考虑到随机森林的随机性,应该选择尽可能高的值,从而使预测更好更稳定。

3.叶子节点最少样本数(min_samples_leaf)。叶子节点最少样本数,默认是1。该值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝;如果样本量不大,可以忽略该值;如果样本量非常大,则推荐增大该值。较小的叶子使模型更容易捕捉训练数据中的噪声,一般来说应该将最小叶子节点数目设置为50以上。

(四)神经网络(ANN)和深度神经网络(DNN)模型

神经网络是受人类大脑中生物神经网络处理信息的方式所启发的计算模型,由Mcculloch和Walter第一次提出[14]。神经网络在语音识别、计算机视觉和文本处理方面的许多突破性表现,使得该方法已成为学界和业界研究及应用的热点。

神经网络中的基本计算单位是神经元,通常称为节点或单位。神经网络接收来自其它节点或来自外部源的输入,并计算输出,每个输入具有相关的权重(ω),根据对其它输入的相对重要性来分配权重(ω)。该节点将函数f应用于其输入的加权和,见图1。

图1 神经元结构图

上述网络采用数字输入X1和X2,并具有与这些输入相关联的权重ω1和ω2。同时,还有另一个输入1与权重b(称为偏差)相关联。作用于输入值和权重的运算和上的函数被称为激活函数(Activation Function),经过激活函数计算后的结果作为该神经元的输出,而当将多个神经元组合起来并具有层次结构时,就形成了神经网络模型。

本文使用Python软件中Keras包搭建人工神经网络和深度神经网络,用以拟合索赔频率,其中对于每个数据集都进行了参数的调整,以追求其结果的相对较优。对于人工神经网络,设置3层:输入层、隐层、输出层;对于深度神经网络,设置了7层:输入层、5个隐层、输出层。输入层神经元数量与样本变量数相同,输出层神经元数量为1,隐层神经元数量根据数据集的不同进行了调整。

人工神经网络和深度神经网络模型均采用梯度下降作为优化器,MSE作为损失函数,训练集中划分10%作为验证集,隐层设置“RELU”激活函数,设置3个回调函数:早停、储存最好的模型结果、学习率下降。根据每个数据集的样本量和数据集的特点,设置学习率和相应的参数。

深度神经网络由于隐层数量较多,具有大量可以调节的参数,其模型调参的复杂程度大大增加,同时由于缺乏相关理论研究的支撑,大多数情况下模型的设定和参数的选择都依赖于经验,带有很大程度的随机性。对于较为复杂的模型,可能会在特定数据集上达到很好的预测效果,但是由于过拟合的问题,在推广的过程中其精确性难以保证。

(五)梯度提升算法(Gradient Boosting)

Boosting算法最早是由弱学习和强学习概念引出的,其基本思想是用一系列的弱学习器去拟合样本数据,每次迭代是对上一次迭代得到的模型预测值与数据差异的拟合,这样即使每一次迭代中弱学习器的效果仅比随机猜测略好,但是当有一定迭代次数之后都会得到较为理想的模型[15]。

梯度提升算法是在Boosting的理论基础上,针对可导的损失函数在每一次迭代时不对损失函数最小化,而是拟合损失函数对上一次迭代模型的边际导数,从而使得每次迭代都是沿着梯度下降,而这种下降方式已被证明是在凸函数条件下最快的收敛方式。

XGboost是eXtreme Gradient Boosting的缩写,是基于梯度提升的一种算法变种。XGboost在Gradient Boosting的基础上做了许多改进,其中最为重要的是引入了二阶导数,用一阶与二阶导数逼近损失函数,这样在优化过程中有更多的信息,同时XGboost在损失函数中加入了正则项,用于控制模型的复杂度,使得模型更加简单,降低了过拟合程度。

本文中使用XGboost方法作为梯度提升算法的代表,主要通过python中xgboost模块实现。在XGboost中重要的参数包括迭代次数、回归树的最大深度和学习率,其中迭代次数和学习率有一定的替代关系。回归树的最大深度决定了回归树的枝桠个数,当回归树较深但是变量相对少时,会出现某些变量过多地重复出现在节点上,可能会导致过拟合甚至对于变量重要性的误判。对于不同的变量个数和特征,回归树的深度会极大地影响到模型效果;迭代次数和学习率在某种程度上是相互替代的关系,一般而言学习率决定了每次迭代的步长,当学习率较低时需要较高的迭代次数来保证得到足够的训练;当学习率较高,即每次迭代步长都较大时,会适当减少迭代次数以免过度拟合出现。

在实际的模型训练中参数调整是一个较为麻烦的过程,需要在不同的参数设定情况下进行比较,因而各个机器学习方法的调参可能并不是全局最优,而仅是在某一些参数范畴之内的最佳值,这给机器学习算法留下了较大的可能性和改进空间。

三、数据介绍

本文选取7个不同的车险数据集,见表1。为了简洁,本文不再一一列出各数据集的描述统计,仅以数据集AutoClaim和Tangshan为例给出车险数据的常见变量类型。值得注意的是,前6个数据都是散车业务,而数据集Tangshan为车险团体客户数据,与通常的散车业务有很大的不同,即没有从人因子,定价因素主要集中在车辆信息,同一车队内的车辆索赔有相依关系(组内不独立性)等。一方面,专门针对车队业务进行的定价研究相对较少;另一方面,基于车队的车险业务在整个车险保费中约占30%,有非常重要的实际意义。

表1 数据集汇总表

(一)数据集AutoClaim

该数据是从SAS Enterprise Miner数据库中检索的汽车保险数据集,是由10 296条保单和29个变量组成的数据集,数据包含的变量信息见表2。

(二)数据集Tangshan

该数据来自人保财险唐山公司,共17 651份保单,是车队保单。车队数据由于不包含从人因素,大部分变量都是与车有关,因而大部分都是无序分类变量,如车型和客户群等;或者有序分类变量,如车龄和座位数等,同时变量间有较强的交互关系。数据包含的变量信息见表3,其连续性解释变量和分类型解释变量的描述性统计结果见表4和表5。

(三)数据预处理

由于标准化之后的数据可以避免变量量纲带来的影响,故对上述7个数据集中自变量的数值型变量进行标准化,同时将字符型变量转化为哑变量,对于数值型分类变量不做处理。需要注意的是,在某些车险数据集中会有暴露数作为变量出现,其含义为保单存续期,在GLM中一般会将其作为模型中的OFFSET项处理,基本思想是将不同暴露期的保单索赔折算到单位时期内的索赔次数。为保持一致,本文在机器学习模型中将折算后的单位暴露时期内索赔次数作为因变量,而不再将暴露数作为自变量加入模型。

表2 数据集AutoClaim的变量信息表

表3 数据集Tangshan的变量信息表

表4 数据集Tangshan连续性变量描述性统计分析表

表5 数据集Tangshan中分类变量描述性统计分析表

此外,机器学习中有时会对数据不平衡问题进行干预,本文中有的数据存在较为明显的不平衡数据问题,即不索赔的保单占绝大多数的情况。针对这些数据集,本文尝试了简单重抽样和SMOTE(Synthetic Minority Over-sampling Technique)方法分别对数据进行预处理,以达到索赔与不索赔保单数在同一数量级的效果,但是处理后的拟合结果并未明显得到一致改善,故最终在预处理中对不平衡数据问题不进行干预。

四、实证结果分析

(一)各种方法的最优模型和最优参数

以下将列出6种方法在不同数据集上的最优模型和最优参数。对于广义线性模型,采用最小信息准则作为最优模型的选择标准,其中泊松逆高斯模型是假定损失次数服从泊松分布,而泊松分布的参数服从逆高斯分布;零膨胀模型是在基础模型上引入零膨胀参数进行回归。对于其它的机器学习算法,本文采用交叉验证的方法来确定最优参数,损失函数设置为均方误差。

本文基于交叉验证数据建模,以避免划分数据集导致的随机偏差。首先,对总的样本进行无放回地随机抽取样本,并将之等分为5份,依次将各20%数据集作为测试集用于检验和评价模型的效果,并将对应剩余80%的数据集合并作为训练集,用于建立和修正模型;其次,通过对5次建模的均方误差等指标进行平均,得到最后结果。

(二) 各种方法的比较分析

在比较不同模型效果时,本文主要采用均方误差作为评价指标,即:

(i=1,2,…,n)

从表6和图2可以看到7个数据集在6种不同方法下的预测结果,其中的变量个数是哑变量化后的变量个数。表6显示了以广义线性模型为基础(设置为100%),不同机器学习方法预测的MSE与广义线性模型的MSE比较;图2展示了各种预测方法MSE的相对大小,由于数据集差异难以进行绝对值的比较,本文的展示方法是将柱状图上下两端分别固定在该数据集上效果最好与最差的方法,其它方法按比例排布于两者之间,从左至右按数据变量个数递增排列。

表6 各方法与广义线性模型的MSE比较表

对比各种方法在不同数据集上的表现,可以看出:

(1)XGboost的预测效果最好,在5个数据集上的预测效果均最优,在所有的数据集上一致地优于广义线性模型,具有很强的稳健型;广义线性模型的表现比较平庸。

(2)在同一个数据集上,大多数机器学习方法预测的MSE差距较小,不同方法可能已经达到了相对较优的预测效果。

(3)DNN的预测效果均优于ANN,隐层数量较多的神经网络体现出了比较明显的优势,但是参数调节的过程会花费大量时间。

(4)变量数量较多时机器学习算法均优于广义线性模型,说明当数据集的变量较多时,机器学习体现出了明显优势,同时机器学习算法在面对数据量较大的数据集时并没有体现出特别明显的优势。

(5)随机森林模型善于处理分类数据的优势在数据集Tangshan上得到了体现,并在自变量几乎全部都是分类变量的情况下取得了最好的效果。

(6)支持向量机的预测效果在大多数数据集上弱于其它机器学习方法,但是当变量数增多时仍然会优于广义线性模型。

从统计学角度而言,当样本数目已经足够大时,新增加的样本并不会额外提供太多的信息,额外的样本可以被视为已有样本的某种重复,特别是在车险数据中大部分的自变量是分类变量,即只是某种标签,某一类标签的样本可能会反复出现,因而机器学习的结果并不会进一步改善;而当变量增多时,可以提供额外的信息或分类标准,但是多变量导致的复杂相关关系难以被广义线性模型揭示;从图2中可以看到,当数据集按照变量数从小到大排列时,在变量数较少的数据集Claimlong和Swedish上,广义线性模型仍然会优于大多数模型,而当变量数达到10以上时,广义线性模型的表现就显著地弱于大部分机器学习模型了。

同时,本文也基于平均绝对误差和Gini系数对模型进行评判,平均绝对误差(MAE)为:

(i=1,2,…,n)

Gini系数由Frees等提出,主要用于评价保险中的风险分割,取值在-1~1之间,详细计算方式可见文后附录。一般而言,Gini指数越大,风险分割效果越好,从而保险评分和基础统计模型越好。需要注意的是:Gini系数用于衡量模型对于风险的识别效果,当预测值(或者风险评分)的序完全反映了对应真实投保人的索赔记录时(本文中指索赔次数),Gini系数越接近于1,即当预测模型的结果在所有预测值中的相对位置排序与真实值的排序位置相近时,Gini系数的表现越好;但同时,Gini系数的缺点在于其只关注了风险区分,即预测值的以序为代表的相对大小,因而不一定与MSE等指标相一致。本文提供平均绝对误差和Gini系数的简要结果见表7和表8所示,以此作为模型评价参考。

表7 各方法与广义线性模型的MAE比较表

表8 各方法与广义线性模型的Gini系数比较表

从表7表8可以看出,平均绝对误差与均方误差的结果类似,且XGboost方法一致地优于广义线性模型;大部分数据集上XGboost和随机森林的Gini指数最大,超越了广义线性模型,但是广义线性模型表现最为稳定,其风险区分效果较好。

五、结论

本文使用了7组不同的数据集,比较了广义线性模型和5种机器学习算法在预测索赔频率上的效果。尽管6种方法都存在很多种改良的途径,对于精通某类模型的学者而言,该方法的预测效果可以超越本文显示的情况,但从工程应用角度出发,通过一些常用的开源程序就可以达到商业的要求,大大减少了建模成本,是非常好的选择。因此,本文的目的是从商业实用的角度,兼顾模型的可实现性和效果而进行比较。

本文结果显示:机器学习算法不亚于广义线性模型的表现,并且XGboost算法能够在所有数据集上都一致地优于广义线性模型;机器学习算法在面对变量数较多的数据时,预测效果相对更好。

本文的不足在于只考虑了较为基础的广义线性模型,未能对各个数据的特征进行进一步的研究,如使用copula或者将变量间相互组合再作为新的变量加入模型。

在实务中,广义线性模型由于预测准确度高以及运行速度快,被大量地应用于车险定价中。但是,广义线性模型是建立在各种分布假设之上,而实际的损失数有时可能难以满足这些分布假设,进而有可能造成预测结果不准确。本文的结论为车险定价提供了一种新的思路:经过严格参数调整的机器学习算法能够获得比广义线性模型更优的预测结果。由于机器学习算法不需要基于一定的分布假设,没有对变量取值的限制,在方法的适用性上要优于广义线性模型,并且在面对变量较多、数据量较大的数据时,能够有更好的预测效果。

机器学习模型也有其自身的劣势,比如模型难以解释、运行时间过长等。保险公司为了提高定价的准确性,为了更精确的模型而舍弃了可解释性和运行速率是可以接受的,机器学习算法在车险定价中仍然具有广阔的前景,并待以挖掘。

附录:有序Lorenz曲线和Gini系数及其计算方法。

Frees等定义了有序Lorenz曲线(Ordered Lorenz Curve)和对应的Gini指数,主要应用于保险中的风险分割和模型选择[19]。

定义一份保单的保险损失为y,保费为P(X),且假设损失y和保费P都依赖于保单持有人的特征变量X。损失y的分布在0处有较大的概率堆积,且尖峰后尾,从而很难直接比较损失的分布和保费的分布。所以,引入另一个变量R,即相关度(Relativity)。

给定样本集合{(xi,yi),i=1,2,…,n},其中xi表示与第i份保单有关的解释变量,yi表示第i份保单的损失,则保险人在i保单的净损失为l(xi,yi)=yi-P(xi),期望损失为:

EΙ(i∈A)l(xi,yi)

=ExEy|xΙ(i∈A)(y-P(xi))

=ExΙ(i∈A)(m(xi)-P(xi))

其中m(x)=E(y|x)是回归函数,而A集为某些保单集合,使得净损失的均值为负,即:

i∈A⟺m(xi)

因而选择一个分数s(x)作为m(x)的近似值,当m(xi)

其中R越小,表示保险人在收取单位保费时承担的风险越小。假设当R=R(x)≤s时,保险人愿意承保。定义保费P(x)的分布函数和经验分布函数分别为:

同理可得,损失的分布函数和经验分布函数为:

图3 Lorenz曲线示例:Car数据集与GLM方法图

在实际中,不同方法的有序Lorenz可能会出现交叉,为避免这种情形,Frees等建议使用基尼系数指标,定义为有序Lorenz曲线与盈亏平衡线之间面积的两倍,或以积分形式定义:

一般而言,Gini指数越大,风险分割效果越好,从而保险评分和基础统计模型越好。经典的Gini指数在0,1取值,此处的Gini指数的取值范围扩展到了-1,1,其中取负数的情况是由于对根据相关度排序的保单未能真正反映对应的风险,即有序劳伦兹曲线折向对角线上方的情形。同样,由于有序Lorenz曲线有其“隐性边界”存在,Gini系数有理论最大值,即有序Lorenz曲线与对角线所围成最大面积的两倍。

在本文中,由于数据集中没有保费信息,借鉴Qian等的方法[20],在计算Gini指数的时候将保费函数看做常数,即P(·)≡1,则相关度为:

此处,用预测值作为E(y|x),即根据预测值的结果得到序,然后将实际值按照预测值的序进行排序,进而画出有序Lorenz曲线,并计算得到Gini指数。

需要特别注意的是:由于各模型的预测值只起到了排序的作用,可以理解为某一保单在所有预测值中的序与实际损失(本文中指索赔频率)的序越接近,则有序Lorenz曲线越接近“隐性边界”,因而对应的Gini系数值越大,效果越好。通俗地说,有序Lorenz曲线和Gini系数表现得好则意味着模型越能识别各保单的风险高低,然而这种以序体现的在所有保单损失预测值中的相对大小,并非与均方误差等度量预测值和实际损失值偏离程度的指标相一致。

猜你喜欢
车险广义线性
基于博弈论的我国UBI车险发展趋势研究
L-拓扑空间广义模糊半紧性
基于改进DeepFM的车险索赔预测模型的研究
广义仿拓扑群的若干性质研究*
线性回归方程的求解与应用
车险监管力度加大,24家机构被叫停商车险
从广义心肾不交论治慢性心力衰竭
二阶线性微分方程的解法
一类特别的广义积分
非齐次线性微分方程的常数变易法