基于GBST的金融违约风险预测方法、装置和电子设备与流程

文档序号:18902614发布日期:2019-10-18 22:09阅读:461来源:国知局
基于GBST的金融违约风险预测方法、装置和电子设备与流程

本发明涉及计算机信息处理领域,具体而言,涉及一种基于gbst的金融违约风险预测方法、装置、电子设备及计算机可读介质。



背景技术:

随着互联网的使用和大数据技术的发展,消费金融得到了长足发展。然而,随着越来越多的金融服务平台的出现,对信用风险的管理提出了更多的挑战。为了有效的控制信用风险,发展出了许多不同的建模技术,包括监督算法和无监督算法。在该领域信用评分模型是一种广泛使用的风险评估模型。

而生存分析模型最初源于处理死亡数据,在医学、保险等领域有非常广泛的应用。如何将生存分析模型等具有时间维度的模型引入到信用风险管理中以解决现有模型在时间维度上预测的缺乏,是本领域面临的重要问题。



技术实现要素:

本发明旨在解决当前的信用评分模型对于金融用户的评价和预测缺少时间维度的缺陷。

为了解决上述技术问题,本发明第一方面提出一种基于gbst的金融违约风险预测方法,包括:

获取历史金融用户数据集,根据历史金融用户数据集建立训练数据集;

基于所述训练数据集初始化gbst生存模型的基础生存树;

从所述基础生存树开始,利用前一棵生存树预测出的生存概率与真实标签的残差进行优化迭代,以此训练得到后一棵生存树,直到总体损失小于既定的阈值;

对于新金融用户的输入数据,利用最后得到的生存树遍历生成树的结果,输出该用户的生存曲线,根据该生存曲线预测每个时间段的违约风险概率。

根据本发明的优选实施方式,所述基于所述训练数据集初始化gbst生存模型的基础生存树包括:使用log-rank分离规则初始化生存树。

根据本发明的优选实施方式,所述使用log-rank分离规则初始化生存树包括:使用km生成估计方法来估计生存树节点中的生存函数。

根据本发明的优选实施方式,所述使用log-rank分离规则初始化生存树包括:使用cox模型来减小用户特征的影响。

根据本发明的优选实施方式,所述利用前一棵生存树预测出的生存概率与真实标签的残差进行优化迭代包括:使用负二项对数似然函数作为损失函数,通过最小化损失函数来优化迭代。

根据本发明的优选实施方式,所述利用前一棵生存树预测出的生存概率与真实标签的残差进行优化迭代包括:使用损失函数的负梯度替换当前损失的近似值,然后拟合树。

根据本发明的优选实施方式,所述利用前一棵生存树预测出的生存概率与真实标签的残差进行优化迭代包括:遍历所有特征的所有有效值,选择合适的特征和值来最小化均方误差。

本发明的第二方面提出一种基于gbst的金融违约风险预测装置,包括:

数据获取模块,用于获取历史金融用户数据集,根据历史金融用户数据集建立训练数据集;

初始化模块,用于基于所述训练数据集初始化gbst生存模型的基础生存树;

生长模块,用于从所述基础生存树开始,利用前一棵生存树预测出的生存概率与真实标签的残差进行优化迭代,以此训练得到后一棵生存树,直到总体损失小于既定的阈值;

预测模块,用于对于新金融用户的输入数据,利用最后得到的生存树遍历生成树的结果,输出该用户的生存曲线,根据该生存曲线预测每个时间段的违约风险概率。

根据本发明的优选实施方式,所述初始化模块还用于:使用log-rank分离规则初始化生存树。

根据本发明的优选实施方式,所述初始化模块还用于:使用km生成估计方法来估计生存树节点中的生存函数。

根据本发明的优选实施方式,所述初始化模块还用于:使用cox模型来减小用户特征的影响。

根据本发明的优选实施方式,所述生长模块还用于:使用负二项对数似然函数作为损失函数,通过最小化损失函数来优化迭代。

根据本发明的优选实施方式,所述生长模块还用于:使用损失函数的负梯度替换当前损失的近似值,然后拟合树。

根据本发明的优选实施方式,所述生长模块还用于:遍历所有特征的所有有效值,选择合适的特征和值来最小化均方误差。

为了解决上述技术问题,本发明第三方面提出一种电子设备,其包括处理器以及存储计算机可执行指令的存储器,所述计算机可执行指令在被执行时使所述处理器执行上述的方法。

为了解决上述技术问题,本发明第四方面提出一种计算机可读存储介质,该所述计算机可读存储介质存储一个或多个程序,当所述一个或多个程序被处理器执行时,实现上述的方法。

由于本发明采用了gbst生存分析模型,因此本发明相比传统的信用评分等模型,生存分析增加了时间的维度,可以更加直观地反映风险与风险影响因素之间的关系,处理删失数据,以更高的精准度支持风险决策。

附图说明

为了使本发明所解决的技术问题、采用的技术手段及取得的技术效果更加清楚,下面将参照附图详细描述本发明的具体实施例。但需声明的是,下面描述的附图仅仅是本发明的示例性实施例的附图,对于本领域的技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他实施例的附图。

图1是本发明的基于gbst的金融违约风险预测方法的流程图;

图2是本发明的基于gbst的金融违约风险预测方法的详细步骤的一个实施例的示意图;

图3是本发明的基于gbst的金融违约风险预测装置的一个实施例的模块组成图;

图4是本发明的一种电子设备的示例性实施例的结构框图;

图5是本发明的一个计算机可读介质实施例的示意图。

具体实施方式

现在将参考附图来更加全面地描述本发明的示例性实施例,虽然各示例性实施例能够以多种具体的方式实施,但不应理解为本发明仅限于在此阐述的实施例。相反,提供这些示例性实施例是为了使本发明的内容更加完整,更加便于将发明构思全面地传达给本领域的技术人员。

在符合本发明的技术构思的前提下,在某个特定的实施例中描述的结构、性能、效果或者其他特征可以以任何合适的方式结合到一个或更多其他的实施例中。

在对于具体实施例的介绍过程中,对结构、性能、效果或者其他特征的细节描述是为了使本领域的技术人员对实施例能够充分理解。但是,并不排除本领域技术人员可以在特定情况下,以不含有上述结构、性能、效果或者其他特征的技术方案来实施本发明。

附图中的流程图仅是一种示例性的流程演示,不代表本发明的方案中必须包括流程图中的所有的内容、操作和步骤,也不代表必须按照图中所显示的的顺序执行。例如,流程图中有的操作/步骤可以分解,有的操作/步骤可以合并或部分合并,等等,在不脱离本发明的发明主旨的情况下,流程图中显示的执行顺序可以根据实际情况改变。

附图中的框图一般表示的是功能实体,并不一定必然与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

各附图中相同的附图标记表示相同或类似的元件、组件或部分,因而下文中可能省略了对相同或类似的元件、组件或部分的重复描述。还应理解,虽然本文中可能使用第一、第二、第三等表示编号的定语来描述各种器件、元件、组件或部分,但是这些器件、元件、组件或部分不应受这些定语的限制。也就是说,这些定语仅是用来将一者与另一者区分。例如,第一器件亦可称为第二器件,但不偏离本发明实质的技术方案。此外,术语“和/或”、“及/或”是指包括所列出项目中的任一个或多个的所有组合。

在信贷风险领域,观测到的生存时间往往是离散的。在此,用yi(t)来表示用户i在每个时间段t的违约标签,用xi表示该用户i的特征。此外,相应的生存时间记为sti,其对于生存函数s(t|xi)的估计是极为重要的。

为此,本发明提出一种基于梯度提升生存树(gradientboostingsurvivaltree,gbst)的金融违约风险预测方法,如图1所示,本发明的方法包括:

s1、获取历史金融用户数据集,根据历史金融用户数据集建立训练数据集。

该步骤通常还需要包括预处理数据的步骤,以对获取的原始数据进行标准化。此外,在建立训练集时,也可以同时建立测试数据集,以便于后续进行效果测试和参数调整。

s2、基于所述训练数据集初始化gbst生存模型的基础生存树;

该步骤优选使用log-rank(时序检验)分离规则生长初始化的生存树,该规则可以最大化终端节点之间的差异。并且,可以使用km生成估计方法来估计生存树节点中的生存函数,以及使用cox模型来减小用户特征的影响。

s3、从所述基础生存树开始,利用前一棵生存树预测出的生存概率与真实标签的残差进行优化迭代,以此训练得到后一棵生存树,直到总体损失小于既定的阈值。

该步骤继续生长接下来的若干树以最小化负二项对数似然函数,以最优化生存函数,并且在约束下将这些树生长到全尺寸。在此,所述的约束是指树的最大深度和终端节点中违约数量的最小值符合合适的条件。

根据本发明的优选实施方式,可使用损失函数的负梯度替换当前损失的近似值,然后拟合树。以及优选的,遍历所有特征的所有有效值,选择合适的特征和值来最小化均方误差。

s4、对于新金融用户的输入数据,利用最后得到的生存树遍历生成树的结果,输出该用户的生存曲线,根据该生存曲线预测每个时间段的违约风险概率。

该步骤相当于对于每个终端结点计算所有用户的生存函数。

从上面的过程可看出,本发明具体如下优点:

1、拥有时间维度,可以获得每个客户的违约时间概率分布,从而进行深度分析。

2、优化总体损失,可以大大减少每个时间段预测概率的误差,降低风险;

3、突破了传统生存分析中强限制性假设(如生存曲线的假设);

4、预测精度高,可以处理非线性异构数据,利用客户的多维度特征。

以下参照图2,以具体实施例的方式描述上述步骤的细节。

1、数据的预处理

我们首先对梯度提升生存树(gradientboostingsurvivaltree,gbst)方法进行数据处理,在处理时,我们使用了证据权重(woe)的转换来提升数据的可解释性。在woe转换中,各变量根据其违约信息被分成多个类别。转换后的变量实际描述的是变量是怎样通过线性关系影响违约概率。woe转换可以反映自变量的贡献度,该贡献度具有某种标准化的特质。并且,转换后的变量对于异常值是加强的。

在woe转换中,我们首先对连续变量进行离散化,得到几个类别,然后对变量进行编码。在类别i中,可以得到相应的woe值:

其中,pyi是类别i中的违约用户相对于所有违约用户的比例,pni是类别i中的删失用户相对于所有删失用户的比例。由此,#yi是类别i中的违约用户的数量,#yr是所有违约用户的数量,#ni是类别i中的删失用户的数量,#nr是所删失用户的数量。

得到了woe值以后,数据可以被编码为相应的值,然后,我们将转换后的数据分成训练数据和测试数据。

2、生存树的初始化

在数据预处理之后,我们用log-rank(时序检验)分离规则和传统的生存模型,例如km生存估计(kaplan-meiersurvivalestimate)和cox相对风险回归法模型(cox),初始化生成树。

在对第一生存树的生长处理过程中,分离过程中面临的问题是如何选择特征与分离的条件,以及确定什么时候停止分离。通过最大化log-rank时序检验的统计值,在我们的gbst方法中使用的log-rank分离规则可以最大化不同节点之间的生存差异。在两个节点中的两组,我们观察到了违约时间tb,b=1,2,...,b。在时间tb,a1b、a2b表示在两组中观察到的风险个体的数量,q1b、q2b则是相应的经常违约个体的数量,qib具有超几何贡献。

q1b=h(a1b,qb,ab)

ab=(a1b+a2b)

qb=(q1b+q2b)。

这样,我们得到相应的期望和方差:

于是,log-rank时序检验的统计值可以定义为:

这就是我们在每次分离时最大化的目标。

当树的深度最大值与终端节点中的违约数量最小值满足合适的条件,我们可以得到j0个终点节点,在节点j,我们可以得到下面的信息:

·节点j中的用户总量:nj

·观测时间tj,b,b=1,2,...,bj,在它们之中,tj,1<tj,2<...<tj,bj

·用户ji在时间tj,b的状态:di,b∈{0,1},其中di,b=1表示违约事件发生,否则di,b=0

·在时间tj,b的违约用户(di,b=1)数量:dj,b

·在时间tj,b的删失用户(di,b=0)数量:cj,b

·用户ji的特征:xj,t

于是,使用km估计的节点j中的生存函数是:

其中,b=2,...,bj,nj,1=nj。

此外,时间前后的关系是:

km估计是单变量分析,忽略用户特征的影响。为了处理用户特征的影响,提出采用cox模型:

其中,h0(t,j)是基线风险函数,xj,i是每个用户的特征向量,wj是相应的终端节点j的参数向量。生存函数是:

其中,h0(t,j)是节点j中的基线累积风险函数。cox模型由两部分组成,基线风险函数和每个用户的指定特征,基线风险函数是指每段时间的基线风险水平。

3、最优化

在gbst方法的迭代过程中,我们提出在前次迭代中的强学习因子(stronglearner)是fm-1(t|x),而损失函数是l(y,fm-1(t|x))。当前迭代的目标是通过最小化当前损失函数l(y,fm(t|x))=l(y,fm-1(t|x))+fm(t|x)为树模型fm(t|x)找到一个弱学习因子。我们使用负二项对数似然函数作为损失函数:

l(y,f)=log(1+exp(-2yf))

其中,如果y∈{-1,1},

可以使用损失函数的负梯度替换当前损失的近似值,然后拟合树。这样,在第m次迭代中的样本i的负梯度:

它就是在第m次迭代中的拟合目标。

在树的成长处理中,我们遍历所有特征的所有有效值,选择合适的特征和值来最小化均方误差。对于特征e和值s,我们可以获得两个组r1和r2:

r1(e,s)={xi|e≤s},r2(e,s)={xi|e>s},其中n1和n2分别是r1和r2中的样本数量。于是,我们可以得到两组的均值:

由此,我们可以得到合适的特征及值:

当树的深度达到某个阈值时,树停止生长。

当我们得到j个终端节点时,我们可以计算出对于每个节点j的最佳拟合值:

其近似值是:

其中,rmj是在第m次迭代时在终端节点j的取样组。

4、精确度

为了测试gbst方法并估计预测的精确度,我们使用一致性指数(c-index),该指数是roc曲线下方面积(auc)的扩展。此外,我们使用auc来比较gbst和其他生存模型之间的表现差异。

4.1gbst的评估:c-index

c-index主要用于计算真值与生存分析中的预测值之间的差异。在c-index中,核心是一致性。例如,相比于其他人,没有违约的具有长生存时间的两个借款人具有高的生存概率,这可以认为与实际结果是一致的,这被称作一致性。c-index的计算步骤如下:

(1)将所有用户配对,总共n·(n-1)/2对,其中n是用户数量。

(2)除去两个用户都不能到达事件(违约)末端的配对,或者用户a相比于用户b具有更乱整的生存时间,但a在观测结束时不违约。该步骤剩下的配对数量记录为mm。

(3)在剩下的配对中,预测结果与实际结果一致的配对数量记为k。

(4)计算c-index=k/mm。

通常,c-index∈[0.5,0.7]表示低的预测准确度,c-index∈(0.7,0.9]表示中等准确度,c-index∈(0.9,1]表示高准确度。

4.2与其他模型的比较:roc曲线中的auc

在机器学习的统计数字中,经常用auc来衡量两类模型(two-classmodel)的表现。对于两类问题,预测模型对于每个用户预测得分s或者概率p。然后,可以选择一个阈值th,当得分s>th时预测结果是正的,而得分s<th,则预测结果是负的。通过这种方法,基于预测结果和实际标签值,可以将用户分为四类:

表1:四种类型的用户

这四类用户的比例取决于阈值th的选择和真正率tpr和假正率fpr:

其中,#tp是tp类型的用户数量,,#fn是fn类型的用户数量,#fp是fp类型的用户数量,#tn是tn类型的用户数量。

当阈值th改变,tpr和fpr可以在图中形成一条曲线,即roc曲线。这样,我们就得到roc的曲线下面积,即auc。

我们将gbst算法用于估计客户在不同时间段的违约概率分布。通过将模型输出的生存曲线和客户每个时间段的真实违约状态进行对比,我们发现该算法可以更精准地预测客户发生借款后1-12期每期的违约概率,因此可以助力于用最小的时间成本进行未来更长期的风险决策。和传统的信用风险评分模型和生存分析模型,gbst算法的整体auc提升了约0.1,同时,在独立测试样本上对比现有方案,90+金额逾期率下降约0.6%。

本领域技术人员可以理解,实现上述实施例的全部或部分步骤被实现为由数据处理设备(包括计算机)执行的程序,即计算机程序。在该计算机程序被执行时,可以实现本发明提供的上述方法。而且,所述的计算机程序可以存储于计算机可读存储介质中,该存储介质可以是磁盘、光盘、rom、ram等可读存储介质,也可以是多个存储介质组成的存储阵列,例如磁盘或磁带存储阵列。所述的存储介质不限于集中式存储,其也可以是分布式存储,例如基于云计算的云存储。

下面描述本发明的装置实施例,该装置可以用于执行本发明的方法实施例。对于本发明装置实施例中描述的细节,应视为对于上述方法实施例的补充;对于在本发明装置实施例中未披露的细节,可以参照上述方法实施例来实现。

图3示出了本发明的基于gbst的金融违约风险预测装置的一个实施例的模块组成图。如图3所示,该装置包括数据获取模块、初始化模块、生长模块和预测模块。

数据获取模块用于获取历史金融用户数据集,根据历史金融用户数据集建立训练数据集。该模块通常还需要包括预处理模块,以对获取的原始数据进行标准化。此外,在建立训练集时,也可以同时建立测试数据集,以便于后续进行效果测试和参数调整。

初始化模块用于基于所述训练数据集初始化gbst生存模型的基础生存树。该模块优选使用log-rank(时序检验)分离规则生长初始化的生存树,该规则可以最大化终端节点之间的差异。并且,可以使用km生成估计方法来估计生存树节点中的生存函数,以及使用cox模型来减小用户特征的影响。

生长模块用于从所述基础生存树开始,利用前一棵生存树预测出的生存概率与真实标签的残差进行优化迭代,以此训练得到后一棵生存树,直到总体损失小于既定的阈值。

生长模块用于继续生长接下来的若干树以最小化负二项对数似然函数,以最优化生存函数,并且在约束下将这些树生长到全尺寸。在此,所述的约束是指树的最大深度和终端节点中违约数量的最小值符合合适的条件。

根据本发明的优选实施方式,可使用损失函数的负梯度替换当前损失的近似值,然后拟合树。以及优选的,遍历所有特征的所有有效值,选择合适的特征和值来最小化均方误差。

预测模块用于对于新金融用户的输入数据,利用最后得到的生存树遍历生成树的结果,输出该用户的生存曲线,根据该生存曲线预测每个时间段的违约风险概率。

该模块相当于对于每个终端结点计算所有用户的生存函数。

本领域技术人员可以理解,上述装置实施例中的各模块可以按照描述分布于装置中,也可以进行相应变化,分布于不同于上述实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

下面描述本发明的电子设备实施例,该电子设备可以视为对于上述本发明的方法和装置实施例的实体形式的实施方式。对于本发明电子设备实施例中描述的细节,应视为对于上述方法或装置实施例的补充;对于在本发明电子设备实施例中未披露的细节,可以参照上述方法或装置实施例来实现。

图4是根据本发明的一种电子设备的示例性实施例的结构框图。图4显示的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,该示例性实施例的电子设备410以通用数据处理设备的形式表现。电子设备410的组件可以包括但不限于:至少一个处理单元411、至少一个存储单元412、连接不同系统组件(包括存储单元412和处理单元411)的总线416、显示单元413等。

其中,所述存储单元412存储有计算机可读程序,其可以是源程序或都只读程序的代码。所述程序可以被处理单元411执行,使得所述处理单元410执行本发明各种实施方式的步骤。例如,所述处理单元411可以执行如图1所示的步骤。

所述存储单元412可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)4121和/或高速缓存存储单元4122,还可以进一步包括只读存储单元(rom)4123。所述存储单元412还可以包括具有一组(至少一个)程序模块4125的程序/实用工具4124,这样的程序模块4125包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线416可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备410也可以与一个或多个外部设备420(例如键盘、显示器、网络设备、蓝牙设备等)通信,使得用户能经由这些外部设备420与该电子设备420交互,和/或使得该电子设备410能与一个或多个其它数据处理设备(例如路由器、调制解调器等等)进行通信。这种通信可以通过输入/输出(i/o)接口414进行,还可以通过网络适配器415与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)进行。网络适配器415可以通过总线416与电子设备420的其它模块通信。应当明白,尽管图中未示出,电子设备410中可使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

图5是本发明的一个计算机可读介质实施例的示意图。如图5所示,所述计算机程序可以存储于一个或多个计算机可读介质上。计算机可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。当所述计算机程序被一个或多个数据处理设备执行时,使得该计算机可读介质能够实现本发明的上述方法,。

通过以上的实施方式的描述,本领域的技术人员易于理解,本发明描述的示例性实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读的存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台数据处理设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明的上述方法。

所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

综上所述,本发明可以执行计算机程序的方法、装置、电子设备或计算机可读介质来实现。可以在实践中使用微处理器或者数字信号处理器(dsp)等通用数据处理设备来实现本发明的一些或者全部功能。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,本发明不与任何特定计算机、虚拟装置或者电子设备固有相关,各种通用装置也可以实现本发明。以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1