王重仁,王 雯,佘 杰,凌 晨,5
(1.山东财经大学 管理科学与工程学院,济南 250014; 2.济南大学 金融研究院,济南 250001; 3.中泰证券股份有限公司风险管理部,济南 250001; 4.上海财经大学 信息管理与工程学院,上海 200433; 5.上海健康医学院 医疗器械学院,上海 201318)
互联网、大数据和人工智能等技术正引发金融行业的变革,随着大数据时代的来临,金融行业数据量逐渐增大,数据类型越来越多,数据更新速度也日益加快,这为金融机构的个人信用风险评估工作带来了挑战,传统的个人信用风险评估方式已经无法适应环境的不断变化,不能满足金融行业的发展需要,因此,迫切需要构建一套智能的信用风险评估体系。
国内外学术界对个人信用风险评估的研究从20世纪40年代开始。19世纪80年代,美国FICO公司开始提供个人信用评分服务,目前FICO信用评分已经成为美国金融机构信用评估不可或缺的数据源。个人信用风险评估本质上是一个分类问题,借助个人信用风险评估模型,可以将申请人划分为“好”客户和“坏”客户,进而帮助金融机构进行贷款审批决策。当前,国内外个人信用评分方法的研究主要分为专家模型、统计学方法、机器学习方法和深度学习4个方面。
目前将深度学习应用到个人信用评分领域的研究还较少。文献[1]提出了一种基于分类限制玻尔兹曼机(Class RBM)的信用评分方法,并且证明该方法具有较高的预测性能。文献[2]为提高信用风险评估的准确性,提出了一种基于极限学习机(ELM)集成学习方法的新型多级深度信念网络(DBN),研究结果表明,该方法具有一定的优越性。然而上述研究都基于传统的特征数据进行建模,未利用深度学习算法自动提取特征的特点。
在互联网行业,重要的信用评分数据源是用户的行为数据,对于这类数据,传统的方法是采用人工特征提取的方式进行建模。近年来,随着深度学习技术的发展,已有研究基于卷积神经网络(Convolutional Neural Network,CNN)和长短期记忆(Long Short-term Memory,LSTM)神经网络等深度学习技术对用户的历史行为原始数据进行建模。文献[3]研究了深度学习在客户流失预测中的应用,使用一种新的编码方法将电信行业客户的历史行为数据转换成图像,并设计一个CNN模型来自动学习特征。文献[4]使用用户行为原始数据,设计一种基于注意力机制LSTM的个人信用评分模型,实验结果表明,该模型优于传统方法,但较为单一,仍有一定的改进空间。
目前已有研究尝试将卷积神经网络(CNN)和循环神经网络(Recurrent Neural Network,RNN)相结合,并应用到文本分类[5]、图像识别[6-7]和网络入侵检测[8]等领域。本文运用基于CNN和RNN融合的深度学习方法,使用用户历史行为数据,对个人信用评分问题进行研究。
本文研究的数据源是用户的历史行为数据,行为数据主要包括用户浏览行为、用户银行流水记录、信用卡账单记录等。本文对每个用户的原始数据进行编码后形成一个矩阵,该矩阵包括2个维度即时间维度和行为维度,数据编码方式如图1所示。本文将用户原始行为数据按照时间切片进行重采样编码,由于不同用户的借款日期不完全相同,因此对于时间维度,将每个用户的借款日期作为切片的基准时间点。假设用户的行为数据指标数量为n,则矩阵行数为m,矩阵代表了一个用户在不同时间点上的所有行为特征。在按照时间切片对用户行为数据进行重采样时,选择的汇总方式包括合计、计数、平均等,然后将用户汇总的数据按照时间先后进行排列,对于无记录的情况统一填充为固定值,这样用户不同行为的序列就按照时间进行对齐。
图1 数据编码方式Fig.1 Mode of data encoding
对用户历史行为数据而言,编码完毕的矩阵包括时间维度和行为维度,以此为基础,构建信用风险评估模型有两种思路,一方面,在一段历史时间内,按照时间的先后顺序,用户的历史行为会具有一定的序列性,同时,因为用户行为有多种类型,所以基于用户历史行为数据的个人信用评分可以视为一个多变量序列预测问题,可以采用LSTM模型来提取用户行为的序列特征。另一方面,编码之后的数据可以视为图像,一般的彩色图像有3个通道,而本文编码之后的数据可以视为单通道灰度图像,CNN在图像分类领域具有较为广泛的应用。采用单一的LSTM模型或者CNN模型都存在一些不足之处,LSTM注重挖掘数据的整体序列特征,往往忽略了数据的局部特征,而CNN主要通过卷积层和池化层来学习输入的局部特征和提取重要的特征信息[9-10]。因此,本文提出一种基于LSTM和CNN的融合深度神经网络模型,该模型由LSTM子模型和CNN子模型2个子模型融合而成,这样模型可以从用户原始行为数据中提取序列特征和局部特征。
1.1.1 LSTM神经网络
RNN将循环结构引入传统的神经网络。因为RNN在训练中很容易发生梯度爆炸或者梯度消失问题,从而无法捕捉长距离依赖(Long-Term Dependencies)关系[11]。为解决上述问题,Hochreiter 和 Schmidhuber[12]在RNN的基础上提出长短期记忆神经网络。
LSTM以传统RNN为基础进行改进,设计了一种特殊的结构单元,并同时设计了3种独特的“门”结构,对通过单元的信息可以选择性地增加或去除,从而对通过单元的信息进行筛选。“门”结构采用Sigmoid函数实现,Sigmoid的取值范围为0~1,可以视为允许多少信息通过。若为0,则不允许该信息通过;若为1,则允许所有信息通过。这3种“门”结构作用于单元结构组成了LSTM的隐藏层。LSTM网络结构如图2所示。
图2 LSTM网络结构Fig.2 Structure of LSTM network
LSTM结构如下:
1)LSTM单元通过遗忘门(forget gate)来对前一个记忆状态的信息进行处理,决定从记忆状态遗忘的信息。遗忘门会输入ht-1和xt,并输出介于0~1之间的值。
ft=σ(Wf·[ht-1,xt]+bf)
(1)
2)决定记忆中存储哪些信息。主要包括两方面,一方面通过输入门决定要更新哪些信息,另一方面通过tanh激活函数来更新候选向量。
it=σ(Wi·[ht-1,xt]+bi)
(2)
(3)
3)结合上面两部分来更新记忆状态。
(4)
(5)
4)决定输出哪些隐藏状态信息。首先使用输出门来决定要输出的内容,然后采用tanh激活函数处理记忆状态,最后使用输出门来控制需要输出的记忆状态。
ot=σ(Wo·[ht-1,xt]+bo)
(6)
ht=ot×tanh(Ct)
(7)
LSTM等RNN模型主要的训练方法是按时间展开的反向传播算法(Back-Propagation Through Time,BPTT)[13]。BPTT算法是对经典的反向传播(BP)算法的改进,BPTT将RNN按照时间顺序展开为一个深层的网络,在此基础上采用BP算法对展开后的网络进行训练。由于BPTT算法概念清晰且计算高效,因此本文采用BPTT算法来训练LSTM网络。
标准单向LSTM的缺点是它仅用到正向的信息,而没有考虑反向的信息,这样就丢失了一些有价值的信息。针对该问题,双向LSTM(BLSTM)同时考虑了双向的信息,它是在双向RNN模型的基础上改进而来。双向LSTM就是在隐藏层中同时有一个正向LSTM和一个反向LSTM,双向LSTM的输出是由这2个单向LSTM共同决定(可以拼接或者求和等),和标准单向LSTM相比,这样可以挖掘更多的信息。
1.1.2 注意力机制
深度学习模型中的注意力机制是对人类大脑注意力的一种模拟,其借鉴了人脑的特点,在某些时候,人脑对事物的关注将集中在特定的地方,从而忽略了其他地方。这样可以将注意力集中在重要的地方,这种机制可以合理利用人脑的计算资源。
注意力机制最早来源于20世纪90年代的图像研究领域,但真正被研究人员重视是从Google DeepMind团队的图片识别研究[14]开始的,人们在观察图像时,并不是去仔细地把图像的每个像素都看一遍,而是会将注意力选择性地集中在图像的某些重要部分,忽略其他不重要的部分,因此根据人类观察事物的这个特点,在RNN上增加注意力机制来进行图像识别研究。此后,文献[15]将注意力机制应用到机器翻译领域,注意力机制对翻译模型的输入与输出之间的相关性进行重要度计算,从而抽取出更加关键的信息。
1.1.3 LSTM模型
本文尝试基于用户行为序列数据来进行信用评分,采用了一种基于注意力机制LSTM(AM-BLSTM)的个人信用评分方法,该方法结构如图3所示,从下往上分为行为数据编码层、BLSTM层、注意力机制层、输出特征层。
图3 AM-LSTM模型结构Fig.3 Structure of AM-LSTM model
原始数据经过编码转换后,可以转换为多变量序列。对于LSTM网络而言,每一个时刻的输入可以是单个数值,也可以是一个向量,本文模型每一个时刻的输入都是一个向量。
1)BLSTM层:对于原始数据进行编码并且对数据进行预处理后,数据输入双向LSTM网络,对于LSTM网络而言,每个时刻的输入都是当前时间所有行为组成的向量,使用双向LSTM的目的在于能够捕获不同序列方向的更多的特征信息。如图3所示,BLSTM网络在单向 LSTM 的基础上,增加了一个反向的LSTM层,通过2个LSTM层以相反的方向处理数据,使得 BLSTM可以同时捕捉正向序列信息和反向序列信息。
2)注意力机制层:注意力机制通过计算注意力概率分布,突出了某些重要输入对于输出的影响作用。本文采用一种适用于 BLSTM 网络的注意力机制来解决信用评分任务。如图3所示,注意力层将LSTM 的正反层输出拼接后作为注意力层的输入,以对LSTM各时刻的输出分别计算重要度,最后根据重要度对结果进行加和汇总。
ui=tanh(Whi+b)
(8)
ai=softmax(ui)
(9)
(10)
其中,hi表示BLSTM 第i个时间点输出,t代表事件序列的长度,ai代表第i个时间点输出的权重,最终得到c代表BLSTM各个时间点输出的加权合计,最终基于注意力机制的LSTM模型将会输出一个特征向量。
CNN的基本结构由输入层、卷积层、池化层、全连接层以及输出层构成。
在分类问题上,CNN主要包括3类结构,分别是1D CNN、2D CNN和3D CNN。其中,最常见的是2D CNN,2D CNN即卷积核的维度为二维,常用在图像领域。1D CNN即卷积核的维度为一维,常用在NLP领域,如在文本分类问题中,文献[16]使用CNN进行文本情感分类。3D CNN即卷积核的维度为三维,常用在视频领域,如文献[17]使用3D CNN从监控视频中识别人类行为。不同于文本分类研究领域,本文研究领域中用户不同类型的行为之间是互相联系的,使用1D CNN从单一的时间维度上应用卷积操作可能会破坏特征表示结构,使用2D CNN可以从2个不同维度提取更有意义的特征。
在本文中,卷积神经网络模型的输入可以视为图像,同时本文编码之后的输入和图像相比有一定区别,一方面,一般的彩色图像是3个通道,而本文输入数据是矩阵格式,可以视为单通道图像,另一方面,本文输入数据的矩阵大小远远小于图像的大小。因此,本文提出的卷积神经网络模型采用2个卷积层和2个池化层来自动提取特征,CNN模型结构如图4所示。
图4 CNN模型结构Fig.4 Structure of CNN model
卷积层由多个特征图组成,特征图中有许多神经元,每个神经元通过卷积核与上一层特征图的局部区域连接。卷积层的核心操作是卷积操作,然后需要对卷积操作的结果加上偏置项b,经过一个非线性的激励函数f,最后计算出该层最终的结果。卷积层计算公式如下:
X(l)=f(W⊗X(i-1)+b(l))
(11)
其中,X(l)和X(i-1)分别表示l层和l-1层的神经元活性,W表示卷积核,b表示偏置项。通过卷积操作可以提取其前一层的各种局部特征。
卷积层最重要的2个特征是局部连接和权值共享,这2个特征可以减少神经网络参数数量,降低神经网络复杂度。局部连接是指卷积层的节点只和其前一层的部分节点相连接,以学习局部特征,这种局部连接方式减少了参数的数量,提高了模型训练速度,同时也降低了过拟合的可能性。权值共享指的是卷积核会和上一层的不同区域作卷积,进而检测相同的特征,只有不同的卷积核才会具有不同的权值参数,进而检测不同的特征。
在第1个卷积层,本文选择了大小为1×k的卷积核,目的是提取用户每一种行为在不同时间点上的特征。卷积层后面是池化层,常用的池化方法包括最大池化、随机池化和均值池化,本文采用了最大池化。池化层的作用是在语义上将把相似的特征合并,起到二次提取特征的作用,进一步降低神经网络的参数数量和网络复杂度。对于第2个卷积层,为进一步提取用户每一个行为指标在不同时间点上的特征,同时提取用户在用一时间点上不同行为的特征,第2个卷积层的卷积核大小设置为p×p,在第2个卷积层之后连接了一个池化层,最后,在所有卷积层和池化层之后进行了一维化处理,从而输出一个特征向量。
激励函数采用了修正线性单元(Rectified Linear Unit,ReLU)[18],ReLU可以防止梯度消失和过拟合问题[19],该函数定义如下:
fcov(x)=max(0,x)
(12)
本文提出的基于LSTM和CNN的个人信用评分模型(LSTM&CNN)结构如图5所示,该模型在AM-BLSTM模型和CNN模型基础上融合而成,该模型主要由两部分组成,左侧部分为LSTM网络结构,右侧部分为CNN网络结构。
图5 LSTM & CNN模型结构Fig.5 Structure of LSTM & CNN model
LSTM模型部分和CNN模型部分对应同一个数据源,采用同样的输入数据,在特征融合层将LSTM部分输出的特征和CNN部分的输出特征进行融合,假设c和n分别代表LSTM模型和CNN模型输出的特征向量,其中对于LSTM模型部分,特征向量是注意力层的输出,对于CNN模型部分,特征向量是卷积神经网络的输出向量,那么特征融合层的特征向量o计算公式为:
o=c⊕n
(13)
其中,⊕代表向量拼接,使用Sigmoid函数对融合之后的特征进行分类,得到用户逾期可能性的输出结果。
y=Sigmoid(Wo+b)
(14)
本文实验环境的配置如下:CPU Intel®Xeon®E5-2630 2.60 GHz,内存32 GB,硬盘 500 GB,操作系统 Ubuntu 14 LTS 64位。本文实验采用的开发语言为Python(2.7),实验中用到的Python库主要包括 Numpy、Pandas、Scikit-learn、Matplotlib,其中:Numpy是Python的一个科学计算的库,提供了矩阵运算的功能;Pandas是一个主要用于数据处理、数据分析的库;Scikit-learn是一个机器学习库;Matplotlib是一个画图用的库。深度学习框架选择了基于Python的深度学习库Keras(Tensorflow作为后端)。
本文研究用数据来源于国内一家互联网平台——融360。数据集包括用户浏览行为、银行流水记录、信用卡记录等行为数据,因部分用户记录存在缺失,过滤掉了缺失值较多的用户数据,最后从数据集中选择了47 329个用户的数据作为本文的研究对象。样本的标签为借款用户是否逾期,若用户逾期,则标签为1;若用户按时还款,则标签定义为0。
本文随机选取80%的数据作为训练集,20%的数据作为测试集。在训练数据中,随机选取10%的数据作为验证集,为保证结果准确性,本文将实验重复了5次,每次随机选取不同的数据集进行实验。
首先对原始数据进行处理,将原始数据转换为上文所述的数据编码,考虑到每个用户的行为序列长度不同,因此本文将所有序列转换为固定长度序列。本文首先通过分析历史数据确定了一个标准序列长度,由于原始数据集中时间戳变量已经进行了脱敏处理,因此将序列长度用时间单位来表示,然后将标准序列长度设置为60,这个序列长度可以覆盖95%以上的用户行为,即大部分用户的操作在这个长度范围内,从用户的浏览行为、银行流水记录、信用卡记录等原始行为数据中抽取了61种行为。
在对用户原始行为数据进行编码后,对数据进行预处理。因为数据均为连续型变量,不同的行为变量之间量纲不同,数值范围差别较大,为了避免神经元饱和问题,本文对每一种变量数据进行Min-Max标准化处理。
本文提出的基于LSTM和CNN的个人信用评分模型参数设置如表1所示。在经过一系列实验后,将LSTM神经元数量最后设置为64。对于CNN有一个通用的设计规则:在后面的层(离输出层近的)特征图个数应该增加,这样就可以从低级的特征产生更多类型的特征。因此,在经过实验分析后,对于第1个卷积层,本文选择了32个特征图,卷积核大小为1×3,对于第2个卷积层,选择了64个特征图,卷积核大小为3×3。本文在LSTM层加入了 Dropout机制,经过对比将 Dropout 比率设置为 0.3,同样本文在CNN的输出层同样加入了Dropout机制,比率设置为0.3。训练模型的训练采用 Mini-batch 随机梯度下降,参数更新采用 Adam规则,Mini-batch 的大小设置为64。
表1 LSTM与CNN模型参数设置Table 1 Parameter settings of LSTM and CNN model
为更好地对本文提出的基于LSTM和CNN的个人信用评分方法进行评估,证明本文方法的优越性,本文进行了详细的对比分析,并选择了如下的对比方法:
Logistic回归(LR):Logistic回归模型回归稳定性高,解释性较强,是信用评估领域应用最普遍的模型之一。对于用户历史行为数据,本文采取传统的人工特征提取方式提取特征数据,然后使用LR算法进行建模。
随机森林(RF):使用从历史行为数据中提取的特征数据,并运用RF算法进行建模。
AM-BLSTM:单独运用基于注意力机制的LSTM模型进行建模。
CNN:单独运用CNN模型进行建模。
LSTM&CNN:本文提出的基于LSTM和CNN的融合神经网络个人信用评分模型。
在模型评估指标方面,考虑到需要对用户违约概率进行评估,本文选择了信用评分领域常用的2个指标,即AUC(Area Under Curve)和KS(Kolmogorov-Smirnov)。
假设TP(True Positive)表示实际违约预测结果,也为违约的样本数量,TN(True Negative)表示实际未违约预测结果,也为未违约的样本数量,FP(False Positive)代表实际未违约预测结果,也为违约的样本数量,FN (False Negative)代表实际违约预测结果,也为未违约的样本数量。首先计算真阳性率(TPR)和假阳性率(FPR)的值,TPR和FPR的计算公式如下:
(15)
(16)
ROC曲线是以FPR和TPR分别作为横坐标和纵坐标所形成折线图,AUC被定义为ROC曲线下与坐标轴围成的面积,AUC值越大,说明模型的分类性能越好。
在计算KS指标时,先将用户按照预测结果的违约概率值进行排序,在此基础上计算每一个违约概率的累积FPR值和累积TPR值,最后计算这2个累积值的差值,差值的最大值就是KS指标值。KS指标值越高,说明信用评估模型能够将“好”客户和“坏”客户区分开的程度越大。
在进行深度学习模型训练时,本文采用提前终止的策略来训练模型,使用模型损失值来评估效果,当验证集的损失值连续多次不再下降时停止迭代。
实验结果如表2所示,从表2可以看出,基于注意力机制的LSTM模型与LR和RF模型相比,KS指标和AUC指标都有了一定提升,表明基于注意力机制LSTM表现优于传统的机器学习方法。CNN与LR和RF相比,KS指标和AUC指标都有一定提升,表明CNN模型表现优于传统机器学习方法。
表2 不同模型的性能指标Table 2 Performance indicators of different models
从表2可以看出,LSTM&CNN方法的KS值、AUC值与单独的CNN模型或者单独的LSTM模型相比都有一定的提升,充分证明了LSTM&CNN方法具有较好的个人信用违约预测性能,不但优于传统方法,而且优于LSTM模型和CNN模型,进而说明LSTM&CNN模型可以从不同角度自动提取特征。
本文基于互联网行业的用户行为数据,提出一种基于LSTM和CNN的融合深度神经网络个人信用评分方法。将每个用户的行为数据编码成包括时间维度和行为维度矩阵。融合LSTM和CNN 2个子模型,其中CNN子模型使用2个卷积层和2个池化层来自动提取特征。实验结果表明,本文提出的融合深度神经网络个人信用评分方法较传统的机器学习方法和单一的LSTM卷积神经网络方法性能都有明显提升,证明了该方法在个人信用评分领域的有效性和可行性。下一步将在动态信用风险评估基础上,对信用评分模型的动态更新问题进行研究。