小可分期贷款怎么样,小可分期开通会员

  

  I.风控模型介绍   

  

  在上一篇文章中,我们实现了规则引擎和决策流程,基本完成了风控决策引擎系统的原型。请看相关文章:   

  

  (1)规则引擎的实现   

  

  (二)实现大数据风险控制的决策流程。通常情况下,根据规则有效识别风险用户,并拒绝或提高访问门槛。例如,判断用户信用卡历史逾期5次且累计逾期金额5000元,用户多头债务数大于5。这些用户面临更大的风险,应该拒绝或进一步检查。   

  

  但是使用规则策略进行风险控制有一定的局限性,依赖于人的经验和一维特性,决策结果单一。建立机器学习模型,预测用户未来的逾期风险(概率),对用户进行分级,可以更加灵活地给出不同的理财产品方案,不同的额度、费率、期限方案,进一步提高风险控制能力。   

  

  现在的大数据风控大多采用规则、策略、模型、算法的组合。本文主要分析该模型及其相关的系统工程实现。   

  

  II.机器学习与模型   

  

  1.概念介绍   

  

  机器学习主要是基于已有的历史数据,挖掘共同特征,利用概率统计的方法和算法,形成机器能够识别的规律模式(模型),并利用这种模式(模型)对未知数据进行预测。   

  

     

  

  工作模式的重要前提:   

  

  具有相同特征的数据具有相同的结果;历史数据和未来数据遵循同样的规律。   

  

  2.模型建立   

  

  模特训练,又称学习或试衣合体。这里有一个核心公式:   

  

  Y=f(X)中学常用的函数公式,一般是用已知的X找y或者用已知的y找X,但是大学学了导数和微积分就变成了已知的X,用y找f,机器学习也是。通过导入x和y数据,我们可以学习潜在的统计规律,然后找到决策函数f。   

  

  f=X-y2.1 y定义   

  

  Y也叫Y标,因变量。首先要根据业务场景来理解和确定它的含义。在信贷风险控制申请过程中,最受关注的指标‘用户是否逾期’将被选为负样本。进一步,根据业务场景是单相产品还是分期产品,以及还款期限的长短,比如单相14天的产品,可以选择逾期3天作为负样本来定义Y标签。   

  

  根据训练数据是否有历史表现(Y标签),机器学习可以分为有监督学习(已知样本逾期状态)、无监督学习(无样本历史结果)、半监督学习(有的有有的无),信用场景更多的是监督学习。   

  

  2.2 X定义   

  

  自变量x是一个多维向量,是我们的特征变量。从一堆结构化和非结构化的数据中探索和挖掘有价值的特征变量通常被称为特征工程。从数据探索和选择、数据清洗、特征处理和转换,到特征选择和评估,特征工程是建模中最重要和最耗时(也是最枯燥)的工作。   

  

  风控场景下可以挖掘的数据主要有:个人基本信息、历史表现、征信和长期表现、行为管理记录、抓取授权信息、三方机构的数据API服务。数据和特征工程的质量在很大程度上决定了模型的质量。   

  

  下一步是从数据中挖掘特征,首先清理数据,然后处理和计算特征,并根据需要填充缺失值。变量分为连续变量(18、19、20岁.)和离散变量(大专、本科、研究生)。离线变量也可以转换成连续的数值变量,如一热编码、woe编码等方法。   

  

  最后可以根据iv、缺失率、相关性、稳定性进行特征选择,也可以直接带入模型由模型进行筛选。   

  

  2.3 样本选择   

  

  样本的选取主要取决于样本量。如果创业初期样本量较小,可以全部选择,甚至可以增加一些样本来填充当前场景。样本量可以欠采样,先选取最新数据,选取绩效期内的样本。   

  

  在确定样本数据集之后,数据s   

  

  当预测结果是离散的,比如通过或者拒绝,这个建模任务就叫做分类归类(只有两种结果叫做二分类,多种叫做多分类)。如果预测了用户可能的逾期风险概率值,这个任务就叫回归回归,分类和回归问题可以相互转换。无监督学习中也有聚类任务。   

  

  有更多的模型算法可供选择,如线性回归、logistic回归、朴素贝叶斯、支持向量机、决策树、集成学习算法bagging、stacking、boosting(典型代表GBDT、Adboost、Xgboost)。目前,2.4 建模算法因其优异的性能被认为是风力控制领域最主流的建模算法。此外,逻辑回归因其良好的可解释性而被广泛应用。   

>
有了样本数据,也定义了X和y,对历史数据计算加工出的X和y作为数据集,然后选择模型算法,进行训练,即可得到相应的模型。算法和模型训练一般有封装好的工具可使用,python作为机器学习领域重要的语言,有非常多的包可使用,如scikit-learn库,TensorFlow库等。

  

使用sklearn进行模型训练:

  

from sklearn.linear_model import LogisticRegressionfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.svm import SVC# Logistic Regression Classifierclassifier = LogisticRegression()classifier.fit(X,y)# Decision Tree Classifierclassifier = DecisionTreeClassifier()classifier.fit(X,y)# Support Vector Machine Classifierclassifier = SVC()classifier.fit(X,y)不同算法得到的模型函数不一样:

  

  

  

(图片来自网络)

  

产出模型的本质是模型算法以及相应的超参数。

  


  

2.5 模型评估

  

模型的好坏一般看拟合程度,根据拟合程度不同分为过拟合 overfit 或 欠拟合 underfit。
过拟合可能选择了复杂的模型算法或入模特征过多导致模型对训练数据预测非常准,但对新数据预测效果差,泛化能力太差。通俗比喻:模型训练数据只有白猫,当预测时来了只黑猫,就不能识别其是否属于“猫”,模型将“白色”作为权重较大的入模特征。

  

  

(图片来自网络)

  

欠拟合刚好相反,没有提取出关键特征,算法“简单”导致预测能力不足。

  

模型性能度量指标:混淆矩阵及精准率、召回率,ROC曲线、KS曲线以及稳定性指标PSI。根据模型在测试集和OOT样本的表现评估,来决定模型是否可用,实际模型部署后还要经过一个陪跑的过程才能上线决策。

  


  

2.6总结建模流程

  

  

3.机器学习平台

  

将整个机器学习流程工程化实现,通过可视化方式简化建模过程,封装python等代码开发,建立起的平台叫机器学习平台,机器学习平台一般还具备AutoML自动建模的能力。

  

  

(图片来自阿里PAI平台)

  

一些商业化平台产品比较知名的如阿里云PAI,谷歌Cloud AutoML,百度的飞桨更偏向深度学习领域。关于机器学习平台由于目前还处于工程实践中,后面有机会会分享一些实践出来。

  


  

III.模型部署与模型引擎

  

现代建模方法,一般包括Spark、R、Python建模工具。而由于python强大的机器学习库支持,python建模统治建模领域的(大)半壁江山,这里主要介绍python模型部署。

  

模型训练完,会将模型持久化方便之后直接使用而不用每次都先训练。模型持久化有两种方式pickle和pmml。

  

pickle是python特有的对象序列化格式,其生成的文件可以保存,发布到生产服务器,由python环境解析执行。pmml是将模型转化为XML格式的文件,这样python训练出的模型其他语言如java可以解析执行。生成pickle模型文件

  

使用python自带pickle包即可轻松实现:

  

from sklearn import svmfrom sklearn import datasets#training modelclf = svm.SVC()X, y= datasets.load_iris(return_X_y=True)clf.fit(X, y)import pickle#persistence to pickle files = pickle.dumps(clf)#load pickle fileclf2 = pickle.loads(s)clf2.predict(X<0:1>)一般常用scikit-learn建模,更推荐使用joblib包来进行dump和load。

  

from joblib import dump, loaddump(clf, 'filename.joblib')clf = load('filename.joblib')生成pmml模型文件

  

pmml格式对一些深度学习模型支持有限,但像scikit-learn常规建模基本能较好支持,所以很多工程会使用python训练模型,然后导出pmml使用java部署模型(java性能更好些)。

  

使用sklearn2pmml:

  

from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn import treefrom sklearn2pmml import PMMLPipeline, sklearn2pmml#dataframeiris = load_iris()train, test, train_labels, test_labels = train_test_split(iris.data, iris.target, test_size=0.2, random_state=0)#model trainingpipeline = PMMLPipeline(< ("classifier", tree.DecisionTreeClassifier(random_state=9))>)pipeline.fit(train, train_labels)#dump pmml filesklearn2pmml(pipeline, 'my.pmml', with_repr=True, debug=True)java代码中需要引入jar包:jpmml-sklearn-executable

  

参考:https://github.com/jpmml/jpmml-sklearn

  


  

模型引擎

  

模型部署后一般要提供API服务供上游系统调用,来为业务做决策,这种实时模型预测的系统叫模型引擎。其架构如下:

  

  

模型工程闭环

  

整个模型工程包括离线训练和在线预测两部分,离线训练出的模型通过文件导出,发布到模型引擎中,提供模型服务,而实时模型引擎计算出的结果和特征数据又会作为重要的样本数据用于离线分析和离线回溯,形成一个闭环,整体架构如下:

  

  

这里通过离线训练建模,然后线上部署实施,一般周期流程较长,几周到月不等。

  


离线模型服务和实时模型

  

业务场景不同,也有其他模型架构,一种就是离线训练,离线评估结果,然后再异步推送给业务来做决策,这种适用于对时效性要求不高且数据处理计算量大的场景。

  

另一种是通过flink等实时计算引擎获取实时数据,在线训练模型并部署决策,但这种实时模型对数据和系统要求较高,且稳定性有争议。

  


  

IV.模型引擎与决策引擎打通

  

有了模型后,风控能力进一步加强,风控系统组合也更加复杂。它是如何与决策引擎结合的呢?

  

将模型作为特征,决策引擎调用特征引擎,特征引擎调用模型引擎。也可将模型执行嵌入到特征引擎中,但从单一职责角度不推荐。将模型作为特殊的特征,决策引擎根据标识识别调用特征引擎还是调用模型引擎。之前决策引擎架构不变,在特征获取时进行代码处理。决策引擎增加一个网络请求网关节点类型,在决策流中配置,执行决策流解析可获取实时请求模型引擎的能力。决策引擎一般结合模型陪跑以及ABTest进一步观察和评估模型效果后才会正式启用决策。决策引擎拿到模型结果后,可以通过决策矩阵、决策树以及金融产品方案来做进一步风控决策。关于这部分工程实践将在下一篇中展开。

  


  

模型领域包罗万象,什么迁移学习,深度学习,知识图谱,社区算法等内容均未覆盖,文中如有纰漏也欢迎指出,欢迎关注并转发我的公众号。

相关文章