具体实施方式
如前所述,早先的数据模型只能根据所存储的历史数据来提示风险,其并无对历史数据进行分析推理的能力。这种困境在机器学习模型出现之后,有了明显改观。机器学习专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习模型的出现,使得数据模型能够通过学习训练不断进行重构以改善自身的性能。
但在一些特定的应用场景中,传统的机器学习模型实际上并不能很好地与应用场景相适应。例如,传统信贷风险数据模型就是一种机器学习模型的应用场景,它以预测客户逾期概率为目标,其中特征是客户在不同业务上的表现,标签则是用户在支用后一段时间内是否逾期。所述信贷风险数据模型通常以二分类算法来实现。二分类算法也称为逻辑回归(Logistic Regression)模型,它是机器学习中广泛采用的一个很简单且高效的概率型非线性回归算法模型,它是二分类结果与多个特征因素之间关系的一种分析方法。逻辑回归函数最终计算求得的是测试样本的概率值,也即根据样本预测出的用户逾期的概率(风险评分)。
而所述信贷风险模型在使用过程中并非一成不变的,也需要定期或在特定情况下进行重构更新。例如在收集到新的数据样本,增加新的特征等情况下,一般都需要训练(重构)新的模型以获得更好的预测性能。
如图1(a)所示,其示出了一种传统的信贷风险数据模型训练(重构)流程。当达到规定的时间周期(例如每天、每周、每月)或者发生特定的情况,例如信贷风险评估***收集到新的数据样本和/或增加了新的特征,就开始所述重构流程。所述流程包括:首先,向旧信贷风险模型输入新的数据样本和/或新的特征110,基于所述新的数据和/或新的特征训练新的数据模型120,以及产生新的信贷数据模型130。这种利用新样本和/或新特征对信贷风险数据模型进行训练重构以生成新的信贷风险数据模型的整个流程是数据模型领域的基本常识,因此,在此不再累述。
然而,从信贷风险数据模型本身的特点来看,其要求对用户的风险预测应该具有一定程度的稳定性,即要求避免在重构的新模型对用户的风险预测与原模型的风险预测之间出现不必要且幅度很大的变化,从而保证用户的授信额度/利率等相对稳定。例如,举例来说,在信贷风险数据模型中,并不希望出现下述问题:同一样本值或样本值的小范围变化(例如工资从5000元变化为4990元)在老信贷风险数据模型中原本预测为例如0.12的低风险评分的输出,但在重构后的新信贷风险数据模型中却变成了例如0.87的高风险评分输出。导致这种结构情况的出现的原因可能是:例如这10元的小幅变化正好跨越了风险判断阈值,导致评分从低风险范围掉落到高风险范围)。这种不稳定性会导致风险模型的预测结果与预期目标的巨大偏差。然而,对于诸如信贷风险数据模型之类的应用场景来说,不管模型如何被重构更新,保证新老模型之间的预测分数的稳定性都是尤为重要的一环。
而如图1(a)所示的传统的机器学习模型在模型训练时并不会考虑到信贷风险数据模型场景的“预测分数的稳定性”这一特殊要求。
在现有技术中,所述偏差通常是通过操作员的人工筛查调整来校正。因此,传统的信贷风险数据模型通常保证评分稳定性的方式都是在模型重构后再根据相应的测算结果进行人工调整。但显然,随着要处理的数据量的日益扩大,出现所述偏差的概率也越来越大,光靠人工筛查显然是低效且易产生差错的。
同样,目前常用的信贷风险数据模型在重构后保证其评分稳定性的方案是在重构后对分数通过测算进行人工的调整,即对部分分数变化较小,但会引起额度/利率波动的数据,人工地把新模型的预测分数改成与老模型的分数尽量接近。
具体而言,在图1(b)示出传统的经重构的新信贷风险数据模型的带人工调整的风险评分计算流程。首先,在步骤140从各个数据源接收输入的与用户的风险评分有关的数据。随后,在步骤150,使用重构的新信贷风险数据模型基于所输入的数据计算风险评分。但如上所述,为了保证评分的稳定性,所述风险评分需要经过人工调整步骤160进行调整以避免风险预测结果出现大的波动。在经过所述人工调整之后,在步骤170才生成最终的信贷风险评分以反馈给用户。显然,这样的人工调整机制与建模本身无关,是一种建模后的人工策略,因此,效率低下且效果其实并不理想。
这种问题不仅存在于信贷风险应用场景,实际上还存在很多其他应用场景中,例如查杀病毒、过滤垃圾邮件和短信、反欺诈、疾病诊断以及其他数据风险模型等等。应该理解,尽管在本公开的各实施例中都是以信贷风险数据模型作为示例进行说明,但本公开的方案并不局限于此,而是适用于如上所述的各种应用场景。在其中,这些应用场景都不太希望有部分样本的少量变化带给新老模型输出的评分结果大幅波动的问题的存在。而现有的机器学习模型却缺乏解决这些波动问题的有效手段。
如先前所述,在利用现有的数据风险模型(例如二分类数据模型)进行风险评估时,并不存在一种成熟的机制来保证预测分数的稳定性。但所述稳定性对于某些应用场景来说是非常重要的。为了解决传统风险数据模型中新老模型之间存在的评分偏差问题,本公开提出一种基于约束项(例如正则约束项)来提高数据风险模型在模型重构过程中的预测评分稳定性的优化方案。
在传统的数据风险模型(例如使用逻辑回归之类的二分类算法的信贷风险模型等等)的训练重构过程中,通常会使用一种损失函数来衡量新模型的预测能力的好坏(即预测值是否达到预期目标)。而在本公开的方案中,在使用所述损失函数的同时还引入一个能约束分数变化程度的约束项,并且可以通过调整该约束项的权重来调节所评估的模型预测能力使得其尽可能达到期望的优化目标评分,进而实现在整体性能可接受的情况下,输出的评分尽可能稳定的目标。
具体而言,损失函数也称为代价函数,其作用是衡量模型模型预测的好坏,也即用来表现预测结果与实际数据的差距程度。在应用中,损失函数通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。例如在统计学和机器学习中被用于模型的参数估计,在宏观经济学中被用于风险管理和决策,在控制理论中被应用于最优控制理论。在传统风险数据模型的重构中也使用了所述损失函数来评估所述新的数据模型的预测准确度,并基于所述评估来确定重构是否完成。换句话说,在训练重构一个机器学习模型时,其最终目标就是找到使得损失函数达到极小值的点。当找到这样的一个点后,所述训练重构就算最终完成。但是,如上所述,所述损失函数主要考虑的是预测结果与实际数据之间的差距程度,因此,基于传统的损失函数来重构数据模型的方案并不考虑同样的样本在新老数据模型之间的预测结果的偏差大小,因此,无法解决评分稳定性的问题。
而为了在损失函数的计算评估中引入稳定性因素,在本公开的方案中通过正则化来在损失函数上加上了稳定性约束,这样的约束可以解释为先验知识(正则化参数等价于对参数引入先验分布)。约束有引导作用,在优化损失函数的时候倾向于选择满足约束的梯度减少的方向,使最终的解倾向于符合先验知识。所述正则化在算法中是通过加入(正则)约束项来实现的,正则约束项是指加入到待优化的目标函数中的一个项,其目的在于对模型参数等进行一定目的的约束。通过在传统的数据风险模型使用损失函数评估新模型的预测准确度的过程中,另外引入一个能约束分数变化程度的正则约束项,就能通过调整该正则约束项与损失函数在评估模型预测能力的计算中的权重,来实现在整体性能可接受的情况下,输出的评分尽可能稳定的目标。
具体而言,在本公开中,提供了一种新老模型优化算法。在其中,所述优化算法通过为传统的损失函数增加一个约束项,以使得所述新、老模型之间的损失函数的评估结果满足目标优化评分(预期目标)。这样,当该约束项被作为一个补偿调整参数应用于新模型之后,所述约束项可以对新模型的评分进行补偿,使得其变化幅度保持稳定。换句话说,该约束项可使得新模型对样本的预测评分与老模型对同一样本的预测评分尽可能接近。并且,所述约束项具有权重α,通过调整该α值的大小可以调节约束项与损失函数在目标优化评分计算中所占的权重。例如,如果数据风险模型使用的是二分类算法,则所述优化算法的具体示例可以如下所示:
在该公式(1)中,Obj表示模型的目标优化评分,而为二分类模型的传统损失函数,该损失函数可以是传统二分类模型中常用的损失函数,用于。举例而言,假设,令数据的真实值为Y,而模型的预测值为f(x),则损失函数的形式可以包括绝对损失函数:平方损失函数:/>等等。这些只是常规的损失函数的简单示例。而众所周知,随着使用的数据模型的不同,用于评估该模型预测准确性的损失函数也可以随之变化。并且本公开的改进也并不在于损失函数,所以,在公式1中以/>作为损失函数的通用示例,而没有对其进行具体限定。本领域技术人员可以根据模型的需求使用相应的损失函数。
而项就是新老模型评分的正则约束项。当假设训练数据D一共有n个样本时,其中f为新数据风险模型,xi表示训练数据D中的第i个样本,f(xi)则是该新数据风险模型对训练数据D中的第i个样本xi的预测评分(即在步骤320中获得的新风险评分),为老数据风险模型对训练数据D的第i个样本xixi的预测评分(即在步骤330中获得的老风险评分),正则约束项通过最小化所有样本在新模型和老模型上评分的差来使得分数尽可能稳定。另外,提供了α作为正则约束项的权重,/>通过调整α的大小,可以在保证模型预测性能的情况下,使样本在两个模型上的评分差异尽可能少。
上述公式(1)是针对二分类算法。而在另一个实施例中,本公开的方案也可以扩展到多分类问题中。举例来说,在多分类情况下,假设n个样本有k个类别,其中n和k为≥1的整数,老模型对样本xi(训练数据D)预测为类别j的预测值为(老风险评分),新模型f对该样本xi的预测值为f(xi,j)(新风险评分),则f(xi,j)针对多分类算法的数据模型的优化算法如下所示:
在公式(2)中,可以是各种常规的多分类算法的损失函数,/>项就是新老模型评分的约束项(正则约束项)。而α为正则约束项的权重,/>通过调整α的大小,可以在保证模型预测性能的情况下,使样本在两个模型上的评分差异尽可能少。公式(2)的原理与公式(1)基本相同,而多分类算法的损失函数也是数据模型领域常规使用的各种损失函数。因此,不再对其进行详细描述。
基于上述优化算法,本公开提供了一种新模型的训练方法,所述方法大体上可以包括:获取训练样本集中的多条样本;分别获取所述多条样本中的每一条样本在老模型上的老模型评分;分别将所述多条样本中的每一条样本输入新模型得到对应的新模型评分;确定新模型的损失函数中与老模型相关的约束项,包括:
基于所述老模型评分和新模型评分的差得到所述约束项;
根据所述损失函数中的所述约束项,更新新模型参数。
这是本公开的方案的基本流程,通过利用损失函数中的约束项作为新模型的调整参数来使得新模型所生成的评分尽可能保持稳定。基于上述训练方案,在图2中公开了根据本公开的一实施例的风险评分***200的结构框图。如图2所示,所述风险评分***200包括了训练数据输入模块202,用于接收来自各个源的训练数据D。所述训练数据D可以包括新的数据样本,也可以包括新的特征。所述训练数据D被分别提供给新模型风险评分计算模块210和老模型风险评分计算模块220。新模型风险评分计算模块210使用所述训练数据D来计算出新模型的新风险评分并将其提供给所述新老模型优化算法模块230。同时,在老模型风险评分计算模块220处,使用老数据风险模型通过采用例如二分类算法之类的传统分类算法基于所述训练数据D计算出一个老风险评分,并将所述老风险评分传送给新老模型优化算法模块230。当然,如果所述训练数据D中的某个样本的评分先前已经在老数据风险模型中计算过并被存储,则可以从存储器中直接检索该样本的老风险评分,无需再次重新计算。其中,所述老模型风险评分计算模块220使用的是未重构之前的老分类算法,而所述新模型风险评分计算模块210则使用的是在老分类算法的基础上经过重构的新分类算法,所述新模型的重构过程与图1(a)所示的传统模型训练(重构)流程相一致。
与传统的模型训练(重构)之后的人工调整不同的是,本公开的风险评分***200还包括了新老模型优化算法模块230。当所述新老模型优化算法模块230分别接收到来自所述新模型风险评分计算模块210的新风险评分和来自所述老模型风险评分计算模块220或存储器的老风险评分之后,就使用如前所述的优化算法(例如公式1或2)来计算新模型的目标优化评分。所述优化算法通过在传统的损失函数的基础上增加了一个用于约束评分分数在新老数据风险模型间的变化幅度的正则约束项,使得两者之间的评分尽可能接近。所述优化算法将在结合图3的流程进一步详述。
在通过优化算法计算出新数据风险模型的目标优化评分之后,所述新老模型优化算法模块230将所述目标优化评分提供给性能与稳定性验证模块240。在所述性能与稳定性验证模块240处,可以通过验证新数据风险模型的性能/稳定性是否符合预期目标来确定所述正则约束项的最终形式。所述性能验证可以基于风险评分***200的整体要求来进行,也即根据具体业务的需求来检测所述风险评分的性能。例如,如果新数据风险模型的目标优化评分是准确的则可以认为当前的新数据风险模型的性能符合预期。而稳定性验证则可以通过将训练数据D在所述新数据风险模型中的风险评分与在所述老数据风险模型中的风险评分进行比较来验证评分的稳定性是否符合预期目标。如果新数据风险模型的目标优化评分在性能验证中被确定是不准确的,或者确定新数据风险模型的稳定性并不符合预期,则可以利用正则约束项模块250对所述新老模型优化算法模块230中的优化算法中的正则约束项进行调整,并再次基于所述调整后的优化算法在新老模型优化算法模块230中重新计算出新数据风险模型的新目标优化评分。随后,再由性能与稳定性验证模块240再次执行上述性能/稳定性验证以评估新数据风险模型的性能/稳定性是否满足预定目标,如果还是不满足则再次通过正则约束项模块250对正则约束项进行进一步调整后继续重复上述优化计算和验证步骤(即迭代训练),直至新的数据风险模型的性能/稳定性满足预定目标,这时,经调整后的所述正则约束项可以被作为一个调整参数被应用于新数据风险模型。之后,通过新模型输出模块260输出经重构的包含正则约束项的新数据风险模型。这样,通过为新的数据风险模型的评分结果施加该正则约束项进行约束,使得所述新模型评分的变化幅度被约束在稳定的范围内。至此,一个符合预定稳定性目标的新数据风险模型在无需人工参与的情况就被重构完成。
可以理解的是所述风险评分***200可以由各种类型的计算设备来实现,例如,个人计算机、服务器、笔记本、上网本等等以及其他具有一定运算和编程能力的计算设备。而所述风险评分***200中的各种模块则可以通过所述计算设备的软件或利用计算设备的可编程的硬件和/或固件等来实现,而并不一定要是独立的实体部件。并且,本公开中的这些模块是示意性的,它们中的全部或一部分的功能可以进行组合或拆分,并不一定需要如图进行具体划分。
在根据图2描述了根据本公开的一实施例的风险评分***200的基本结构之后,再结合图3来描述根据本公开的一实施例的用于提高数据风险模型评分稳定性的方法的流程。在该实施例中,还是以信贷风险模型作为数据风险模型的一个示例来进行描述,但如上所述,所述数据风险模型并不局限于此。例如涉及查杀病毒、过滤垃圾邮件和短信、反欺诈、疾病诊断等等各个领域的风险数据模型都能利用本公开所述的方案。
首先,在步骤310,风险评分***200从各个数据源接收用于重构数据风险模型所使用的训练数据D。所述训练数据D可以是新收集到的数据样本,和/或增加的新的模型特征。随后,将所接收的训练数据D分别输入到新模型风险评分计算模块210和老模型风险评分计算模块220中。
在步骤320,基于所述训练数据D,使用新数据风险模型计算新数据风险模型的新风险评分。所述新数据风险模型可以使用如图1(a)所示的传统的信贷风险模型训练(重构)流程来重构,在此不再详述。如前所述,这种新数据风险模型缺乏评分的稳定性,因此,需要进一步的处理。通过将训练数据D输入所述新数据风险模型可以计算出相应的新风险评分。随后,将新数据风险模型的新风险评分提供给新老模型优化算法模块230。
同样,在步骤330,基于所述训练数据D,使用老数据风险模型来计算老数据风险模型220的老风险评分。当然,如前所述,如果所述训练数据D中的某个样本的评分先前已经在老数据风险模型中计算过并被存储,则可以从存储器中直接检索该样本的老风险评分,无需再次重新计算。随后,将该老数据风险模型的老风险评分也提供给新老模型优化算法模块230。其中,所述老数据风险模型的老风险评分是老数据风险模型通过采用例如二分类算法之类的传统分类算法计算出的结果。
换句话说,所述老模型风险评分计算模块220使用的是未重构之前的老分类算法,而所述新模型风险评分计算模块210则使用的是在老分类算法基础上经过重构的新分类算法。
具体而言,在信贷风险模型中,训练数据D可能是姓名、年龄、工资、工作单位、婚姻状况、个人信用、财务状况等等与个人有关的数据。而风险评分则是取值范围在0-1之间的评分,例如0.12可以表示该人的逾期风险较低,而0.87则表示该人的逾期风险较高。应该理解,上述关于训练数据D和取值范围的描述仅仅是示例性的。并不是要局限于此。
同时,应该理解,所述步骤320和330可以同时执行,或者先后执行,并没有严格的顺序要求。但只有当步骤320和330都完成之后,所述流程才进入下一步骤340。
在接收到来自新模型风险评分计算模块210的新风险评分和来自老模型风险评分计算模块220的老风险评分之后,在步骤340,将所述新风险评分和所述老风险评分代入到新老模型优化算法模块230的优化算法中来计算目标优化评分,例如可根据上述公式(1)或(2)来计算目标优化评分。在根据公式(1)计算出新数据风险模型的目标优化评分之后,在步骤350,通过验证新数据风险模型的性能/稳定性是否符合预期来确定所述正则约束项的最终形式(表达式)。性能验证可以根据具体业务的需求来检测所述风险评分的准确性,如果新数据风险模型的目标优化评分是准确的,则可以认为当前的新数据风险模型的优化算法的性能符合预期,否则就需要进一步修改正则约束项的权重α。同样,通过利用正则约束项将训练数据D在所述新数据风险模型中的新风险评分与在所述老数据风险模型中的老风险评分进行比较来验证稳定性是否符合预期。例如,如果这两个风险评分的差值在预期阈值内(例如1%),则可以确定新数据风险模型的目标优化评分的稳定性符合预期,否则,也需要进一步修改约束项α。
如上所述,如果所述性能验证/稳定性验证不符合预期,则执行步骤360。在该步骤360中,对优化算法(公式1或2)中的正则约束项的权重α进行调整,例如,假设在0-1的取值范围中对α进行调整,如果在步骤350中发现稳定性远远未达到期望目标,则可以增加正则约束项的权重,即使得α更加趋近于1,以使得新模型评分和旧模型评分更加接近。
在调整完毕后,流程返回到步骤340重新执行所述经调整后的优化算法。步骤340、350和360可以如此不停循环执行,直至经不断调整的优化算法所计算出的目标优化评分能够使得性能/稳定性验证符合预期为止。
如果所述性能验证/稳定性验证符合预期,则证明当前的优化算法中的正则约束项可以为新数据风险模型提供预期的性能/稳定性,因此,在步骤370,就生成具有该正则约束项的调整参数的经优化的新数据风险模型。
在另一个实施例中,如果在步骤360处经过了足够多次数的权重调整后还是无法使得经调整的优化算法满足预期的性能验证/稳定性要求,则可以设置在执行步骤360中的权重调整步骤达预定次数之后,停止当前流程,并返回到步骤310中以对训练数据D进行一定程度的调整,例如加入新的数据或特征,或者删除某些数据或特征,以构成一个新的训练数据D。随后,再执行如图3中所述的后续优化流程,以再次尝试生成优化的新数据风险模型。
但本公开的方案并不局限于信贷风险预测,实际上任何需要输出稳定的模型都能采用本公开的方案来实现。例如,在其他实施例中,本公开的模型优化算法还可以被应用于其他很多数据风险模型应用场景中,例如查杀病毒、过滤垃圾邮件和短信、反欺诈、疾病诊断以及其他数据风险模型等等。
综上所述,本公开提出一种基于新老模型分数约束项提高数据风险模型评分稳定性的方案,通过在传统的例如信贷模型(如逻辑回归等)的损失函数中,引入一个衡量约束分数在新老模型间变化幅度的正则约束项,使得新模型对样本的预测评分与老模型的预测评分尽可能接近。具体而言,通过调整该正则约束项以调节所述正则约束项与所述损失函数在风险评分中所占的比重,可以在保证性能符合一定指标的同时尽量使得新老模型的分数相差更小。进而达到在整体性能可接受的情况下,输出的评分尽可能稳定的目标。
上述对本公开特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。而且,相关领域的技术人员将领会,在不偏离如所附权利要求书所定义的本公开的精神和范围的情况下,所述实施例可以在形式和细节方面进行各种修改。因此,此处所公开的本公开的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。