- 第一部分 数据分析
- 第二部分 风控策略
- 第三部分 信用评分卡案例
- 12.请问上述代码中参数missing_limit=0.95表示对缺失率超过95%的特征进行删除,那么对于缺失的特征常用的处理方式还有哪些,这些处理方式具有哪些局限性。
- 13.通过上图您发现了哪些问题,请说明解决这些问题的方法都有哪几种。
- 14.以上代码对特征进行了什么样的处理,这种处理的原理是什么。
- 15.上述代码中最后第二行参数penalty=’l1’中l1是什么意思,参数C的变大会对模型训练结果产生什么影响。
- 16.上右图中为什么说AUC越大,模型的区分度越高。如模型上线没多久发现模型的区分度快速下降,可能的原因是什么,如何避免这类情况发生?
- 18.什么是模型的偏差和方差,如何降低模型的高偏差和高方差问题。
- 12.请问上述代码中参数missing_limit=0.95表示对缺失率超过95%的特征进行删除,那么对于缺失的特征常用的处理方式还有哪些,这些处理方式具有哪些局限性。
- 参考文章
年后很多人都开始看一些新的机会,这份面试是去年我一次面试的时候遇到的一份题目,觉得无论是业务还是技术,题量还是质量都比较好,当时答了整整2个小时,和考试一样,贼刺激。后来向面试官要了这份题目,回来认真整理了一下,关于面试相关的文章,之前也整理过一篇楼小轰的《信贷风控模型岗的一些面试经验》,希望能对大家有一些帮助。
第一部分 数据分析
上图为逾期滚动率表,观察点为2018年6月30日,我们取10,000个客户作为研究对象,统计该10,000个客户从观察期到表现期的最大逾期状态的变化情况。请问:
1.您可以通过上表分析出哪些有用的信息?
逾期状态为M0的客户,在未来6个月里,有96%会继续保持正常状态,4%会恶化为M1和M2;
逾期状态为M1的客户,未来有81%会回到正常状态,即回收率为81%,有7%会恶化,13%会保持M1状态;
逾期状态为M2的客户,回收率为23%,有39%会恶化为M3和M4+;
逾期状态为M3的客户,回收率为14.7%,有60.7%会恶化为M4+;
逾期状态为M4+的客户,回收率仅为4%,有80%会继续保持此状态。
2.如何使用上表帮助定义客户的好坏程度?
第一步,历史逾期状态为M4+的客户几乎不会回收。因此坏用户定义为逾期状态为M4+(逾期超过90天)
第二步,以M4+作为资产质量指标,统计Vintage数据表,绘制Vintage曲线。目的是分析账户成熟期。
3.上图为迁徙率表,表示在2019年1月到2019年7月资产从M0-M7的变迁情况。你可以通过上图分析出那些有用的信息?
一、各阶段的平均月度迁徙率以及M0-M4综合迁徙率,可以对比各月份之间迁徙率的变化来分析资产的变化趋势。
二、可以分析出不良资产的恶化迁移路径。如1月末的资产为1007844元,最终有8559元逾期到M6+,Vintage口径下的不良率为0.85%。
三、M6+资产的平均回收率为10.8%,可用于计算净坏账损失率。
4.请通过以上数据计算M0资产迁徙到坏账(M7)的转化率;净坏账损失率以及坏账拨备率
一、M0-M7转化率:
16.1%29.3%42.3%80.1%53.6%80.3%88.0%=0.60%
二、净坏账损失率
0.60%(1-10.79%)=0.54%
三、坏账拨备率
坏账拨备率等于当月应计拨备额 / 总资产金额,而当月应计拨备额 = SUM(净坏账损失率 月末应收账款余额)。因此需要先计算各逾期阶段的净坏账损失率以及余额。
当月应计拨备额为65421元,拨备率为2.49%。
以下是三张表的信息介绍,请根据这三张表的信息回答以下3个问题
表1名称:s;Sid:学生id;Sname:学生姓名
Sid | Sname |
---|---|
1 | 赵四 |
2 | 张三 |
3 | 王二 |
| … |
表2名称:sc;Sid:学生id;Cid:课程id;Score:分数
id | Cid | score |
---|---|---|
1 | 1 | 80 |
1 | 2 | 90 |
2 | 1 | 99 |
3 | 1 | 70 |
3 | 2 | 60 |
| … |
|
表3名称:c;Cid:课程id;Cname:课程名称
Cid | Cname |
---|---|
1 | 语文 |
2 | 数学 |
3 | 英文 |
| … |
5.用一条SQL语句查询每门课程都是大于80分的学生的姓名
找出有科目没有达到80分的姓名,然后过滤:
select distinctname from s where name not in (select distinct name from sc where score<=80)
通过分组过滤方式:
select sc.Sid,s.Sname,sc_min.score from sc
inner join (select Sid,min(score) as score from sc)sc_min
on sc.Sid=sc_min.Sid
inner join s
on sc.Sid=s.Sid
where sc_min.score>80
6.查询“语文”课程比“数学”课程成绩高的学生的信息以及课程分数
SELECT
from (
SELECT a.Sid,a.score‘语文’,b.score as ‘数学’
FROM(SELECT from sc WHERE sc.CId = 1)as a
innerjoin (SELECT * from sc WHERE sc.CId = 2)as b
on a.Sid= b.Sid
WHEREa.score > b.score
)c
left join s a
ON a.Sid = c.Sid
7.查询平均成绩大于65分的学生的id和姓名以及平均成绩
SELECT Sid, Sname, avg_score FROM s
inner JOIN
(SELECT Sid,AVG(score) AS avg_score FROM sc GROUP BY Sid HAVING avg_score>65)scON s.Sid = sc.Sid
第二部分 风控策略
8.最近模型团队新开发违约模型,为了验证新模型效果,将人群随机分配进行AB测试,实验组A使用新模型,对照组B使用旧模型。观察了一段时间的结果后,得到如下观测结果:实验组A样本量10000人,逾期量300人;对照组B样本量10000人,逾期量400人。请从假设检验的统计学方法说明在降低逾期率上新模型效果是否优于旧模型?
上述问题属于两个总体比例相等的假设检验。
第一步,构建原假设和备择假设。
由于是检验新模型效果是否优于旧模型,所以是单边检验。
第二步,构建检验统计量。
计算得到Z值等于:
第三步,拒绝域
查表,或者通过Excel NORMSDIST函数算可得P值等于0.00006
第四步,结论
设定α=0.05,P值小于α。说明落入拒绝域,即有充分的理由拒绝原假设,接受备择假设。所以新模型效果优于旧模型。
关于两个总体之间假设检验内容可以参考贾俊平《统计学》第八章假设检验,或者参看知乎文章https://zhuanlan.zhihu.com/p/144924899。以下为本人以前的一些笔记:
9.如何辨识业务中的信用风险和欺诈风险,常用的反欺诈策略都有哪些。
信用风险表现为逾期天数较短且通过催收可以回收,而欺诈风险则表现为首期开始则逾期,且催收多为失联,资产无法回收,最终变为坏账。
常见的反欺诈策略,主要通过交叉检验和集中申请来识别。可以从集中性,异常性,稳定性,结合各个维度(设备,位置,行为等)构造各类反欺诈策略。
集中性:
近15天申请人手机号被其他申请人作为亲属联系的次数>X
近24小时同一IP地址申请订单数>X
异常性:异常性指的是该客户和正常客户的区分性。例如设备是伪造过的设备,ip为代理ip,gps是伪造的地址位置,客户在一分钟之内操作完所有流程。
稳定性:稳定性指的是客户与自身经常发生的行为对比。例如客户本次申请贷款的位置在广东,但是客户之前从来没有买东西到广东。
线下防范渠道欺诈,线上防范中介欺诈。
10.在引入外部数据源的时候,有哪些关键点需要考虑,为什么?
1、首先需要了解外部数据源的产品特征、类型,一般数据源类型分为决策类和排序类。决策类有黑名单类(多头、逾期、黑产、失信、罪犯等),验证类(学历、社保公积金、运营商实名与在网时长、地址信息、收入信息等),刻画类(关注类、消费画像、第三方规则),排序类有评分类(芝麻信用分、芝麻欺诈分等)。根据不同的目的引入合适的数据源。
2、提供线下测试样本。测试样本需要有适当的好坏比例,加入真实定性的客户数据去验真,如果需要回溯测试的话则需要回溯到申请日期。
3、测试方向考察。名单类三方数据源的考察可以从5个指标公式进行:
查得率(Search rate)=查得数/样本量
覆盖率(Cover rate)=查得命中黑名单数/样本中命中黑名单量
误拒率(Error reject rate)=查得命中黑名单数/样本中通过且为Good量
有效差异率(Effective difference rate)=查得命中黑名单数/样本中通过且Bad量
无效差异率(Invalid difference rate)=查得命中黑名单数/样本中其他拒绝量
黑名单类一般用在反欺诈环节,所以主要考虑到查得率和覆盖率,即命中的用户逾期概率比较高。
评分类一般用作策略和模型,应考虑4个方面:
查得率——是否高,是否与其它评分互补
单调性——评分是否对样本单调
准确性——低分段是否坏样本浓度更高
风险增益——相关性分析以及KS增益
对于评分类外部数据,如果评分的排序性好且IV比较高,则考虑入模,如果评分有明显的尾部极端优势,那适合做策略,用来拦截掉极端的坏用户。
4、数据源产品定价以及成本考虑。包年还是按查询条数收费,或者是搭配主要产品附赠免费查询。
5、上线之后数据源监控。
主要包括接口调用异常监测、数据分布异常监测以及风险拦截效果监测。
11.由于疫情原因,公司逾期率出现明显上升,请结合你的工作经验谈谈如何调整风控策略和模型降低逾期水平。
在策略层面,可以适当做一些准入策略收紧,根据疫情影响范围也可做一些差异化策略调整,另外也可增加一些风险提示给到审批;在审批层面,适当调整审批策略以适当降低审批通过率;在机构层面,我们要对机构进件情况做精细化监控,并根据监控指标异常情况做差异化管理,这个是用来预防因疫情导致的冲击过大导致前端不可控。
主要说下差异化策略调整,步骤如下:
1.取近3个月数据,FPD 7+(首逾7天以上)定义为坏;
2.分城市标签、城市类别标签行业标签, 分客户类型标签(私营业主,个体户,授薪)、主要收入来源标签(工资发放,兼职收入,其他等等)了解受疫情影响最严重的业务特征变量;
3.看下已经在使用的三方信息(近期消费记录与以往消费记录对比,近期多头记录,近期还款情况,近期位置变化情况,近期偿债压力指数),间接了解什么类型客户财务状况不稳定;
4.业务特征变量和三方信息结合综合评估客户近期资金情况和未来职业稳定性。
风险提示可从客户借贷倾向,还款能力以及融资能力方面可以结合推导客户资金抗压能力,然后审批过程中进行相应核实。
第三部分 信用评分卡案例
(代码由Python编写,同时使用scorecardpy评分卡包)
原始数据cs-training.csv, 150000行,11个向量,概况如下:
12.请问上述代码中参数missing_limit=0.95表示对缺失率超过95%的特征进行删除,那么对于缺失的特征常用的处理方式还有哪些,这些处理方式具有哪些局限性。
缺失值处理的方法有剔除、填补以及不处理三种方式。
剔除:可以剔除单个特征或者单个样本。一般对缺失率较高的样本或者特征进行剔除操作。
填补:类别型变量可以将缺失值单独填充为一箱,数值型变量可使用中位数、众数、均值以及决策树、随机森林方法进行填补。
1.针对缺失率在5%以下的变量用中位数填充
2.缺失率在5%—15%的变量用随机森林填充,可先对缺失率较低的变量先用中位数填充,在用没有缺失的样本来对变量作随机森林填充
3.缺失率超过15%的变量建议当做一个类别
不处理:不处理缺失值,直接在包含空值的数据上进行数据挖掘
13.通过上图您发现了哪些问题,请说明解决这些问题的方法都有哪几种。
箱线图可以验证变量的分布是否对称,是否存在离群点。上图说明年龄变量中有大量离群点,即需要进行异常值处理。
需要了解异常值出现的原因,根据实际情况决定是否保留异常值。
14.以上代码对特征进行了什么样的处理,这种处理的原理是什么。
对变量进行分箱。分箱就是将连续型的数据离散化,比如年龄这个变量是,可以分箱为0-18,18-30,30-45,45-60。由于评分卡需要模型有很强的业务可解释性,所以需要对变量进行分箱处理。如果使用xgb、lgb等机器学习算法的话,模型会变得不可解释,此时不分箱也是可以的。
分箱的好处主要有这些:
1. 分箱后的特征对异常数据有更强的鲁棒性。比如年龄中有一个异常值为300,分箱之后就可能划到>80这一箱中,而如果直接入模的话会对模型造成很大干扰。
2. 特征离散化之后,每个变量有单独的权重,可以为逻辑回归模型引入了非线性,能够提升模型表达能力,加大拟合。
3. 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。
4. 可以将缺失作为独立的一类带入模型。
5. 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展。
15.上述代码中最后第二行参数penalty=’l1’中l1是什么意思,参数C的变大会对模型训练结果产生什么影响。
逻辑回归的评价函数,由损失函数和正则项组成:
L1是正则项,主要有L1和L2正则两种。
C表示正则化强度的倒数,较小的值指定更强的正则化。C越大,λ越小,对正则项的惩罚力度越小,参数选择的空间会变大。
16.上右图中为什么说AUC越大,模型的区分度越高。如模型上线没多久发现模型的区分度快速下降,可能的原因是什么,如何避免这类情况发生?
AUC越大,模型的区分度越高,可以从AUC以及ROC曲线的原理出发进行解释。这里提供另外一种与KS相关的思路:因为KS=TPR-FPR,所以TPR=FPR+KS。而ROC曲线的横纵坐标为TPR、TPR,因此KS值可以理解为斜率为1的直线与ROC曲线切线与Y轴截距的最大值。
模型上线之后区分度快速下降,可能原因有:
1.线上模型的特征和线下逻辑不一致。
2.特征的稳定性出现问题。需要分析每个特征的PSI值,必要时进行模型重构。
3.模型样本和进件样本分布不一致导致的模型误差。需要进行拒绝推断模拟进件样本的真实分布。
17.上图统计的指标PSI是指什么,如果PSI指超过0.25将带来什么影响,结合你的工作经验分析影响PSI的因素有哪些,如何降低或解决这些负面因素。
PSI全称群体稳定性指标,反映了验证样本在各分数段的分布与建模样本分布的稳定性。在建模中常用来筛选特征变量、评估模型稳定性。
时间推移、政策监管、市场波动等都会影响PSI。,实际评估需要分时间粒度(按月、按样本集)、订单层次(放贷层、申请层)、人群(分群建模)。
实践中,我们一般会先观察PSI,如果PSI显示模型分数不稳定,那么此时再去观察CSI,从特征级分析原因。因此,PSI偏于宏观,CSI偏于微观。PSI指标不稳定时的因素主要包括:
1.申贷客群变化:获客渠道一般决定了客群质量,我们只是从客群的有限特征维度来大致判断是否变化,但这只是有偏判断,因为无法完全获知用户画像。当然,在获客阶段也会做前置风控,预先筛选流量,以及保证客群的稳定。
2.数据源不稳定:先从CSI指标观察入模特征的分数漂移,对于影响较大和偏移较大的变量予以重点关注。再从数据源上确认采集是否可靠,比如数据服务商是否正常提供、接口是否正常工作、网关数据传输过程是否正常等。
3.特征逻辑有误:在模型上线时,特征逻辑可能没有确认清楚,导致上线后出现意想不到的问题。因此,需要将入模特征的逻辑再次予以Review。
4.其他相关原因:模型监控报表是否正确计算?线上依赖于离线T+1产出的数据是否正常调度?特征缺失值处理逻辑?
18.什么是模型的偏差和方差,如何降低模型的高偏差和高方差问题。
模型的误差来源于偏差和方差两方面。偏差是指数据偏离平均值的差,方差是指数据偏离期望值的差,衡量数据波动程度。偏差和方差是解释学习算法泛化性能的一种重要工具。
偏差和方差另一种更通俗的解释,偏差是指所有可能的训练数据集训练出的所有模型的输出的平均值与真实模型的输出值之间的差异。对应于集成学习中的boosting算法,随着模型迭代偏差不断降低。
方差是指是不同的训练数据集训练出的模型输出值之间的差异。对应于集成学习中的bagging算法,通过取各分类器的平均来降低模型的方差。
模型过于简单必然导致偏差过大,体现为欠拟合,需要通过特征工程、减小正则化系数提高模型预测精度;过于复杂必然导致方差过大,体现为过拟合,可以增加样本、减少特征、增加正则化系数来简化模型。
参考文章
冠军/挑战者试验(A/B Test)
https://zhuanlan.zhihu.com/p/144924899
信贷风控中Vintage、滚动率、迁移率的理解
https://zhuanlan.zhihu.com/p/81027037
风控模型—群体稳定性指标(PSI)深入理解应用
https://zhuanlan.zhihu.com/p/79682292
风控模型—特征稳定性指标(CSI)深入理解应用
https://zhuanlan.zhihu.com/p/86559671
疫情期间的风控方案调整策略
https://zhuanlan.zhihu.com/p/149953575