贷后风险预测,通常会通过人工方式,定期或不定期地通过与贷款人沟通,对贷款人的财务信息、经营状况的分析以及贷款资金的流向监测,来掌握可能造成违约风险和信用风险的因素,防止违约贷款。人工方式每月或每季度进行一次,遇到问题也只能依赖经验上报,等待风险管理部门决策后采取行动。面临以下几个主要问题:

1、人工投入大,预测时间长。层层上报并等待决策处理,占用风险控制中的宝贵时间;

2、人工预测质量良莠不齐。缺乏经验的工作人员无法将风险消弭在襁褓之中;

3、多种因素影响预测。市场环境多变、经济活动周期性以及企业信息不对称等因素干扰;

4、无法通过经验积累提升效率和准确率,不能形成良性闭环。

构建完整的信贷逾期风险预测AI架构,实现高准确率、低延时以及可解释的贷款逾期预测方案,就需要针对业务数据和环境数据进行分析和预测。

深度学习方法是信贷逾期风险预测中日益广泛应用的方案,但纯粹的深度学习方法存在着过程缺乏可解释性的缺陷,而金融机构往往需要对推理得到的结果进行解释。因此模型融合方法是解决该问题的一种非常有效的技术,通过将树模型 XGBoost 和 LSTM 深度学习模型进行融合,能使预测能力得到进一步增强,同时又使模型具备可解释性。如下为基于模型融合的信贷逾期风险预测结构图。

在这里插入图片描述

该模型的工作流程如下所示,主要包括四个工作流。

在这里插入图片描述

Read more »

自然语言处理遵循一个规律或者说方法论,大部分在做 Pre-training(预训练),就是用更复杂的模型、更大的数据量、更多的计算资源进行模型的预先训练。然后针对领域或者特定任务进行 Fine tuning(微调),会遇到解决样本量不足、小样本等问题。

互联网大厂主要做平台研发,发布预训练模型,依托强大算力、海量数据、超大规模的计算集群来训练更大、更复杂的模型,从而形成技术壁垒。

创业公司受限于自身算力限制,不会将资源放在训练更大、更复杂的预训练模型,而是基于开源社区、互联网大厂的预训练模型,聚焦在垂直赛道开发相关的 NLP 模型或应用。 创业公司则比互联网大厂更专注,做适合自身行业需求和特点的应用,效果更好,在技术先进和前沿性上或优于传统行业巨头。

然而OpenAI提出的GPT-3算法却采用“大力出奇迹”的思路,打破了这个预训练+微调的方法论。

GPT-3原理

AI 三要素是算力、算法、数据,在前两者基本固定的情况下,数据量的大小对 AI 模型的效果会起到非常关键的作用。GPT的目的一直非常明确,就是想证明“大力出奇迹”的猜想。即在大的数据集上做无监督训练,是不是当数据大到一定程度时,就不需要在具体且繁多的下游任务上做监督、微调之类的事情了,用更少的领域数据去解决问题。

在NLP领域还有一个算法,BERT(Bidirectional Encoder Representations from Transformers)算法,BERT 模型曾被称为 “最强 NLP 模型”,Google 也在 2018 年底开源了 BERT 模型,相关论文也荣获 NAACL 2018 年的最佳长论文。BERT完全放弃了以往经常采用的RNN和CNN,提出了一种新的网络结构,即Transformer,在语料中选出连续的上下文语句,并使用Transformer模块识别语句的连续性。

Transformer整个网络结构完全是由Attention机制组成,更准确地讲,Transformer由且仅由self-Attenion和Feed Forward Neural Network组成,Transformer 整体结构宏观上看是一个Encoder-Decoder结构,如下所示:

img

Transformer的特征抽取能力在机器翻译、文本摘要、自然语言推理等方面得到了很好的验证,后续几乎所有NLP算法都采用了Transformer,包括GPT-3。

Read more »

方案一:协同过滤算法+商品回购状态

从时长角度将商品分类:

零重复购买周期,同类型的商品可以拥有很多件,衣服、鞋子、首饰等
长重复购买周期,此类商品使用周期长,属于耐用商品,例如家电、家具等
短重复购买周期,此类商品使用周期短,例如化妆品、洗护用品等

商品重复购买周期是根据用户两次购买之间的时间间隔、上一次购买商品的购买量以及商品的净含量来决定的。
计算方式:统计该商品的周期值,求取大量用户的均值

Pt = (Tt+1-Tt)/QtVt

Pt为用户第t词回购商品的周期;Tt+1为用户第t+1次购买商品的时间,Tt为用户第t次购买商品的时间,Qt和Vt分别为第t次的商品购买量和单位容量。
注意:筛选掉由于店铺优惠活动、电子商 务网站大型活动、顾客感知有用性和感知价值高等因素而采取在商品未使用完情况下的重复购买行为。

顾客购买记录中的商品回购状态可以划分为3类:

处于回购周期内的商品。
处于消费周期内的商品。
超过回购周期未购买的失效商品。

回购状态由已购商品的重复购买剩余时间Pleft决定。

零重复购买周期商品,剩余时间:0
长重复购买周期商品,剩余时间:无穷大
短重复购买周期商品,剩余时间:Tnow - Tlast - Pavage * Qlast * Vlast

Read more »

瀑布流推荐实现了分页和用户兴趣交叉推荐,考虑到系统性能,对用户推荐结果进行了缓存,分页返回。

瀑布流推荐与普通推荐流程保持一致,目前存在几个问题:

1、分页返回总数为推荐位最大返回商品数,前端需要缓存结果,部分用户行为无法实时捕捉

2、缓存ID与用户和推荐位相关,单位考虑到推荐位策略修改的情况,会导致推荐位修改后,结果仍为历史数据

3、缓存过期时间为2小时,用户两小时内的操作会被丢失

推荐位修改后,redis数据仍为历史数据,会推荐出脏数据。

在这里插入图片描述

缓存时间为2小时,应考虑前端重启进入程序,重新召回,这块应该和用户实时兴趣结合。

在这里插入图片描述

分页时也需要考虑在此期间用户的兴趣。

在这里插入图片描述

解决方案:

Read more »

在Kaggle竞赛中,胜出的模型通常是由几个模型组成的集合。尽管它们在精确度上可以大大超过简单模型,但其巨大的计算成本使它们在实际应用中完全无法使用。著名的BERT模型约有1亿1千万参数。

有没有什么方法可以在不扩展硬件的情况下利用这些强大但庞大的模型来训练最先进的模型?

目前,有三种方法可以压缩神经网络,同时保持预测性能:

权值裁剪
量化
知识蒸馏

权值剪枝

Network pruning的基本思想就是剪裁最不重要的部分。将参数裁剪写成约束优化形式:由于L0范数的存在,让该问题成为一个组合优化问题。

其中一个最简单的思路就是贪心法,或称为saliency-based方法**。即按重要性排序,然后将不重要的部分去除。然而问题来了,就是重要性如何衡量。

1、经典论文《Pruning Filters for Efficient ConvNets》中把权重的绝对值作为衡量其重要性的手段,按参数(或特征输出)绝对值大小来评估重要性;

2、考虑参数裁剪对loss的影响,将归一化的目标函数相对于参数的导数绝对值作为重要性的衡量指标

3、考虑对特征输出的可重建性的影响,即最小化裁剪后网络对于特征输出的重建误差;

4、其它的准则对权重进行重要性排序,考虑参数间的相互关系,试图找导全局更优解

广义上的剪枝包括:

1、正则化regularization:修改目标函数/学习问题,所以优化后可能会得到一个参数较少的神经网络

2、修剪pruning:面向大规模神经网络,并删除某些意义上冗余的特征或参数

3、增长growing:从小型网络开始,按某种增长标准逐步增加新的单元

Read more »

SimBERT是追一科技开源的一款基于BERT根据文本语义相似度进行召回的项目,SimBERT主要的应用场景分成相似文本生成和相似文本检索,下面分别进行详细说明。

相似文本生成

相似文本生成任务其实就是用户输入一段文本,SimBERT会生成相似的文本。下面是生成任务效果展示图:

在这里插入图片描述

这个任务其实和我们的文案生成模型非常相似,广告主输入一些生成条件,比如“捕鱼游戏,好玩,金币”,模型就会生成对应的广告文案。下面是我们根据SimBERT构造文案生成模型的效果图:

在这里插入图片描述

相似文本检索

相似文本检索任务就是用户输入一段文本,模型会从文本库检索出语义相似的文本。这个任务的本质是获取文本的语义向量,然后在文本库中根据相似度(这里计算相似度的方法很多,比如余弦相似度等等)计算和当前文本的语义向量相近的文本向量,这里文本库存储的也是文本对应的语义向量。因为最重要的是获取文本的语义向量,所以用BERT或者SimBERT都可以。

SimBERT原理

Seq2Seq任务是输入一段文本,模型会输出另外一段文本。Seq2Seq任务主要使用编码器和解码器结构,编码器会将输入的一段文本编码成固定大小的向量hn,然后解码器会根据这个向量hn通过自回归的方式来解码生成对应的文本。BERT因为使用的是双向可见的注意力机制,对于每个词来说所有词都是可见的,所以主要用来做NLU自然语言理解任务,比如文本分类。

Read more »

初级算法工程师

1、了解公司产品及技术体系;

2、利用公司的资源共享平台,能完成简单AI算法功能模块;

3、了解常规的数值分析、数据统计、数据挖掘、机器学习相关算法及应用;

4、良好的数据敏感度,在指导下能完成简单AI业务算法的数据分析、数据挖掘、数据清洗、异常数据处理、不均衡数据优化、离群数据优化等;

5、在指导下,能够完成简单业务AI算法的离线建模训练和效果对比分析;

6、在指导下,能完成模型线上部署,并对算法线上效果和性能进行跟踪;

7、对线上算法缺陷能够提出修正方法,在指导下完成算法缺陷的修复;

8、了解Python, C/C++, Java 中的至少一种语言,了解机器学习框架PyTorch、TensorFlow、H2O的实现等;

9、对最新的前沿算法技术和应用场景有兴趣;

Read more »

营销归因模型有助于判断渠道的价值。总有些渠道的ROI很高,能赚钱;有些渠道不赚钱,但覆盖人群很广;还有些渠道能把访客留住,把路人变成粉丝。

营销渠道越多、顾客行为路径越复杂,就越需要归因模型来帮助判断渠道价值,优化渠道组合和资源分配。

归因模型的种类常用的主要有以下5种:分别是首次互动模型、末次互动模型、线性模型、时间衰减模型、位置模型

1、首次互动模型:将转化功劳全部归于客户首次点击的那个广告和相应的关键字,即首次点击的渠道获得100%的功劳。该归因模型更加强调的是驱动用户认知的、位于转化漏斗最顶端的渠道;

preview

优点:是一种容易实施的单触点模型。

缺点:受限于数据跟踪周期,对于用户路径长、周期长的用户行为可能无法采集真正的首次互动。比如:网站cookie存活30天,但第一次互动到转化的周期是31天,成交权重就没有归因到真正的首次互动渠道。

适用于:品牌没有知名度的公司,关注能给他们带来客户的最初的渠道,对于扩展市场很有帮助的渠道。首次点击和最终点击模型,事实上都是单渠道归因模型。

2、末次互动模型:将转化功劳全部归于客户最后点击的那个广告和相应的关键字,即最后一次点击的渠道获得100%的功劳,这是最简单、直接,也是应用最为广泛的归因模型;

preview

Read more »

背景

对于一个基于CTR预估的推荐系统,最重要的是学习到用户点击行为背后隐含的特征组合。在不同的推荐场景中,低阶组合特征或者高阶组合特征可能都会对最终的CTR产生影响。而根据Google提出的Wide & Deep Model表示,同时考虑到低阶特征与高阶特征会比单独考虑其中一个有额外的提升。

目前最大的挑战是有效的提取到特征组合。有些组合很好被理解,但是有些特征组合很难找到对应的先验知识。而且即使特征组合有明确的语义,当特征数目比较大的时候也几乎不可行。

目前常用的CTR预估模型分别存在这些问题。

  • 在使用线性模型中,提取高阶特征的普遍方式其实是基于手工和先验知识。一方面当特征维度比较高时几乎不可行。另外一方面,这些模型也很难对在训练集中很少出现的组合特征进行建模。
  • 因子分解机(Factorization Machines, FM)通过对于每一维特征的隐变量内积来提取特征组合。最终的结果也非常好。但是,理论上来讲FM可以对高阶特征组合进行建模,实际上因为计算复杂度的原因一般都只用到了二阶特征组合。
  • 深度神经网络在学习复杂的特征关系中非常有潜力。目前也有很多基于CNN与RNN的用于CTR预估的模型。但是基于CNN的模型比较偏向于相邻的特征提取,基于RNN的模型更适合有序列依赖的点击数据。
  • zhang et al. 提出的FNN(Factorization-machine supported Neural Network)模型首先预训练FM,再将训练好的FM应用到DNN中。Qu et al. 在PNN网络的embedding层与全连接层之间加了一层Product Layer来完成特征组合。PNN和FNN与其他深度学习模型相似,很难有效的提取出低阶特征。
  • Wide & Deep模型混合了宽度(Wide)模型与深度模型。但是宽度模型的输入依旧依赖于特征工程

DeepFM模型可以以端对端的方式来学习不同阶组合特征的模型,并且不需要其他特征工程。DeepFM可以同时提取到低阶组合特征与高阶组合特征,并除了得到原始特征之外无需其他特征工程。来自与哈工大与华为诺亚方舟实验室的论文。

算法思想

和Wide & Deep的模型类似,DeepFM模型同样由浅层模型和深层模型联合训练得到。不同点主要有以下两点:

  1. wide模型部分由LR替换为FM。FM模型具有自动学习交叉特征的能力,避免了原始Wide & Deep模型中浅层部分人工特征工程的工作
  2. 共享原始输入特征。DeepFM模型的原始特征将作为FM和Deep模型部分的共同输入,保证模型特征的准确与一致

在这里插入图片描述

Read more »

Hbase是一种NoSQL数据库,这意味着它不像传统的RDBMS数据库那样支持SQL作为查询语言。Hbase是一种分布式存储的数据库。Hbase主要解决实时数据查询问题。底层物理存储是以Key-Value的数据格式存储的,HBase中的所有数据文件都存储在Hadoop HDFS文件系统上。

数据类型:HBase只有简单的字符类型,所有的类型都是交由用户自己处理,它只保存字符串。而关系数据库有丰富的类型和存储方式
数据操作:HBase只有很简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系,而传统数据库通常有各式各样的函数和连接操作
存储模式:HBase是基于列存储的。而传统的关系型数据库是基于表格结构和行模式保存的
数据维护:HBase的更新操作不应该叫更新,它实际上是插入了新的数据,旧数据依然保留。而传统数据库是替换修改
可伸缩性:Hbase这能够轻松增加或减少节点的数量,并且对错误的兼容性比较高。而传统数据库很难横向扩展,纵向扩展受限制

HBase架构

在这里插入图片描述

HBase是依赖ZooKeeper和HDFS的,需要启动ZooKeeper和HDFS,在整个Hadoop生态中,HBase的位置如图所示。

在这里插入图片描述

HBase和Hive区别:

Hbase:Hbase是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等

Hive:Hive是Hadoop数据仓库,严格来说,不是数据库,主要是让开发人员能够通过SQL来计算和处理HDFS上的结构化数据,适用于离线的批量数据计算

HBase数据模型

表:HBase的数据同样是用表来组织的,表由行和列组成,列分为若干个列族,行和列的坐标交叉决定了一个单元格。

行:每个表由若干行组成,每个行有一个行键作为这一行的唯一标识。访问表中的行只有三种方式:通过单个行键进行查询、通过一个行键的区间来访问、全表扫描。

列族:一个HBase表被分组成许多“列族”的集合,它是基本的访问控制单元。

列修饰符(列限定符):列族里的数据通过列限定符(或列)来定位

单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]

时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引

Read more »