金融风控大厂面试题26-50题(含解析)

926 阅读32分钟

我正在参加中秋创意投稿大赛,详情请看:中秋创意投稿大赛

金九银十,金融方向的小伙伴,面试题给你送来了,不赘述,面试题如下,请笑纳~

1-25题见>>金融风控大厂面试1-25题(含解析) - 掘金 (juejin.cn)

26、想问一下老师,群里面提到的根据业务构造损失函数,能举个例子么?

解析:

XGBoost模型支持自定义评价函数和损失函数。只要保证损失函数二阶可导,通过评价函数的最大化既可以对模型参数进行求解。实际使用中,可以考虑根据业务目标对这两者进行调整。举个例子,假设现在有一个提额模型,用处是将分数最高的20%客户给与更高的额度。也就是期望分数最高的20%的客群正样本捕获率最大化。可能在保证上述前提,同时保证模型对正负样本有一定的区分能力。所以可以改写一个保证模型区分度,同时又能优化局部正样本捕获率的评价函数 。

可以看到评价函数由两部分组成,第一部分权重默认为0.5,目的是使得前20%样本中的正样本占比最大。因为正样本的标签为0,因此pandas.quantile()函数分位点参数0.2,表示预估为正样本概率最大的前20%分位点。第二部分权重同样默认设置为0.5,目的是让模型对正负样本的识别能力得到保障。

实际使用中,可以根据,对模型表现的侧重点,进行权重选择 。比如当更希望模型关注于捕获率时,可以调整第一部分权重为0.8,将第二部分权重调整为0.2。本文给出的是一种启发性的思路,读者还可以根据实际情况改写更贴合业务的损失函数。LightGBM中也同样支持自定义损失函数和评价函数。代码上有一些细微差别。评价函数需要返回三部分,用False代替。

27、为什么要做拒绝推断?常用的拒绝推断方法有哪些?

解析:

拒绝推断的目的:如果只用好坏用户建模,则忽略了那些授信被拒的用户,加入拒绝用户是为了让建模样本更接近总体的分布,防止样本有偏,同时也能增加样本数量。

公司内部策略的变动,导致当前的申请者已不能代表建模时点的申请者,所以过去被拒的用户不一定现在也会被拒绝,因此,只使用审批通过的用户可能会造成误判。

做拒绝推断可以找出之前被拒的好用户,挖掘这些用户,改善风控流程,增加公司收益。拒绝推断的适用范围:高核准率不适合用拒绝推断,因为高核准率下好坏用户已接近于整体的申请用户。中低核准率适用用拒绝推断。拒绝推断的常用方法:硬性截断法:先用好坏用户建立初始模型,然后用这个初始模型对拒绝用户进行打分,设定一个阈值分数(根据对拒绝用户的风险容忍度),低于这个阈值的为坏用户,高于这个阈值的为好用户。再将已标记好的拒绝用户放入样本中,重新建立模型。

分配法:此方法适用于评分卡,先用好坏用户建立初始评分卡模型,再将样本跟据评分高低进行分组,计算各分组的违约率。然后对拒绝用户进行打分并按此前的步骤进行分组,以各分组的违约率为抽样比例,随机抽取改分组下的违约用户,指定其为坏用户,剩下的则是好用户。最后将已标记的拒绝用户加入样本中,重新建立模型。

平常工作中主要用到以上两种方法,个人建议做申请模型最好做一下拒绝推断,这样模型上线后的得分分布和拒绝率和线下才不会有很大的差异。

28、不平衡场景下的过采样(朴素、SMOTE)后训练的模型都需要结果概率校正吧?如何操作?

解析:

只有单个模型不需要做校正,如果需要和其他模型做融合或者做比较的时候可以做。

很多机器学习算法无法在不平衡样本上取得很好地效果,这是由于其损失函数在判定正负样本损失时没有考虑到样本不均衡导致的。比如逻辑回归的损失函数:

这里没有加入正则项,但也可以看出对于正负样本预测错了的惩罚是一样的,当样本非常不均衡时,这个损失函数可能导致分类器输出结果全都是占比较大的样本:如99%都是正样本,1%是负样本,则学习出来的结果可能是不管扔进去什么数据,分类器一律预测为正样本,因为这样的损失已经很小了。

解决这一问题,一是改变损失函数,比如y=1的样本远少于y=0的,就在损失函数里加大y=1的系数权重。二是通过采样方法改变y的先验分布。若通过采样方法如下采样改变了Y=1:Y=0的比例,则在使用某些算法如逻辑回归时会有一些问题:在调整后的数据集上训练出来的输出概率不是原始数据分布的概率,若要知道原分布下的概率,要对结果进行调整

这里插一句,尽管理论上来说人们认为逻辑回归的输出是某类别的概率,但我在工作中很少用“概率”来这么看待他们,而更多的是用这个连续值对输出结果排序,并根据需要选取分类阈值。比如做信贷审批,不会简单地把输出逾期概率0.5以上的人拒绝,而是用lift chart看分到哪一步的人群的逾期率是可接受的,所以逻辑回归的输出更多应用在对人群排序,而非真的用“概率”这层含义去解释。

回到本文主题,毕竟通过采样,我们改变了先验概率,导致模型预测的后验概率不是原样本的概率,如果硬要还原,做法如下:

令X为输入数据,Y为原始标签,Y′为数据平衡(subsample/oversample)后的标签,P(X|Y)P为模型得到的似然函数,P(Y)为0/1类概率的先验知识。似然函数只和模型相关,和数据无关,所以在数据平衡前后是一致的,P(X|Y)=P(X|Y′)。

根据贝叶斯理论,后验概率,

,这里P(X)只和数据有关认为是常数。

假设平衡后P(Y′=1)=P(Y′=0)=0.5,此时逻辑回归输出标签1的概率ps,则ps=P(Y′=1|X)=P(X|Y′=1)P(Y′=1)

假设平衡前P(Y=1)/P(Y=0)=β,β∈[0,1),想要知道原始的标签为0/1的概率p0,p1。其满足以下公式


又因为p0+p1=1,则有

以上就是讲平衡后的概率转换成平衡前的概率的公式,其核心思想是似然函数于数据无关,样本平衡只影响先验概率,所以以似然函数为桥梁,根据贝叶斯公式,从平衡后的后验概率推导出平衡前的后验概率

原文链接:blog.csdn.net/nickzzzhu/a…

29、我lgb在不平衡分类上训练了一个模型,训练集上输出概率分布呈偏态分布(偏向0,好样本),但在测试集上呈近似正态分布。如果设置scale_pos_weight参数,会产生这种情况,如果不设置,测试集上的概率分布还是和训练集类似这种现象正常吗?

解析:

正常吧,scala pos weight相当于改变了训练集的标签分布,不过我理解,输出概率分布不一样,对排序模型没有影响吧~,只不过和别的模型的分数不能直接比较。

scale_pos_weight 是用来调节正负样本不均衡问题的,用助于样本不平衡时训练的收敛。
如果你仅仅关注预测问题的排序或者AUC指标,那么你尽管可以调节此参数。如果你希望得到真正的预测概率则不能够通过此参数来平衡样本。什么意思呢,让我们来举个例子:加入我们现在需要通过体重来预测男女,有三个人体重分别为50kg、60kg、70kg。假设他们是男生的真正概率是:0.4、0.6、0.8。那么好,我现在模型预测出的概率为:0.7、0.8、0.9。如果讲预测概率的话,显然模型效果很差,但是我们预测的男生概率的排序以及 ROC 曲线(包括对应 AUC 值)都不会改变。

解析参考链接:blog.csdn.net/h4565445654…

30、下探一般要选多少样本进行下探?下探的样本评分很低,但选取哪些呢?

解析:

按照期望得到的坏客户量进行选择。不知道下探后会收获多少坏样本对不对?上一次模型迭代时候的测试集模拟就派上用场了。用那个百分比作为下探区间的预期百分比,然后去算吧。

31、现在市面上在金融风控中用的无监督算法都有哪些?

解析:

主要是基于图的离群检测和聚类,其次还有孤立森林,LOF这种,还有通过聚类进行特征衍生

32、针对新场景下样本量较少的情况,通常采用什么方法?

解析:

可以迁移的历史样本或者其他场景样本用来做迁移。无标签样本丢进来做半监督。

风控模型的冷启动是指产品刚上线时,没有积累的用户数据,或者用户还没有表现出好坏,此时需要做模型就是一个棘手的问题,常用的方法如下:
不做模型,只做规则。凭借自己的业务经验,做一些硬性规则,比如设定用户的准入门槛,考量用户的信用历史和多头风险,而且可以接入第三方提供的反欺诈服务和数据产品的规则。另外可以结合人审来对用户的申请资料做风险评估。借助相同模式产品的数据来建模。如果两个产品的获客渠道,风控逻辑,用户特征都差不多的话,可以选择之前已上线那个产品所积累的用户来建模,不过在模型上线后需要比较线上用户的特征是否与建模用户有较大的差异,如果差异较大,需要对模型对一些调整。

无监督模型+评分卡。这种方法适用于产品上线一段时间后,表现出好坏的用户比较少,但需要做一个模型出来,此时可用线上的申请用户做无监督模型,找出一部分坏样本和好样本,用这些数据来做评分卡模型,当然这种模型准确性是存疑的,需要后续对模型不断迭代优化。

33、使用BiLSTM 对用户行为进行建模时,神经网络的输入层是什么?输出层是什么?怎么把用户行为数据转换成神经网络输入层的向量?

解析:

打个比方啊,额度使用率按照月份的时间序列就是,前0-30天的额度使用率,前30-60的额度使用率,前60-90的额度使用率...变成一个列向量。有多少特征(额度使用率是一个特征)就有多少个列向量。然后输入层就是这些列向量,输出层一般就是用户的标签。最终可以把输出的score丢进逻辑回归,或者把中间测参数拿出来也可以。

34、请问欺诈标签如何定义?

解析:

反欺诈的千古难题。现在使用的方法:外部黑名单,客服的反馈,明显坏的行为(例如贷款逾期M3+。通讯录造假) ,根据已有标签进行染色,负样本上聚类(已有标签明显多的一类)

35、怎么样才能具备招聘中所反欺诈岗位所要求的?

解析:

归纳一下就是要,明确欺诈的定义,使用数据分析方法,对接第三方数据 。

36、无监督与xgboost结合的反欺诈模型该如何做?

解析:

首先聚类,得到每一个簇的聚类中心,然后取出所有的聚类中心,对这些点进行异常值检测(本质是在对簇做异常簇检测)。比如说放进孤立森林中,得到异常值作为整个簇的异常值,带入xgboost进行训练。

37、小微正常做反欺诈,主要考虑哪些?

解析:

信用风险,行业情况。挺多的,我抛个砖你参考下,发票流水进项,销项 的金额 、频次,和时间以及传统统计指标 做笛卡尔乘积,还有行业指标,区域指标,企业间销售关系,专票循环网络造假骗贷啥的。

解析2

虚构一个经营的企业,以企业经营周转的名义借贷。

在小微信贷当中,这种情况也屡见不鲜,从现有的数据来看,这种骗贷行为,不良率极高,是小微信贷不良的主要原因之一。从实际操作来看,欺诈行为多种多样,而且隐蔽性极高。

1、经营虚假。
借款人本身并未经营,在某个团队的帮助下,伪造全部经营信息。
这种情况极少,毕竟成本极高,但是危害性极大,一旦发生,几乎是百分之百的本息全无。现在的P2P、网贷中存在大量的经营虚假,因为平台本身的风控缺乏,即使有一定的线上审核,或者电话 ,也缺乏现场审核环节,难以识破,某些平台甚至参与其中,不良高企不足为奇。

2、现场虚假。
借款人由于规模原因,或资金方要求等原因,并未使用自身的经营现场,而是借用他人的经营现场,借款人对此该行业极为熟悉,现场审核难以识别,如果发放贷款,往往超出借款人经营的资金需求,而流入其他领域,背离贷款的初衷,埋下逾期的隐患。

3、收入虚假。
借款人在经营,但是希望更多的资金,于是虚构销售收入。主要行为有伪造银行流水,伪造出入库单据等。

4、库存虚假。
某些重库存的行业,往往在库存上做文章,最典型的的代表是钢贸行业的货押业务,然而在小微信贷当中也多有出现,借用他人库存是最常见的手段,最终的目的是推高企业固定资产。

5、财力虚假。
由于小微企业的特殊性,公私不分家,信贷机构往往要求借款人提供家庭资产以提高评分,此时的虚假也存在极多,比如虚假的房产证、行驶证、大额存单,甚至有真实的虚假:现金摆账。

6、用途虚假。
这是小微信贷最常见的问题,也是存在争议的问题。由于监管要求,超过50万以上贷款必须受托支付给交易对手,然而小微企业的用款相对零散,比如贷款100万,20万购买原材料,20万发放工资,30万支付工程保证金,林林总总一大堆,而且贷款发放与客户的资金需求在时间上不可能绝对精准一致,这导致审核的度极难把握。尤其是实际操作中,客户把自己的流动资金抽100万来消费,比如购车,再来贷款100万用于经营,怎么界定?当然,上面的用途还算是本业,有些则直接投资其他行业或者拿来投入民间借贷,这样业务的风险就极难把控。

小微信贷,涉及的行业广泛,客户素质参差不齐,极难用统一的政策来界定,目前主要的业务模式有IPC、信贷工厂两类,IT技术的发展,推动了第三类数据审核模式的发展,但是,不管哪一类,反欺诈,仍然是客户经理的必备的一课。

解析参考链接:zhuanlan.zhihu.com/p/26074479

38、neo4j 上线,实时构建图谱的 性能如何?

解析:

实时性问题基本上可以达到一秒以内一个用户。2亿节点,5亿关系。

知识图谱是基于图的数据结构,通常用图数据库进行存储,我们先来看一下图数据库排行。\

我们来看一下 neo4j 的性能表现:
测试环境:1.操作系统: Mac OS X 10.10.52.内存: 8G3.cpu参数: 8核8线程4. 编程语言: python 2.75.Neo4j 版本: 3.3.06.服务器节点数: 单点

测试内容: 节点数分别在1万, 10万, 100万,1000万情况下,在节点设置索引和不设置索引的情况下查找节点的平均延时。测试结果如下:

通过上面的测试可以看出,当节点(Node)的数量超过1000万时,在不设置索引的情况下,平均查询延时已经超过了6秒,说明此时 neo4j 已经明显“吃不消”,显然这样的延时这在实际的项目应用中是完全不可接受的。但是我们发现设置索引之后查询时间明显降下来了,那么是不是设置的索引越多越好呢?我们看在1000万节点的情况下有索引和无索引插入延时测试:

由上图测试结果可以看出: 在千万级数据的情况下有索引插入比无索引插入要慢30%, 所以索引并不是越多越好, 那么除此之外 neo4j 还有哪些地方可以优化呢?

不使用schema,所以从理论上来说 neo4j 可以存储任何形式的数据。但由于neo4j 是通过键值对(Key-Value) 的双向列表来保存节点和关系的属性值,所以neo4j仅适用于存储实体关系和实体简单的属性。在实际应用中一个实体通常会包含众多的属性,如果将这些属性全部存储到 neo4j 中,neo4j 的查询将变得异常的慢, 而在实际的应用场景下,经常会遇到高并发的情况。这时候单节点的 neo4j 就会显得力不从心。那么在项目实战中怎样更好的利用 neo4j 来抵御高并发呢?

1.高可用架构:

HA(High Availability)即neo4j 的高可用特性,不过这个特征只能在neo4j 企业版中可用。neo4j HA使用多台neo4j从数据库设置替代单台neo4j主数据库的容错架构, 这种架构可以在一台实体机故障的情况下使数据库具备完善读写操作的能力, 由于 neo4j HA 采用主从数据同步, 而且写操作也可以在从库中执行(经测试这种方式不如主节点写入可靠)因此采用neo4j HA 比单台neo4j数据库拥有更多的读取负载处理能力。

如果你使用的不是 neo4j 企业版,那么你可能需要自己动手来构建 neo4j 集群以此来实现高可用架构了。当然你可以采用Neo4j+DRBD(Distributed Replicated BlockDevice)+ Keepalived 方式来构建自己的neo4j 集群, 通过 DRBD 来备份单点上的 neo4j 图库数据,通过Keepalived 来管理你的集群。除此之外你还可以通过 zookeeper 来管理你的集群节点,自己实现将主节点数据修改的Cypher 语句元操作同步到从节点(类似 MySQL 的binlog)来实现主从同步,从而达到读写分离。当然不管你采用方式一还是方式二,都会增大开发和维护成本。

2. 增加缓存:

应用缓存:在实际应用的过程中读写图库时经常会遇到查询一些不常修改的数据, 比如需要频繁查询用户所属的国家信息,而国家的属性更改的频率比较低,而且用户的国籍信息不会经常变动,这时我们可以通过添加应用缓存(如:redis, leveldb等),将查询的结果缓存起来,减少直接访问图库的频次,减小图库的读取压力。

数据库缓存:由于neo4j 执行一次查询操作之后,会将数据缓存到内存中,执行相同的查询操作 neo4j 直接返回内存中缓存的数据结果。如果是执行随机查询,则后一次结果会覆盖前一次的查询数据,内存缓存的配置可以通过修改配置文件中dbms.query_cache_size参数进行调整。所以说执行语句时尽可能的利用已有数据的缓存,减少 Cache-Miss 情况的发生。

3. 索引查询优化:

查询优化:由于 neo4j 会将查询结果缓存到内存中,所以不需要的查询结果尽量不要放到内存,比如 下面的cypher 语句:
\

  1. MATCH (n) OPTIONAL MATCH (n)-[r]->() RETURN count(n.prop) + count(r.prop);
    \
  2. MATCH (n) OPTIONAL MATCH (n)-[r]->() RETURN count() + count();

    语句1比语句2 更好,因为后者会将所有的节点和关系的属性加载到内存,然后计算 count 值,而前者只会将必要的属性加载到内存求count值。

    索引优化:我们知道数据库索引实际上是在数据之外维护了特定算法的数据结构(如 B+Tree),比如图7为了加快 Col2的查询构建一个二叉树,使原来的“顺序”查找,变成“二分查找”,从而将查询复杂度降低为 o(logn),而且索引还会利用访问局部性原理,充分利用操作系统的页缓存,加快查找的速度。

由于增加索引会让图库维护在维护数据的同时还会维护一份额外的数据结构,更新数据时会造成额外的开销,这也印证了上面测试的插入数据时无索引比有索引快的结论。

Neo4j 1.4以后的版本引入了自动索引(automatic index),可以在config/neo4j.properties中配置自动创建索引,也可以通过语句CREATE INDEX ON :Label(PropertyName)手动创建索引,从而提高查询的效率。

4. Neo4j和KV(Key-Value)数据库联合使用

由于 neo4j 的节点和关系的属性是通过Key-Value的双向列表来保存的,所以这种数据结决定了 neo4j 中存储的节点不能包含太多的属性值。但是在实际应用中经常会碰到一些实体拥有大量的属性,必要时还需要通过这些属性的值来查询实体进而查找实体拥有的关系。这时候可以将 neo4j 数据库和KV 数据库(如:MongoDB)进行联合使用,比如在 neo4j 节点的属性中存储MongoDB 中的 objectId。这样既可以充分利用 neo4j 的特性来进行关系查询又可以通过 KV 数据库的特性来进行属性到实体的查询。通常在图库和 KV 数据库联合使用时, 特别是经常需要通过属性来查询实体时需要设置 neo4j schema Index,即将neo4j中与 KV 数据库关联的值设置索引。

参考:zhuanlan.zhihu.com/p/36404872

39、模型上线后监控哪些指标?

解析:

主要是指标的变化趋势而不是绝对值。比如:模型PSI、特征PSI、分数分布、KS变化曲线等等。因为KS值这种指标,线上模型通过率越低,KS值就会越低,具体的值监控起来没有太大的意义。关注的是趋势。

解析2

前期监控(模型上线后一个月内):模型最后设定cutoff点后可以得出模型的拒绝率(线下拒绝率), 上线后需要比较模型每日的拒绝率与线下拒绝率。如果两者差异较大,说明线上的用户与建模的用户分布有很大差异,原因可能是没做拒绝推断,或者用户属性随着时间发生了偏移。

监控模型整体的稳定性,通常用PSI来衡量两个时间点的差异程度。模型的稳定性是一个需要长期观察的指标,可绘制月/周PSI变化趋势图来分析稳定性的变化,从中可以发现用户是否随着时间推移属性发生了变化,以便及时对模型做出合理的调整。

变量稳定度分析,目的是如果模型的稳定性不好,可利用变量稳定度分析来了解是哪些变量造成的。对于不稳定的变量要分析其原因,并对模型做出调整,弃用不稳定的变量或者找其他变量来替换。后期监控(用户表现出了好坏程度):此时已积累了一些线上的好坏用户,可做模型的线上效果的评估,评估的指标有AUC, KS, 基尼系数,如果模型的线下效果好,但线上效果却不理想,这个模型是要做优化的。

好坏用户的评分分布。绘制线上好坏用户的评分分布图,如果符合期望(高分段好用户占比多,低分段坏用户占比多),则说明模型的线上的区隔能力较好。

变量鉴别力分析。用线上的好坏用户来计算变量的IV值,评价变量的预测能力,预测能力不好的变量可以考虑弃用。

40、在模型训练过程中,用off(oot)来调参和特征筛选是不是在作弊?

解析:

理论上off是不允许参与建模过程的,为什么我们要做到建模过程中去。是因为,实际建模的时候,如果off表现不好,我们最终还是得去动用off,这个是一个很常见的现象。也属于业务需求。所以干脆放进了标准化流程里面。如果体量比较大的话,我们最后还会有一个off2,就是建模期间产生的新样本,这个通常会作为效验,不要也ok。总的来说,问题所述是指导思想,我们做的是结合实际经验的一种落地方法。

41、挑选样本时,灰样本不参与模型训练吗?

解析:

实际做的时候确实去掉了,不然dev和off上的ks有差异,我们不知道是由什么引起的,事实上线效果会比预期的差一点 。

在某些条件下的客户, 其风险处于较为模糊的灰色地带, 很难将其归类为好客户或坏客户。 比如, “半年内曾出现一次M1”, 由于此类客户并无鲜明的风险特征, 很难判断其好坏。 因此, 为强化模型的区隔能力, 不确定的客户不适合被纳入建模样本之中。 不过在模型完成后可加入测试, 观察其分数落点, 理论上应以中等分数居多。

42、怎么设计反欺诈模型?

解析:

本人之前没做过风控的反欺诈模型,因为公司的反欺诈检测都是外包给第三方的,所以对于如何设计反欺诈模型只能给出自己的一些见解:

反欺诈模型不太适合用二分类监督模型来做。

一是诈骗的类型很多,是一个多分类的问题,不可能只做单一类型的反欺诈模型。

二是大部分数据都是没有标签的,各种监督学习模型几乎无用武之地,而且区分噪声和异常点难度很大,甚至需要一点点想象力和直觉。

三是欺诈类型不断在变化,如果用历史数据建的模型来识别之前从未出现过的欺诈类型,几乎是做不到的。

个人觉得做模型之前需要确定两个问题,一是如何发现欺诈点,二是如何验证欺诈点。

第一个问题可以用数据可视化的手段,做一下时序分析,或者用无监督学习来识别异常点。

第二个问题可以用统计学的方法来验证异常点与总体是有显著性差异的,但有差异不一定就是欺诈,所以需要与领域专家进行讨论,也可以直接叫来领域专家来分析用户哪些行为是欺诈的。反欺诈规则+机器学习模型来检测欺诈用户,不能单纯依靠机器学习模型来检测欺诈。规则和模型用到的变量一般有:用户的设备,位置信息,关系网络,异常操作记录和第三方黑名单等。总之反欺诈模型难度很高,有相关经验的小伙伴可以互相交流一下。

43、业务中可能遇到的问题及业务所需要的变量?

解析:

在业务中的模型会遇到什么问题。
\

  • 模型效果不好\
  • 训练集效果好,跨时间测试效果不好\
  • 跨时间测试效果也好,上线之后效果不好\
  • 上线之后效果还好,几周之后分数分布开始下滑\
  • 一两个月内都比较稳定,突然分数分布骤降\
  • 没有明显问题,但模型每个月逐步失效

    然后我们来考虑一下业务所需要的变量是什么。
    \
  • 变量必须对模型有贡献,也就是说必须能对客群加以区分\
  • 逻辑回归要求变量之间线性无关\
  • 逻辑回归评分卡也希望变量呈现单调趋势 (有一部分也是业务原因,但从模型角度来看,单调变量未必一定比有转折的变量好)\
  • 客群在每个变量上的分布稳定,分布迁移无可避免,但不能波动太大

44、对于成千上万维的特征你是怎么做特征筛选的,如何保证其模型的可解释性和稳定性?

解析:

对于高维稀疏特征,逻辑回归的效果要比GBDT好。这是由于逻辑回归的正则项是对特征权重的惩罚,以至于特征的权重不至于过大,而树模型的惩罚项主要是深度和叶子节点数目,而对于高维稀疏特征,10000个样本可能9990个值是0,那只需要一个节点就可以划分9990和剩下的10个样本,可见惩罚项之小,所以GBDT对于高维稀疏特征很容易过拟合。

平时工作中如果用的是逻辑回归评分卡,则可以对稀疏特征进行离散化,离散成值为0或不为0,再用woe进行编码。而如果使用xgboost等集成模型,最好还是不要用高维的稀疏特征。弱特征指的是与目标变量关系不大的特征,或者是区分能力较弱的特征。在大数据风控中弱特征的种类很多,包括社交,通话,位置等信息,而且建模时弱特征会多达数百个。如果是用评分卡建模,弱特征一般会被舍弃掉,因为评分卡的入模特征数不宜过多,一般在15个以下,所以要找寻比较强的特征。而对于xgboost等模型,本身对数据的要求不是很高,并且精度好,一些弱特征进行交叉组合或许能给模型带来不错的效果。

45、如何根据风险因素对用户分层,构建客群差异化的模型?

解析:

做客群差异化模型之前最好做一下用户画像,在风控领域中做用户画像的目的是:

系统性的梳理用户群体,找到异同点对用户进行划分群体,分类的维度很多,可以是静态属性,购买偏好,也可以是褥羊毛党等风险属性。便于更深刻的理解业务,理解用户需求,风控离不开业务,只有深刻理解业务后,才能发现更多潜在的风险。便于后续的数据挖掘,了解坏用户的行为特征,并且根据用户特征做关联规则分析。对不同类型的用户,做针对性的风控规则和风控模型。

平常工作中的做法:

对用户做静态属性的划分,比如按性别,年龄,收入,职业等。例如刚毕业工作的年轻人和收入比较稳定的中年人,他们的借款需求,风险程度就不一样,可以先对用户群体做这样的划分,再对每个群体单独建立模型。根据用户风险属性做差异化模型,例如对手机分期业务做一个套现风险模型,挖掘套现风险属性,目标变量变成是否为套现用户。

46、是做风控的话还需要会一些sql和spark之类的吗

解析:

sql我理解算法岗都是需要滴,spark不做图谱其实还好,一般也不太需要分布式训练。基本都是在大数据环境里面用dataframe或者sql。hadoop和spark原理属于加分项吧。

47、对于评分卡模型,是先特征选择还是先对特征进行分箱处理?对于特征非常多的情况下,分箱的效果也不太好,我就考虑是不是先对特征进行选择再处理呢?

解析:

是这样的,分箱是单特征之间进行的,和特征多少是否筛选没有关系。所以你说的应该是单个特征取值特别多的情况下如何进行分箱是么?分箱的时候首先考虑用什么算法。lr必须做分箱,不然鲁棒性会很差。xgboost做了,稳定性上升,准确度下降,有舍有得。lightgbm绝对不要做,直方图算法加上分箱对性能影响比较大。然后分箱分两种情况,一种是对连续变量做分箱,一种是将字符变量做合并。前期粗分箱通过等频和IV(卡方)进行划分。后期通常根据bivar图来确定。个人建议,类别变量统一做woe处理。省心效果还好。

48、风控流程中不同环节的评分卡是怎么设计的?

解析:

申请评分A卡用在贷前审核阶段,主要的作用是决定用户是否准入和对用户进行风险定价(确定额度和利率),用到的数据是用户以往的信用历史,多头借贷,消费记录等信息,并且做A卡一般需要做拒绝推断。

A卡一般预测用户的首笔借款是否逾期,或者预测一段时间内是否会逾期,设计的方式也多种多样,有风险差异化评分卡,群体差异化评分卡,或者做交叉评分卡等。

行为B卡主要用在借贷周期较长的产品上,例如手机分期。作用一是防控贷中风险,二是对用户的额度做一个调整。用到的数据主要是用户在本平台的登录,浏览,消费行为数据,还有借还款,逾期等借贷表现数据。

催收C卡主要是对逾期用户做一个画像分析,通过深度挖掘用户特征,对逾期用户进行分群,做智能催收策略等。

49、现在做xgb模型还需要分箱编码嘛?

解析:

xgb有些做的,比如城市这个变量取值比较多,用woe指定一下分箱,牺牲一些精度来增强鲁棒性。

50、lr那种模型里变量分箱编码以后都是单调齐次的了,陪跑的xgboost模型也需要分箱

解析:

正常是这样的,我之前做过一家是 线上xgb,线下lr,解释性的问题用线下的lr来说明,所以要在xgb前面做bivar,为了保证xgb和lr的变量完全一致的。


最新升级的 《名企AI面试100题》 ,电子书限时免费送给需要的小伙伴(书有394页好大一本,全送纸质书有点儿hold不住),需要的可在评论区回复: 【100题】,看到后私发你

本书涵盖计算机语⾔基础、算法和⼤数据、机器学习、深度学习、应⽤⽅向 (CV、NLP、推荐 、⾦融风控)等五⼤章节,为了照顾⼤家去官⽹对应的题⽬页⾯参与讨论,故本⼿册各个章节的题⽬顺序和官⽹/APP题库内的题⽬展⽰顺序 保持⼀致。 只有100题,但实际笔试⾯试不⼀定局限于本100题。