I.风控模型介绍

在之前的文章中,我们实现了规则引擎和决策流,基本完成了风控决策引擎系统的雏形。相关文章请看:

大数据风控领域通常根据规则对风险用户进行有效识别并拒绝准入或提高准入门槛,如判断用户信用卡历史逾期记录>5次且逾期总金额>5000元,用户多头共债数大于5,这部分用户风险较大,应该拒绝或进一步人审处理。

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

今天的大数据风控更多采用了规则策略+模型算法结合的方式,本文主要分析模型及其相关系统工程实现。

II.机器学习与模型

1.概念介绍

机器学习主要是依据已有历史数据,挖掘共同特征,用概率统计方法和算法形成机器可识别的规律模式(模型),并用该模式(模型)来预测未知数据。

模型work的重要前提:具有相同特征的数据具有相同的结果;

历史的数据与未来的数据遵循同样的规律。

2.模型建立

模型的训练,又称学习或拟合fit。这里介绍一个核心公式:

y = f (X)

中学常用的函数公式,一般已知X求y或已知y求X,大学学了导数、微积分就变成了已知X和y求f,机器学习也是如此,通过将X和y数据传入,学习其中潜在的统计学规律,进而求出决策函数f。

f = X->y

2.1 y定义

y 也叫Y标签,因变量。首先我们要根据业务场景理解确定其含义。风控信贷申请流程中,最关注的指标"用户是否逾期",所以会选择用户逾期作为负样本。进一步根据业务场景是单期产品还是分期产品,还款周期长度是多少,如单期14天产品可选择逾期3天作为负样本来定义y标签。

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

2.2 X定义

X 自变量,是多维的向量,也就是我们的特征变量。从一堆结构化+非结构化的数据中,探索并挖掘出有价值的特征变量,这就是常说的特征工程。从数据的探索选择,到数据清洗,特征处理转化,到特征选择评估,特征工程是建模最重要且耗时(且枯燥)的工作。

信贷风控场景中可挖掘数据主要包括:个人基本信息,历史表现,征信及多头表现,行为打点记录,抓取授权信息,以及三方机构数据API服务。数据的质量和特征工程很大程度决定了模型的好坏。

下一步从数据中挖掘出特征,先进行数据清洗,然后加工计算出特征,并对缺失值进行必要的填充。特征变量分为连续型变量(年龄18,19,20...)和离散型变量(学历大专、本科、研究生)。离线型变量也可转为连续数值型,如one-hot编码,woe编码等方法。

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

2.3 样本选择

样本的选择主要看样本量大小,业务初期样本量小可全部选择,甚至加入一些非当前场景下样本填充。样本量大可欠采样处理,优先选择最新数据,选择表现期的样本。

确定样本数据集后,可将数据集分为训练集train,测试集test和时间外样本OOT,先通过训练集进行模型训练,测试集进行模型性能测试,最后通过OOT样本进一步评估模型在最新数据表现。

2.4 建模算法

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

可选择的模型算法就更多了,常见的有线性回归、逻辑回归、朴素贝叶斯、支持向量机、决策树,以及集成学习算法bagging,stacking,boosting(典型代表GBDT、Adboost、Xgboost)。目前XGBoost由于其优异表现算是风控领域最主流的建模算法了,此外逻辑回归由于良好的可解释性也有广泛应用。

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

使用sklearn进行模型训练:

from sklearn.linear_model import LogisticRegression

from sklearn.tree import DecisionTreeClassifier

from sklearn.svm import SVC

# Logistic Regression Classifier

classifier = LogisticRegression()

classifier.fit(X,y)

# Decision Tree Classifier

classifier = DecisionTreeClassifier()

classifier.fit(X,y)

# Support Vector Machine Classifier

classifier = SVC()

classifier.fit(X,y)

不同算法得到的模型函数不一样:

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

2.5 模型评估

模型的好坏一般看拟合程度,根据拟合程度不同分为过拟合 overfit 或 欠拟合 underfit。

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

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

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

2.6总结建模流程

3.机器学习平台

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

一些商业化平台产品比较知名的如阿里云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 svm

from sklearn import datasets

#training model

clf = svm.SVC()

X, y= datasets.load_iris(return_X_y=True)

clf.fit(X, y)

import pickle

#persistence to pickle file

s = pickle.dumps(clf)

#load pickle file

clf2 = pickle.loads(s)

clf2.predict(X[0:1])

一般常用scikit-learn建模,更推荐使用joblib包来进行dump和load。

from joblib import dump, load

dump(clf, 'filename.joblib')

clf = load('filename.joblib')

生成pmml模型文件

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

使用sklearn2pmml:

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn import tree

from sklearn2pmml import PMMLPipeline, sklearn2pmml

#dataframe

iris = load_iris()

train, test, train_labels, test_labels = train_test_split(iris.data, iris.target, test_size=0.2, random_state=0)

#model training

pipeline = PMMLPipeline([

("classifier", tree.DecisionTreeClassifier(random_state=9))])

pipeline.fit(train, train_labels)

#dump pmml file

sklearn2pmml(pipeline, 'my.pmml', with_repr=True, debug=True)

java代码中需要引入jar包:jpmml-sklearn-executable

模型引擎

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

模型工程闭环

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

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

离线模型服务和实时模型

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

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

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

有了模型后,风控能力进一步加强,风控系统组合也更加复杂。它是如何与决策引擎结合的呢?将模型作为特征,决策引擎调用特征引擎,特征引擎调用模型引擎。也可将模型执行嵌入到特征引擎中,但从单一职责角度不推荐。

将模型作为特殊的特征,决策引擎根据标识识别调用特征引擎还是调用模型引擎。之前决策引擎架构不变,在特征获取时进行代码处理。

决策引擎增加一个网络请求网关节点类型,在决策流中配置,执行决策流解析可获取实时请求模型引擎的能力。

决策引擎一般结合模型陪跑以及ABTest进一步观察和评估模型效果后才会正式启用决策。决策引擎拿到模型结果后,可以通过决策矩阵、决策树以及金融产品方案来做进一步风控决策。关于这部分工程实践将在下一篇中展开。

模型领域包罗万象,什么迁移学习,深度学习,知识图谱,社区算法等内容均未覆盖,文中如有纰漏也欢迎指出,文章相关代码实现请关注公众号“技术岁月”,发送关键字“决策引擎”获取。

python智能决策系统_智能风控决策引擎系统可落地实现方案(三)模型引擎实现...相关推荐

  1. 架构设计参考项目系列主题:智能风控决策引擎系统可落地实现方案:风控监控大盘实现

    本文转自: 技术岁月 Author 贺鹏Kavin 目录 I.前文提要 II.完整决策流 III.风控结果数据分析监控 IV.引入 Fink I.前文提要 通过之前五篇文章,分别介绍了决策引擎的主要功 ...

  2. 智能风控决策引擎系统架构设计与开发实践

    I.内容提要 风控决策引擎系统从架构设计到开发实践 特征引擎系统及实时计算引擎 模型引擎系统及智能风控引擎 大数据风控-用数据驱动的风控全流程系统构建 II.风控决策引擎介绍 Q:互金领域的风险有哪些 ...

  3. 风控建模 python 知乎_智能风控:Python金融风险管理与评分卡建模

    推荐序 前言 第1章 信用管理基础 /1 1.1 信用与管理 /2 1.2 风控术语解读 /3 1.2.1 信贷基础指标 /4 1.2.2 信贷风险指标 /5 1.3 企业信贷风控架构 /7 1.4 ...

  4. 风控策略和模型的区别_智能风控平台核心之风控决策引擎(二)

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 互金杂货铺(id:hjzahuopu) 作者 | 互金杂货铺 本文摘要:信贷风控策略建设思路 ...

  5. 网际风全推数据接口_智能风控系统设计与实践

    导读 在主流互联网产品中,比如搜索和推荐的系统,为了挖掘用户潜在购买需求,缩短用户到商品或信息的距离,提高用户的使用体验,都需要使用大量的特征来刻画用户的行为.在信息安全领域,建立在人工智能技术之上的 ...

  6. 智能风控中台设计与落地

    导读:风控是金融最常见的场景之一,本文将从业务和技术架构两个层面和大家探讨如何落地智能风控中台系统. 分享主要围绕下面五点展开: 风控中台的设计背景 策略的全周期管理 模型的全周期管理 业务架构和能力 ...

  7. python风险评分卡系统_智能风控:Python金融风险管理与评分卡建模(梅子行毛鑫宇著)...

    推荐序 前言 第1章 信用管理基础 /1 1.1 信用与管理 /2 1.2 风控术语解读 /3 1.2.1 信贷基础指标 /4 1.2.2 信贷风险指标 /5 1.3 企业信贷风控架构 /7 1.4 ...

  8. 机器视觉python推荐书籍_智能硬件与机器视觉:基于树莓派、Python和OpenCV

    前言 第1章智能硬件与机器视觉 1.1 机器视觉在智能硬件领域的应用 1.2 智能硬件上的机器视觉技术方案选型 1.3 本章小结 第2章树莓派软硬件准备 2.1 刷写系统 2.2 硬件连接 2.3 L ...

  9. 电气工程及其自动化学python有用吗_电气工程及其自动化专业本科人才培养方案...

    1 电气工程及其自动化专业本科人才培养方案 一.大类培养概述 本专业目前按照电气信息类进行大类招生与培养,以"培养具有远大理想和抱负.知识能力素质 协调发展.能够适应和引领未来的电气工程人才 ...

最新文章

  1. js中propertyIsEnumerable()方法使用介绍
  2. python爬虫实例-Python爬虫原理与python爬虫实例大全
  3. 无参考质量评估在视频增强的进展与应用
  4. Asp.Net WebForm生命周期的详解
  5. LLBL Gen 3.x 源代码追踪与解析 Type Converter 类型转换器
  6. JS/JQuery操作iframe元素
  7. 如何检查有哪些尝试入侵服务器IP?有哪些命令?
  8. [置顶] 百度云推送push的使用
  9. 网站备案包括哪些内容?ICP域名备案和网安备案操作细节
  10. oracle 逗号,查询oracle中逗号分隔字符串中所有值
  11. PS如何制作火焰效果图特效步骤教程
  12. 谈谈你对JMM的理解
  13. 【P2P网络】磁力链接转换为种子文件 magnet to torrent .
  14. 魅族16spro锁回BL(Bootloader) 恢复微信指纹
  15. 计算机网络运输层知识点,计算机网络复习——Ch6传输层
  16. 机器学习笔记之深度信念网络(一)背景介绍与结构表示
  17. C++常见排序算法——选择排序算法
  18. C语言 static用法
  19. 怎么批量下载美拍主页视频
  20. 【亚马逊(上海)-AI Lab-DGL】实习生投递+面试(凉经)

热门文章

  1. vs2013编译ffmpeg之四十二 zvbi
  2. 金字塔原理4个基本原则_青松财经发现,股市中存在4个基本原理,学会了少吃亏!...
  3. 信息系统安全等级保护(简称“等保”)
  4. 【渝粤题库】陕西师范大学165210 国际人力资源管理 作业(专升本)
  5. Android开发——错误:远程主机强迫关闭一个现有连接——解决办法
  6. raspberryPi_继电器模块(relay)+风扇模块(fan)连接原理图/硬件调试
  7. 什么是差模干扰、共摸干扰?
  8. 手机打车APP的机遇与挑战
  9. 分布式锁1 Java常用技术方案
  10. 阿里云acp证书有用吗?阿里云acp证书考试内容有哪些?