-
运维开发中数据模型的流程化管理
2018-12-26 23:59:40这是学习笔记的第1842篇文章一个系统里面存在几十张表是很正常的事情,如果表数据量巨大,而且随着业务场景的结合,越来越复杂的时候,就会发现原本对于模型的处理就是一种捏橡...这是学习笔记的第 1842篇文章
一个系统里面存在几十张表是很正常的事情,如果表数据量巨大,而且随着业务场景的结合,越来越复杂的时候,就会发现原本对于模型的处理就是一种捏橡皮泥的感觉,你得自己手工捏出来它预期的效果,每改一处就需要重新塑造,伤筋动骨。从可持续的迭代改进来说,是到了要重构的阶段了,而如果忍住了坚持下去,会发现规避的问题比带来的问题更多。
对于模型的管理,一种经典的设计思想就是ORM,当然行业内也有很多成熟的方案,在这方面我暂且以基于Django为基础来简单说下,其实和Django的技术细节无关。
首先我们创建了多个model,从数据库层面就会映射出多张表,有的是一对多,有的是多对多。从设计的角度来说,我对model的使用是一种单一的需求,即不希望存在外键,不追求极度设计,允许部分冗余。
当然这对model的管理本身没有变化,基于model的处理有以下的集中设计思路,一种是原生的API方式,比如Django API等。还有一类是作为RESTful API使用比较轻量的方式,基于序列化方案的设计,这类方案相对来说比较精巧,代码量小,没有Django API的功能全面,主要是做模型映射,通常会和API结合使用,不适合一些定制化数据格式的场景。还有一类是raw sql,这是API和序列化之外的下下策。如果确认难以通过上述两种方案满足,使用原生SQL也是支持的,不过不推荐首选。
最硬伤的,如果添加字段,修改字段名等,raw sql方式就很难以扩展。
当然这些都是底层偏技术的事情,如果再上升一层就会发现,问题的复杂度远比这些要高很多。 为此我画了一个图。
比如model1的数据变化会联动引起model2的数据变化,就跟一层麦浪一样,其实这种场景是很多的。所以如果要把这些关联联动起来,着实是一件很繁琐的事情。
而对于数据的管理不只有正向的联动,如果反向的联动,也是有的,比如刚刚是model1的变更联动model2的变更,反之model2的变更也会联动model1的变更,随着业务场景的组合,会发现这个部分会越来越复杂,所以我们要抽象出一个DAO层来统一处理业务层的数据联动。
而且对于业务层的数据联动,需要通过可配置化的方式实现联动,这样的形式算是一种扩展而且易定制的方案。
-
Proteus VSM仿真模型开发流程及实例分析
2021-01-19 22:45:17电气模型实现元件的电气特性,按规定的时序接收数据和输出数据;绘图模型实现仿真时与用户的交互,例如LCD的显示。一个元件可以只实现电气模型,也可以都实现电气和绘图模型。 Proteus为VSM模型提供了一些C++抽象... -
信用风险评分模型开发流程
2019-11-22 16:15:241. 前期准备 这个阶段主要是确定项目目标,要达到的效果,可以使用的资源,打算运用的方法。...时间段选取:太久远的数据难以反映最新客户群体的分布变换,太近的数据又没有足够的还款逾期表现,一般选择...开发流程
1. 前期准备
- 这个阶段主要是确定项目目标,要达到的效果,可以使用的资源,打算运用的方法。
- 确立目标y值:消费贷信用评分模型一般以历史M3+为坏客户定义标准,作为正类,用1表示,历史未逾期的好客户为负类,用0表示,其他有逾期但未进入M3+的客户作为灰客户,用0.5表示,统计分布,但不作为建模样本。
- 时间段选取:随着时间的推移,客户群体以及相关信息会发生变化,太久远的数据很难代表最新客户群体,而最近的数据又没有足够的还款和逾期表现,一般折中选择数据采集当日往前推2至8个月内的注册单数据。
- 特征信息搜集:一般按来源对特征分为2大类,内部数据和外部数据,内部数据有客户家庭工作信息,收入负债信息,历史借贷信息,网页浏览记录,外部数据如多平台借贷,运营商数据,黑名单,征信。
2.数据采集
- 前期准备做好后,就该和IT部门负责数据管理的同事对接数据采集的事宜。大部分数据都是可以从数据库直接获取,部分外部数据可能要通过api接口或者单独的数据库抽取,有些特殊格式的(如json)还需要转换。
- 字段及取值的详细逻辑含义,需与其他业务人员或三方数据公司沟通交流,这对后续挖掘建模,正确高效使用数据很有必要。
- 有2点需要特别注意:抽取建模的数据一定要符合特定的业务场景,例如模型将应用在贷前审核阶段,那么数据一定是客户进件时(当日)的,对于累积递增存储的数据则需要回溯;有些特征在模型应用场景无法提供或获取,这种特征就不能应用于挖掘建模。
3.EDA和预处理
- 数据清洗:由于数据收集或存储差异的关系,数据往往不是很干净的。在挖掘建模之前,需要先对数据有个大致了解,对不统一不规范的取值需要转换和清洗。例如有些特征包含码值、数值、中文。则需要统一转换为一种形式。
- 衍生变量:部分特征并未直接存储在数据库中(例如历史借贷笔数、历史还款期数),在挖掘建模之前就需要使用其他数据做衍生和加工,创建成可以用于挖掘建模的形式。
- 探索性数据分析:通过图表查看特征的分布,与目标标签的关系,达到深入理解数据的目的,并为后续挖掘做支撑。
- 预处理:删除唯一取值和单个取值占比极大的特征,处理相关性较强的特征,缺失值填充,极值异常值处理等,这一部分会和EDA穿插进行。
4.特征工程
- 决定最终模型效果的因素,除了数据本身质量和算法及参数外,特征工程也是极重要的因素。
- 广义特征工程包含的步骤很多,这里主要指衍生变量。
- 对模型效果有显著提升的特征往往都具有真实的业务含义和可解释性。将原有特征按数据来源和背景区分(如收入和负债),通过2个或3个有业务关系的特征创建出新的特征,如收入/负债得出负债比,另外还可以使用特征交叉等方法。尽可能多的衍生,但新衍生的特征最好可解释。后续会通过特征选择剔除无效的。
5.分箱和WOE编码
- woe编码为信用评分模型最常用的编码方式。在做woe编码前需对连续特征离散化和类别特征合并。
- 离散化的方法首选基于信息熵的最优分箱发,R有现成的包可以使用,可批量操作,速度和效率较高,Python暂无相关包,不过自己开发了相关功能,运行略慢,作为备用。另外还可以采用手动分箱(即通过分布图主观合并或选取划分点),等深等宽分箱用的较少。
- 计算分箱后特征的woe和iv值。IV值越高对目标Y的区分越好。IV值会用于后续特征选择。woe值会直接替换分箱值作为模型输入,相当于对数据做了归一化。
- 根据IV值的变换可能会调整分箱策略,为了避免过拟合和提高模型稳健性,会将箱数限定在4-6左右。
6.特征选择
- 通过特征相关性,总IV值(低于0.02预测能力较低),并结合业务含义。最终通过wrapper方法对特征预测能力做迭代评价,剔除对模型效果没有提升的特征。
7.效果初探
- 到这里可以用模型试试效果了,如果效果与理想差距较大,就要回到之前做特征工程的地方,思考新增一些衍生特征。
8.算法选择及超参数调优
- 通常用到的算法包括逻辑回归,随机森林,支持向量机,GBDT,xgboos和lightgbm。
- 超参数调优法会用到随机网格搜索,局部网格搜索和贝叶斯优化。
9.模型融合
- 通过模型融合方法(这里用到stacking),汇集各模型优势,提升模型泛化能力。
10.结果验证
- 在验证集上验证最终模型效果。
- 阈值选取:一般分为单阈值和双阈值两种情况,针对不同省份或产品会分开设置。
- 单阈值:大于阈值则拒件,小于阈值则走后续审核流程流程
- 双阈值:小于通过阈值则直接放款,审核流程结束,大于拒绝阈值则直接拒绝,审核流程结束,介于中间的则走后续审核流程
- 阈值选取会将坏账和通过率相结合,保证利润最大化。一般会与财务、业务部分等协商拟定。
11.上线部署
- 开发上线代码,将模型部署到线上生成环境。
- 线上代码包括api调用,json解析,字段清洗,取值转换、分箱,woe替换,模型预测,模型分数,模型结果几个部分。
- 上线代码尽量保证简洁高效,潜在bug少,运行效率高。
- 正式部署到生产环境前会经过本地测试,测试环境测试,批量测试,同步试运行,最终代码无报错且模型结果无误后,替换旧模型结果。
12.后续监控
- 对模型变量、结果、运行状态进行持续监控。
- 重点监测特征取值分布、PSI值和模型分数结果。
- 出现过生产环境api数据与建模数据分布差距大的情况,经调查两者为逻辑不一致导致的。生成环境的数据要和建模数据逻辑一样,分布基本一致。否则会导致模型效果准确性下降。
-
风控模型开发全流程
2020-09-13 07:30:00本篇我们对开发金融风控模型做一个总结,先给出流程图:建立模型,当然需要数据,金融风控的数据一般来源于内部与外部,内部是在公司业务系统内已有的,外部主要靠采购三方数据扩展。三方数据的采集标...本篇我们对开发金融风控模型做一个总结,先给出流程图:
建立模型,当然需要数据,金融风控的数据一般来源于内部与外部,内部是在公司业务系统内已有的,外部主要靠采购三方数据扩展。三方数据的采集标准可参考文章:
风控模型的目标是对客户的好坏程度进行概率预测,转化为模型术语,就是分类问题。首先需要确认好坏客户的标准,通过滚动率分析可以给出量化标准。通过逻辑回归对该分类问题进行建模。
有了样本与目标变量,我们根据证据权重(woe)修正对客户先验认知的增量,对变量进行分箱,提高模型的可解释性与鲁棒性,基于IV值筛选指标
进行IV值筛选后的变量,对woe转换后的数据做多因素分析,要考虑模型建立后的多重共线性问题。一般可以通过方差膨胀因子和逐步回归检测
到了这一步,特征工程已经全部做好。下一步就是模型建立,在建立模型前需要根据数据质量与业务要求确立好模型的评价指标,调参过程用学习曲线与验证曲线去搜索最佳的超参数,防止模型过拟合。模型建立好后用测试集数据对模型进行评估测算,并且转化为标准评分。
最后在模型上线后,需要紧密监控其数据表现
-
MVC5+EF6之EF数据模型完整开发流程问题总结
2017-10-18 19:53:00数据库中用户代码附加: new SysUser {UserName ="zxy",Email="123@123.com",Password ="1"}, new SysUser {UserName ="xy",Email="...,Password ="...数据库中用户代码附加: new SysUser {UserName ="zxy",Email="123@123.com",Password ="1"},
new SysUser {UserName ="xy",Email="1234@1234.com",Password ="2"}
上面四张图是成功的截图,嘿嘿!今天下午实现了第三章,在这一章上停留了好久,终于完成了,好开心!下面是我在实现时候遇到的问题(在总结的时候晒的图中使用的QQ,这一次改成了email,因为QQ不是type类型)
1. 刚开始的时候一直没有办法安装上entityframework ,搜了好多的办法,最后没有找到办法,发现多试几遍就可以安装上的,因为这个是自带的
2.在AccountInitializer类中:DropCreateDatabaseIfModelChanges<AccountContext>这个本来是个引用,我却把生成了类
3.在web.config中加的一段代码<connectionStrings><add name="AccountContext" connectionString="Data Source=.;database=MVCdemo;uid=sa;pwd=123456;"/>
</connectionStrings>中加上了 providerName="System.Data.SqlClient"
4.在安装数据库是没有设置混合登录模式
解决方法:登录上数据库——右击属性——选择安全性——选择SQL Server和Windows身份登录模式——输入账户密码——重新登录数据库——选择安全性/登录名——找到输入的账户——右击属性——在状态中即选择启用
以上是我遇到的问题,希望自己下次可以在认真一点,不在犯不必要的错误,加油!
-
信贷风控模型开发----模型流程&好坏样本定义
2018-03-21 15:48:25第二章 模型开发流程&好坏样本定义 2.1模型开发流程 2.1.1 评分模型流程图 2.1.2流程图阐述 2.2 好坏样本定义 2.2.1观察期、表现期、观察点 2.2.2举例说明 第二章 模型开发流程&好坏... -
EDA/PLD中的Proteus VSM仿真模型开发流程及实例分析
2020-11-09 02:51:35电气模型实现元件的电气特性,按规定的时序接收数据和输出数据;绘图模型实现仿真时与用户的交互,例如LCD的显示。一个元件可以只实现电气模型,也可以都实现电气和绘图模型。 Proteus为VSM模型提供了一些C++抽象... -
数据仓库的模型设计流程
2020-03-22 22:59:56数仓模型设计的整体流程涉及需求调研、模型设计、开发测试、模型上线四个主要环节,且规范设计了每个阶段的输出与输入文档。 需求调研:收集和理解业务方需求,就特定需求的口径达成统一,在对需求中涉及到的... -
基于Keras、DenseNet模型微调、参数冻结、数据增强、模型训练、模型验证全流程记录(模型微调开发全流程...
2020-04-03 15:33:28使用keras搭建模型,用imagenet的权重进行预训练。densenet169的layers数量未595,冻结模型前593,增加一个2分类的dense层,使用图片训练。 冻结模型 修改前的模型: 修改后的模型: ... -
k折交叉验证matlab 流程_统计学习模型开发基本流程
2021-01-09 18:48:09统计学习模型开发是数据挖掘流程当中的主体部分,包含了数据准备、建模、评估三个步骤。数据准备(Data Preparation)数据准备阶段,也可以称其为 ”特征工程“(后文都叫特征工程)。有这么一句话在业界广泛流传:数据... -
支付宝当面付对外数据模型&调用流程(.net)
2020-03-26 12:10:39asp.net环境下,进行支付宝当面付开发中的必备文档,文档详细说明了支付宝官方C#版本demo中F2FPayDll.dll的接口、数据模型、处理流程等一些列操作,是进行相关开发的参考依据。 -
帝国cms模型数据表常用的二次开发的需要的函数以及开发操作流程
2018-10-29 12:00:32缓存class_r存放的数据需要的有: tbname:数据表名 modid:1 当然还有其它的字段,我们暂时不需要,后面需要的,我们单独拿出字段来讲解。 ReturnSqlTextF($mid,1)//返回模型表里面的所有字段名称,以及在主表的... -
软件开发流程——V模型
2020-07-14 15:17:50软件开发分为以下步骤: 1.需求分析:即首先要明确客户需要的是什么,需要软件作成什么样子,需要有那几项功能,这一点上比较关键的是分析师和客户沟通时的理解能力与交互性。要求分析师能准确的把客户所需要达到的... -
深入理解Spring MVC开发-数据模型
2020-04-22 18:21:11上述章节只是谈到了参数的获取和转换,通过这些处理器终于可以调用控制器了。在Spring MVC中,控制器是业务逻辑的核心内容,而...本节暂时把视图放下,先来讨论数据模型的问题。 数据模型的作用是绑定数据,为后面的... -
信用评分模型分类及评分卡开发流程
2018-04-16 17:10:53不同机构的信用评分模型不尽相同,主要有两类: 金融机构: (1)申请风险评分 ...评分卡开发流程: (1)数据准备: 特征衍生/数据整合/WOE/单变量统计 (2)变量选择 变量粗筛:iv/缺失率/单类... -
TensorFlow模型应用流程
2020-09-21 16:17:47书归正传,本文主要介绍模型从开发到应用的过程,不涉足模型调优等与数据科学相关的问题(主要是不会啊)。文中用到的模型程序是基于tensorflow官方的svm示例修改而来。 一、模型流程 以下是模型从生成到使用的... -
er图转为数据流程图_「数据架构」实体关系模型介绍
2020-12-28 02:17:51实体-关系模型(或ER模型)描述特定知识领域中相关的...因此,ER模型变成了一个抽象的数据模型,它定义了一个可以在数据库(通常是关系数据库)中实现的数据或信息结构。实体-关系建模是由Peter Chen开发的数据库和设计... -
开发流程
2020-06-27 11:29:51机器学习开发整体流程 1.数据 数据是机器进行学习的根本,获取有效高质量的数据才能够让机器学习出最符合真实场景的模型。 2.建立模型 明确问题与需求 机器学习是针对特定数据的学习,目的是解决特定的问题。因此... -
【华为云-上云之路】网络AI模型开发(2)数据入湖、数据处理
2020-06-17 00:34:51流程 1)先准备数据,以.csv为后缀的文件; 2)进入数据资产管理服务,选择“治理工具”下面的“数据加载”,把本地的数据上传数据到湖OBS中。 特点 1)数据输入端:本地文件、租户OBS、数据湖OBS、HIVE、DWS等... -
Python数据分析与挖掘实战(开发流程及常用库安装)
2017-06-02 11:31:20Python:3.5Python数据分析与挖掘主要流程如图: 基本上做一个数据分析,大致的流程都是这样的。最后根据模型说明进行相关的事务决策。这里简单说一下数据采集,如果数据来源是来自于数据库,直接获取数据库数据... -
To B软件产品的开发流程—阶段关口模型
2020-04-23 23:48:12To B类软件产品应用“阶段-关口模型”的场景 1.产品周期长(半年以上) 有时间做规划 2.产品改变了B端的业务流 确认各个部门都能接受改变,并愿意配合调研 3.产品的数据来源于多个部门 确认各个部门愿意协作,提供... -
算法笔记整理4 - 数据分析 + 机器学习的开发流程总结
2019-01-12 19:26:30开发流程 明确需求与目的 数据收集 内部数据 购买数据 爬取数据 调查问卷 数据预处理 数据合并 数据清洗 缺失值 异常值 重复值 数据转换 特征工程 数据建模 建立模型 选择... -
用户画像数据存储在什么数据库_用户画像系统数据架构及开发流程
2021-02-06 08:59:31而用户画像是基于数据仓库构建的应用系统,它基于对用户的维度进行分类,建立画像模型。用户画像系统会与线上数据进行对接,同时与Web进行交互,更好地支撑运营人员、数据分析人员的工作。如下为常见的用户... -
MVC开发模式的数据运行流程
2017-07-19 00:02:00现说一下Java中数据的运行流程,由于我技术有限,有错的话欢迎提出,不喜勿喷! 我们知道在MVC开发模式,包括三部分视图层V(view)、控制层C(Controller)和模型层M(model),那么在一个项目中,这三部分又是... -
构建预测模型一般流程
2019-10-10 10:19:51构建预测模型的一般流程 问题的日常语言表述->问题的数学语言重述 重述问题、提取特征、训练算法、评估算法 熟悉不同算法的输入数据结构: 1.提取或组合预测所需的特征 2.设定训练目标 3.训练模型 4.评估模型在... -
python开发项目流程_开发流程
2020-12-24 11:02:22开发流程 创建 Django 项目 创建应用 模型 数据库配置 数据库表的定义 定义模型类 生成数据表 模版 视图 服务器管理 站点管理1、创建 Django 项目图片.png进入创建的项目中图片.png目录说明... -
信用评分模型建模流程
2020-04-05 22:50:43信用评分模型是消费信贷管理中先进的技术手段,是现在金融行业常用的信用风险评估方法,本文从宏观上介绍评分模型的建模开发流程。 1. 明确问题 明确业务要解决的问题,确定标签的定义规则,以及模型的评价指标和... -
机器学习特征选择、开发流程、数据集划分、转换器与估计器
2020-07-21 15:45:05VarianceThresholdPCA(主成分分析)PCA目的PCA定义PCA代码实现机器学习的开发流程机器学习整体开发流程机器学习模型工作流程机器学习算法分类机器学习数据集划分数据集划分代码实现转换器与估计器转换器估计器估计...