1. 引言
保险是金融市场的重要组成部分,保险欺诈行为严重影响了保险市场的健康、可持续发展,保险欺诈预警和反欺诈是保险公司打击保险欺诈的重要手段。伴随着大数据科学和人工智能技术的发展,智能化反欺诈技术越来越多的应用在保险反欺诈任务中,比如客户风险画像描绘、基于客户日常消费行为的实时预警、案件风险识别、赔付渗漏预警和周期审计等任务。然而由于保险行业的数据分布散、更新不及时、数据质量差异大和数据监管严格等因素影响,智能化技术应用与落地都面临着严重的挑战。
在汽车保险领域,简称车险,我国2023年保费收入约8673亿元 [1] ,约占全国财险保费收入55%,因此,车险对于我国产险乃至整个保险领域有着举足轻重的作用。据统计 [1] ,车险年度赔付金额约占保费总额50%左右,约4300亿元。据估计 [2] ,车险欺诈金额高达1000亿元,约占赔付总金额20%,且欺诈案件呈现出团伙化、职业化和专业化趋势 [3] 。车险欺诈案件严重侵害了汽车保险公司的利益,影响了汽车保险行业的健康发展,扰乱了我国社会的稳定和谐,因此,打击车险欺诈行为是各大保险公司的核心任务之一,也是保险行业的重要任务。车险领域的欺诈比例高,案件审查和调查成本高昂,仅仅依靠人工进行车险案件的欺诈识别,效率低下,扩展性不足,难以应对我国高速发展的汽车保险产业,因此采用人工智能的手段来辅助车险理赔人员提升对案件风险的识别能力和效率是大势所趋 [4] [5] [6] [7] 。
在车险领域,车险数据分多个主体进行存储,比如报案数据以报案号为主键存储单个案件的具体信息,包含案件中涉及的车辆、人员、案发时间、查勘信息等。车辆数据则以车牌号或者车架号为主键存储了单辆车的信息,包含车辆品牌、购买时间等。人员数据以身份识别号为主键存储人员信息,包括人员的性别、年龄、驾照编号等。而车辆数据和人员数据又细分车损数据和人伤数据等。因此车险场景下的数据具有主体多,主体与主体间关系复杂的特点。由于每一个数据主体对应有一张数据表格,车险场景的智能化建模涉及到跨数据表的特征衍生的问题。
目前较为主流的一些特征衍生方法都是基于单张表进行处理 [8] - [16] ,对于车险场景中涉及多张表的处理情况并不适用。为处理跨数据表特征衍生问题,DFS [17] 提供了一种较为有效的自动化特征加工平台,但由于缺少重要特征筛选机制,容易产生特征爆炸问题。ADE方法 [18] 在DFS方法之上进行了优化,加入了特征筛选,但特征筛选是在特征衍生之后,没有从根本上解决特征爆炸问题。
为了根本性解决跨表特征衍生过程的特征爆炸问题,我们提出了xDFS方法,该方法在特征衍生阶段进行候选特征评估和筛选,在保障建模效果的基础上,限制了特征衍生的数量,从而避免了特征爆炸问题。此外xDFS还优化了特征衍生方法,避免了DFS对表格进行预处理和拆分的过程,从而提高了特征衍生效率。xDFS方法在特征衍生的效果上优于DFS,并且不会出现特征爆炸问题,根本性解决了DFS在跨表数据集特征衍生过程中的特征爆炸和低效问题。
本文第二章节介绍了自动化特征工程相关工作,包括多表特征衍生方法和单表特征衍生方法。第三章节提出了xDFS方法,详细介绍了xDFS的架构,包括特征衍生方法和特征筛选方法,并与现有的多表特征工程方法进行对比分析。第四章节对比了xDFS方法和现有的两种多表特征工程方法的实验效果。第五章节,我们给出了关于xDFS方法的总结和应用延展讨论。
2. 相关工作
自动化特征工程按照表结构区分,可以分为多表自动化特征工程和单表自动化特征工程。
目前关于多表自动化特征工程的研究相对较少,DFS [17] 是目前最为成熟的特征衍生工具,DFS方法可以根据多表关系进行跨表聚合,并且进行特征衍生。具体的,DFS将表之间的关系定义为父表和子表,子表中包含父表的主键(在父表中具有唯一性,能区分父表中的每一个样本)。父表的特征可以分为三类,分别为EFEAT、DFEAT和RFEAT。其中EFEAT由父表中原始特征通过一元或多元运算符衍生而来;DFEAT由子表中特征而来,当父表的主键在子表中也具备唯一性时,子表中的样本和父表中的样本具有一一对应关系,可以由对应关系直接获取子表的特征值合并入父表特征;RFEAT也由子表中特征而来,但父表的主键在子表中不具备唯一性,父表中样本和子表中样本为一对多关系,可以将子表中特征进行聚合再并入父表中,父表中特征表述如下:
其中
为第k个实体中的特征j'在第i个样本上的取值。特征j'由第l个实体中的特征j衍生而来。rfeat为min/max/count等聚合运算符。
根据上述方法,DFS可以进行自动化多表特征衍生。但DFS由于缺少特征筛选机制,容易造成特征爆炸。ADE方法 [18] 在DFS方法之上进行了优化,添加了event-based feature,并且进行了特征筛选,但是特征筛选是在每一张表特征衍生完之后进行的特征筛选,因此当表关系较为复杂,结构较深时,会导致即便在每张表特征衍生后进行特征筛选,在最后汇聚到主表上时仍然会因为特征过多在特征衍生阶段就产生特征爆炸。
其他一些主流的关于自动化特征工程的研究都是处理单表数据的,比较典型的包括autocross [8] 、autofis [9] 、xcrossnet [10] 、ExploreKit [11] 和SAFE [12] 。这些自动化特征工程方法根据特征生成方式的不同,可以区分为单表特征工程方法和多运算单表特征工程方法。
单表特征工程方法采用特征间点乘的方式来生成交叉特征,多用于基于深度学习的端对端模型。Autocross、autofis、xcrossnet是其中较为成熟的方法。Autocross方法采用树模型搜索的方式来找到特征衍生的组合,并利用LR模型来筛选特征,其优势在于基本不需要调参,采用分布式计算,计算速度快。Autofis方法适用于所有的FM模型,用于对FM模型中的交叉特征的筛选,相对于autocross,不需要对树模型空间进行搜索,筛选特征的效率更高。Xcrossnet则是基于MLP进行交叉特征的筛选,并且可以处理数值型数据类型。三种方法总结来说,autocross和autofis仅能处理类别型的变量,或者需要将数值型的变量预处理成类别型变量后,才可以进行特征衍生。而xcrossnet方法除了可以处理类别型变量外,还可以处理数值型变量,在处理的变量类型上更为通用。Autocross可以衍生筛选出特征,并将特征用于任意模型,而autofis和xcrossnet方法则与因子分解机或MLP结合,直接获得模型训练结果而不会输出特征衍生和筛选的中间结果。
多运算单表特征工程方法采用四则运算、逻辑运算等方式来生成交叉特征。ExploreKit和SAFE是其中较为代表性的方法。除了交叉特征外,这两种方法对于单个特征也有一些进一步的处理,例如ExploreKit引入了对数值型变量的离散化和归一化处理,SAFE在此基础上还引入了数学运算,例如log、sigmoid、square等。对于衍生的特征,ExploreKit采用元学习的方法来进行特征筛选,SAFE则是首先通过树模型来确定特征交互的组合,以此为依据生成特征,并在此基础上利用IV值和皮尔逊相关系数来删除掉不重要的特征和冗余的特征。这两个方法均可输出特征衍生单独的结果和经过特征筛选的结果,所得到的特征都可以用于各类机器学习和深度学习模型。
3. xDFS
xDFS方法可以分为特征衍生和特征筛选两部分。
特征衍生在DFS的基础算子上提出了groupby方法,该方法将同一张表中的数值型变量以类别型变量为依据进行分组统计,解决了DFS方法需要对类别型变量进行实体抽取预处理才能分组统计的问题。
特征筛选又可以分为特征组合和特征筛选。特征组合在特征衍生之前,通过树模型确定特征组合,再将确定的特征组合进行特征衍生。特征筛选在特征衍生之后,对已经衍生的特征按照重要度和冗余情况进行特征筛选。
3.1. groupby方法
3.1.1. groupby方法介绍
Groupby方法与pandas [19] 下dataframe中的groupby方法类似,所不同的是,dataframe中groupby是按照类别进行分类,并在分类完成后进行统计计算。以车险场景为例,对于图1(a)中的原始表,利用pandas进行groupby的结果如图1(b)所示,按照字段下的类别数,分别形成了一个两行的统计表和一个三行的统计表。但这种处理方式无法把特征用在原始表上,而我们提出的groupby方法如图1(c)所示,可以在原始表格上衍生出新的特征。
根据图1(b),对于性别字段可以求得平均年龄和各性别人数,对于修理厂字段,可以求得在各类修理厂修理车辆的平均购置价和平均车龄。将性别和年龄,修理厂类型和新车购置价、车龄联系起来,是依据我们现有的常识和直观感觉,认为这两组字段间有相关性。但是在实际的特征工程过程中,由于具备海量的原始特征,我们很难手动去一一判断字段间的相关性,因此为了得到图1(c)这样的特征衍生结果,还需要进行组合选择,关于特征组合的方法可见3.2.1。

(a) (b)
(c)
Figure 1. (a) Original table; (b) Results from groupby method in pandas; (c) Results from groupby method in xDFS
图1. (a) 原始表格该表中存在两个类别型字段,Gender和RepairFactoryType,可以依据这两个字段对其余数值型字段进行groupby;(b) 利用pandas将DriverAge按照Gender进行groupby,将NewAutoPrice和CarAgeInMonth按照RepairFactoryType进行groupby的结果;(c) 利用xDFS进行groupby的结果
上述内容具体介绍了groupby方法是如何进行特征衍生的,关于groupby方法进行特征衍生的数学表述推导详见附录1。
3.1.2. xDFS vs DFS
在DFS中也可以实现groupby方法衍生出的特征,但是流程会更加复杂。以图2为例,(a)~(c)为利用DFS方法进行特征衍生的流程,(d)~(e)为利用xDFS方法进行相同特征衍生的流程。显然xDFS方法进行的特征衍生深度较DFS方法要浅,且该方法不依赖于数据表的拆分(DFS方法必须拆分出报案数据表和车辆数据表,才能进行特征衍生)。
上述流程图直观上展示了xDFS方法可以与DFS方法生成相同的特征,附录2中对于这一点进行了数学证明。
因此,我们可以得出如下结论:
其中
为通过DFS方法将原始特征j通过一系列映射后,重新映射回实体l而新生成的特征,
为通过xDFS方法直接将特征j进行特征衍生而生成的特征。
3.1.3. xDFS vs ADE
文献 [18] 提出了一种ADE方法,也可以生成groupby特征,该文献中将其称为event-based feature。文献 [7] 提出的方法存在以下问题:1) 该方法本身的效果并不稳定,需要结合DFS方法生成的特征一起,才能有较稳定的效果;2) 该方法并没有说明event-based feature究竟是怎么进行特征间组合的,更大的可能性是依据实际的物理意义来进行组合,非常依赖行业经验,不具备普适性。
而xDFS方法本身就是基于DFS方法的改进,因此生成的特征本就包含了DFS方法中的特征,不需要与DFS方法结合。并且该方法可以自动进行特征组合,具体在3.2.1章节中会阐述,因此可以自动化进行特征衍生,不依赖于任何行业经验。
3.2. 特征组合与特征筛选
3.2.1. 特征组合
通过groupby方法,可以使得DFS不用进行实体抽取的预处理,即xDFS可以直接将生数据处理成适用于各类机器学习模型的特征。但车险场景中,由于表的数目庞多且表连接关系复杂,会导致特征衍生的深度较深,而每一层的特征衍生,都会在上一层表的基础上在进行一次特征组合,因此会导致特征呈指数式增长,当特征衍生的深度较深时,会发生特征爆炸,使得DFS方法在进行特征衍生时只能在较浅的深度进行衍生,无法挖掘深度表间的潜在关系并生成相应特征。
为了减少特征组合数,可以选择树模型来筛选特征组合,xDFS选取了xgboost来筛选特征组合,通过设置xgboost中树的深度和数目,来得到合适的特征组合数。为了保证跨表间的特征也能进行组合,需要在所有子表特征都聚合完后再利用xgboost来进行特征筛选。
3.2.2. 特征筛选
得到特征组合后,首先根据组合情况衍生出相应的特征,在此基础上,对生成的特征再进行特征筛选,并将筛选的结果聚合到父表上。具体采用的特征筛选方法包括,对于离散变量采用卡方检验计算特征重要度,对于连续变量采用方差分析计算特征重要度。首先利用皮尔逊相关系数剔除一对特征中重要度计算较小的冗余特征,在此基础上,根据用户设置的特征筛选上限进行特征筛选。
最终,整个xDFS的流程图如图3所示。
首先利用DFS的搜索机制找到最底层的表(该表不存在子表),对该表进行特征衍生和特征筛选,再往上一层父表进行特征聚合。若父表具有多张子表,则待所有子表都完成特征聚合后,再进行父表的特征衍生。
4. 测试结果与分析
精度
选取了facebook recruiting IV、KDD cup2014两个公开数据集和某家车险公司的数据集共三个数据集进行测试。其中facebook recruiting IV的表连接关系比较简单,另外两个数据集的表连接关系比较复杂。对于特征衍生的结果采用one-hot进行编码,采用xgboost模型进行训练,设置特征衍生上限为500。比较DFS方法、ADE + DFS方法和xDFS方法,其结果如表1所示。其中提升率以衍生深度为1时DFS方法的AUC为基础进行计算。
可以发现xDFS方法在3个数据集上均具有最好的效果。其中facebook recruiting IV数据集的深度较浅,因此DFS方法在3个衍生深度下的结果相同,但ADE和xDFS仍然能挖掘表连接关系之外的groupby关系,使得其在不同衍生深度下具有不同的效果。在KDD cup2014和某车险公司的数据集上,可以发现ADE最为容易发生特征爆炸,DFS次之,xDFS作为一种轻量化方法,可以很好地适应各类数据集的深度特征衍生。这是因为ADE虽然加入了特征筛选,但是是在每一层子表特征衍生完之后,如果该层子表特征本身数量巨大,会导致该子表特征无法衍生。而由于ADE加入了groupby方法,导致每一层子表的特征数远大于DFS,会比DFS更容易发生特征爆炸。

Table 1. Comparison between xDFS, DFS and ADE
表1. xDFS与另外两种方法效果对比
5. 结论
本文提出了一种xDFS方法,相较于DFS方法,该方法在处理复杂的表连接关系和深度的特征衍生时,具有良好的精度,同时避免了DFS方法的繁琐预处理过程和特征爆炸问题,并在公开数据集以及车险场景数据集上获得验证。该方法的提出有利于智能化方法在车险场景的应用和落地,推动了车险反欺诈数据化、智能化进程。同时,针对其他金融场景任务,比如银行贷前客户划分、信贷过程预警以及贷后审计等任务,xDFS都可以发挥重要作用,进一步推动人工智能技术在金融风控领域的落地应用。
基金项目
本论文由国家重点研发计划资助,项目号:2022YFB4501500,2022YFB4501503;由国家自然科学基金资助,项目号:12201580。
附录1. xDFS下的数学表达
假定我们需要特征衍生的数据有多个实体,每个实体对应一张表格。那么对于任意一个实体均可以进行groupby特征衍生。对于第l个实体上的第j个特征
,如果第l个实体上还存在类别型或id型特征
,则可以得到新的衍生特征
,由于没有进行跨表特征衍生,按照DFS中对特征的分类,该衍生特征为EFEAT。其数学表述如下:
其中fefeat是特征生成函数,包括了求和、求平均、求中位数、求个数等多种函数。对于第l个实体上的类别型特征cate,该实体上第i个instance的特征cate取值为cate_i,那么找出cate取值为cate_i的所有instance的下标构成的矩阵即为
,其计算公式如下:
其中
指第l个实体中在cate特征上所取的值为cate_i的instance集合中的第m个instance在第l个实体中所有instance里所对应的下标。
附录2. DFS下的数学表达
对于第l个实体上的第j个特征
,可以在第k个实体上生成RFEAT,按文献[6]中的表述方式为:
将上述表述转化为数学形式如下:
其中
为第l个实体中所有instance的第j个特征集合构成的向量,向量大小为
,
为第l个实体中instance的个数。
为标签矩阵,其大小为
,
是指第k个实体中的第i个instance在第l个实体中所对应的instance数。
计算方式如下:
其中
指第k个实体中的第i个instance在第l个实体中所对应的第m个instance在第l个实体中所有instance里所对应的下标。
对于第k个实体上的所有instance均可以通过上述方式生成特征,最终有新特征
,为由所有instance的新特征集合构成的向量,向量大小为
,
为第k个实体中instance的个数。数学表达如下:
对于第k个实体上新生成的特征,可以在第l个实体上生成DFEAT,则对于在第l个实体上的原始特征
通过第k个实体再次映射回第l个实体而新生成的特征
,有如下计算公式:
根据3.1.1,通过groupby衍生的特征如下:
其中cate与DFS方法中的第k个实体相对应,第k个实体由cate拆分获得,因此cate中奇异值个数与第k个实体中instance数相同,值也一致,即set(cate)是长度为nk的集合,可表示为如下形式:
显然,
作为一个
的向量,有大量重复值,其集合形式可以表示为:
进一步的,
可以表示为如下形式:
显然,对照DFS方法,有下述等式成立:
由此,综合附录1中的推导,有如下结论:
NOTES
*通讯作者。